€•Œ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ŒOvfsuid_t i_uid_into_vfsuid (struct mnt_idmap *idmap, const struct inode *inode)”h]”j)�”}”(hŒNvfsuid_t i_uid_into_vfsuid(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Œ4(struct mnt_idmap *idmap, const struct inode *inode)”h]”(hŒdesc_parameter”“”)�”}”(hŒstruct mnt_idmap *idmap”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjDubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjDubh)�”}”(hhh]”jI)�”}”(hŒ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(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Œ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 )�”}”(hŒconst”h]”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.i_uid_into_vfsuid”†”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³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”…”�”}”(hjYh²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›hjVh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjßh²hh³jh´M›ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jqjšjqj›‰jœ‰j�‰uh1jh²hhhìh³Nh´NubjŸ)�”}”(hX **Parameters** ``struct mnt_idmap *idmap`` idmap of the mount the inode was found from ``const struct inode *inode`` inode to map **Return** whe 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¨hjyubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MŸhjuubj¿)�”}”(hhh]”(jÄ)�”}”(hŒH``struct mnt_idmap *idmap`` idmap of the mount the inode was found from ”h]”(jÊ)�”}”(hŒ``struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjšh]”hŒ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”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hË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¾hjuubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hjh]”hŒReturn”…”�”}”(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:14: ./include/linux/fs.h”h´MŸhjuubhÌ)�”}”(hŒuwhe inode's i_uid mapped down according to **idmap**. If the inode's i_uid has no mapping INVALID_VFSUID is returned.”h]”(hŒ-whe inode’s i_uid mapped down 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Œ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Ÿhjuubeh}”(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Œfbool i_uid_needs_update (struct mnt_idmap *idmap, const struct iattr *attr, const struct inode *inode)”h]”j)�”}”(hŒebool i_uid_needs_update(struct mnt_idmap *idmap, const struct iattr *attr, const struct inode *inode)”h]”(hŒdesc_sig_keyword_type”“”)�”}”(hŒbool”h]”hŒbool”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”Œkt”ah"]”h$]”h&]”uh1jehjah²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&]”uh1j1hjah²hh³jvh´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`jauh1jBhjah²hh³jvh´M©ubj=)�”}”(hŒN(struct mnt_idmap *idmap, const struct iattr *attr, const struct inode *inode)”h]”(jC)�”}”(hŒstruct mnt_idmap *idmap”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Œ 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Œ ”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”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 )�”}”(hj¾h]”hŒconst”…”�”}”(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&]”uh1j1hjubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj2h²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Œiattr”h]”hŒiattr”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjMubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jRŒmodname”NŒ classname”Njj )�”}”j ]”jߌc.i_uid_needs_update”†”asbuh1hhjubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnh²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Œattr”h]”hŒattr”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj�ubjC)�”}”(hŒconst struct inode *inode”h]”(j )�”}”(hj¾h]”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.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Œ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjžubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(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<hjah²hh³jvh´M©ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj]h²hh³jvh´M©ubah}”(h]”jXah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jvh´M©hjZh²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”…”�”}”(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&]”uh1jvhjZh²hh³jvh´M©ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jVjšjVj›‰jœ‰j�‰uh1jh²hhhìh³Nh´NubjŸ)�”}”(hX®**Parameters** ``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”…”�”}”(hjbh²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­hjZubj¿)�”}”(hhh]”(jÄ)�”}”(hŒH``struct mnt_idmap *idmap`` idmap of the mount the inode was found from ”h]”(jÊ)�”}”(hŒ``struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjh]”hŒ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ªhjyubjæ)�”}”(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åhjyubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j”h´MªhjvubjÄ)�”}”(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 ”…”�”}”(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«hjvubjÄ)�”}”(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”…”�”}”(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Œthe inode to update”h]”hŒthe inode to update”…”�”}”(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¬hjvubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjZubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj:h]”hŒ Description”…”�”}”(hj<h²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®hjZubhÌ)�”}”(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.”…”�”}”(hjPh²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­hjZubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hjah]”hŒReturn”…”�”}”(hjch²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°hjZubhÌ)�”}”(hŒBtrue if **inode**'s i_uid field needs to be updated, false if not.”h]”(hŒtrue if ”…”�”}”(hjwh²hh³Nh´Nubj©)�”}”(hŒ **inode**”h]”hŒinode”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjwubhŒ3’s i_uid field needs to be updated, false if not.”…”�”}”(hjwh²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±hjZubeh}”(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ŒZvoid i_uid_update (struct mnt_idmap *idmap, const struct iattr *attr, struct inode *inode)”h]”j)�”}”(hŒYvoid i_uid_update(struct mnt_idmap *idmap, const struct iattr *attr, struct inode *inode)”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj´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”…”�”}”(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 mnt_idmap *idmap, const struct iattr *attr, struct inode *inode)”h]”(jC)�”}”(hŒstruct mnt_idmap *idmap”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Œ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(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.i_uid_update”†”asbuh1hhjñ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Œidmap”h]”hŒidmap”…”�”}”(hjNh²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 )�”}”(hj¾h]”hŒconst”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjcubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjcubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjcubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjcubh)�”}”(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”†”asbuh1hhjcubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjcubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjcubjI)�”}”(hŒattr”h]”hŒattr”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjcubeh}”(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”…”�”}”(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.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Œinode”h]”hŒinode”…”�”}”(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³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 ”…”�”}”(hjsh²hh³Nh´Nubj©)�”}”(hŒ **inode**”h]”hŒinode”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjsubhŒ’s i_uid field”…”�”}”(hjsh²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½hjph²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Ÿ)�”}”(hXG**Parameters** ``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ŒH``struct mnt_idmap *idmap`` idmap of the mount the inode was found from ”h]”(jÊ)�”}”(hŒ``struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjÆh]”hŒ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”…”�”}”(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Œthe new attributes of **inode**”h]”(hŒthe new attributes of ”…”�”}”(hjh²hh³Nh´Nubj©)�”}”(hŒ **inode**”h]”hŒinode”…”�”}”(hj h²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Œ,``struct inode *inode`` the inode to update ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hjFh]”hŒstruct inode *inode”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjDubah}”(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À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¨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¡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ŒOvfsgid_t i_gid_into_vfsgid (struct mnt_idmap *idmap, const struct inode *inode)”h]”j)�”}”(hŒNvfsgid_t i_gid_into_vfsgid(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Œ ”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÔh²hh³jüh´MÏubjC)�”}”(hŒi_gid_into_vfsgid”h]”jI)�”}”(hjùh]”hŒi_gid_into_vfsgid”…”�”}”(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Œ4(struct mnt_idmap *idmap, const struct inode *inode)”h]”(jC)�”}”(hŒstruct mnt_idmap *idmap”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Œ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(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.i_gid_into_vfsgid”†”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Œ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 )�”}”(hj¾h]”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.i_gid_into_vfsgid”†”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´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Œ3map an inode's i_gid down according to an idmapping”h]”hŒ5map an inode’s i_gid down according to an idmapping”…”�”}”(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Ïhj3h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÍh²hh³jüh´MÏubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jNjšjNj›‰jœ‰j�‰uh1jh²hhhìh³Nh´NubjŸ)�”}”(hX **Parameters** ``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©)�”}”(hjXh]”hŒ Parameters”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjVubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÓhjRubj¿)�”}”(hhh]”(jÄ)�”}”(hŒH``struct mnt_idmap *idmap`` idmap of the mount the inode was found from ”h]”(jÊ)�”}”(hŒ``struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjwh]”hŒstruct mnt_idmap *idmap”…”�”}”(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Œ+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åhjqubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jŒh´MÐhjnubjÄ)�”}”(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”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÅh´MÑhjÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjªubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÅh´MÑhjnubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjRubhÌ)�”}”(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ÓhjRubhÌ)�”}”(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 ”…”�”}”(hjh²hh³Nh´Nubj©)�”}”(hŒ **idmap**”h]”hŒidmap”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjubhŒC. If the inode’s i_gid has no mapping INVALID_VFSGID is returned.”…”�”}”(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ÓhjRubeh}”(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Œfbool i_gid_needs_update (struct mnt_idmap *idmap, const struct iattr *attr, const struct inode *inode)”h]”j)�”}”(hŒebool i_gid_needs_update(struct mnt_idmap *idmap, const struct iattr *attr, const struct inode *inode)”h]”(jf)�”}”(hjih]”hŒbool”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj>h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÝubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj>h²hh³jOh´MÝubjC)�”}”(hŒi_gid_needs_update”h]”jI)�”}”(hŒi_gid_needs_update”h]”hŒi_gid_needs_update”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj^ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj>h²hh³jOh´MÝubj=)�”}”(hŒN(struct mnt_idmap *idmap, const struct iattr *attr, const struct inode *inode)”h]”(jC)�”}”(hŒstruct mnt_idmap *idmap”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjzubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjzubh)�”}”(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)�”}”jjdsbŒc.i_gid_needs_update”†”asbuh1hhjzubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjzubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjzubjI)�”}”(hŒidmap”h]”hŒidmap”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjzubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjvubjC)�”}”(hŒconst struct iattr *attr”h]”(j )�”}”(hj¾h]”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Œ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”†”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Œattr”h]”hŒattr”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjìubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjvubjC)�”}”(hŒconst struct inode *inode”h]”(j )�”}”(hj¾h]”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Œ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_needs_update”†”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Œinode”h]”hŒinode”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjwubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjvubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj>h²hh³jOh´MÝubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj:h²hh³jOh´MÝubah}”(h]”j5ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jOh´MÝhj7h²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”…”�”}”(hjh²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Ýhjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj7h²hh³jOh´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 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©)�”}”(hj9h]”hŒ Parameters”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj7ubah}”(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ŒH``struct mnt_idmap *idmap`` idmap of the mount the inode was found from ”h]”(jÊ)�”}”(hŒ``struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjXh]”hŒstruct mnt_idmap *idmap”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjVubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÞhjRubjæ)�”}”(hhh]”hÌ)�”}”(hŒ+idmap of the mount the inode was found from”h]”hŒ+idmap of the mount the inode was found from”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jmh´MÞhjnubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjRubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jmh´MÞhjOubjÄ)�”}”(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 ”…”�”}”(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ßhjOubjÄ)�”}”(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”…”�”}”(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àhjOubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj3ubhÌ)�”}”(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³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mâhj3ubhÌ)�”}”(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áhj3ubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hj:h]”hŒReturn”…”�”}”(hj<h²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ähj3ubhÌ)�”}”(hŒBtrue if **inode**'s i_gid field needs to be updated, false if not.”h]”(hŒtrue if ”…”�”}”(hjPh²hh³Nh´Nubj©)�”}”(hŒ **inode**”h]”hŒinode”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjPubhŒ3’s i_gid field needs to be updated, false if not.”…”�”}”(hjPh²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åhj3ubeh}”(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ŒZvoid i_gid_update (struct mnt_idmap *idmap, const struct iattr *attr, struct inode *inode)”h]”j)�”}”(hŒYvoid i_gid_update(struct mnt_idmap *idmap, const struct iattr *attr, struct inode *inode)”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj�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_update”h]”jI)�”}”(hŒ i_gid_update”h]”hŒ i_gid_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ŒH(struct mnt_idmap *idmap, const struct iattr *attr, struct inode *inode)”h]”(jC)�”}”(hŒstruct mnt_idmap *idmap”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Œ 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”†”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Œ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 )�”}”(hj¾h]”hŒconst”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj<ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjMh²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Œ ”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj<ubh)�”}”(hhh]”jI)�”}”(hŒiattr”h]”hŒiattr”…”�”}”(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Œc.i_gid_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Œ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”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”j,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.i_gid_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”…”�”}”(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_gid field”h]”(hŒupdate ”…”�”}”(hjL h²hh³Nh´Nubj©)�”}”(hŒ **inode**”h]”hŒinode”…”�”}”(hjT h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjL ubhŒ’s i_gid field”…”�”}”(hjL 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ñhjI h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj†h²hh³jŸh´Mñubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jv jšjv j›‰jœ‰j�‰uh1jh²hhhìh³Nh´NubjŸ)�”}”(hXG**Parameters** ``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õhjz ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒH``struct mnt_idmap *idmap`` idmap of the mount the inode was found from ”h]”(jÊ)�”}”(hŒ``struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjŸ h]”hŒ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 ”…”�”}”(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– 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”…”�”}”(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– ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjz 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³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Möhjz ubhÌ)�”}”(hŒlSafely update **inode**'s i_gid field translating the vfsgid of any idmapped mount into the filesystem kgid.”h]”(hŒSafely update ”…”�”}”(hjp!h²hh³Nh´Nubj©)�”}”(hŒ **inode**”h]”hŒinode”…”�”}”(hjx!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjp!ubhŒW’s i_gid field translating the vfsgid of any idmapped mount into the filesystem kgid.”…”�”}”(hjp!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õhjz 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ŒCvoid inode_fsuid_set (struct inode *inode, struct mnt_idmap *idmap)”h]”j)�”}”(hŒBvoid inode_fsuid_set(struct inode *inode, struct mnt_idmap *idmap)”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj±!h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj­!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_fsuid_set”h]”jI)�”}”(hŒinode_fsuid_set”h]”hŒinode_fsuid_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Œ.(struct inode *inode, 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_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”…”�”}”(hjG"h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjê!ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjæ!ubjC)�”}”(hŒstruct mnt_idmap *idmap”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Œ 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.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Œidmap”h]”hŒidmap”…”�”}”(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Œ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&]”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 ``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´Mhjý"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³j7#h´Mhj8#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j7#h´Mhj#ubjÄ)�”}”(hŒH``struct mnt_idmap *idmap`` idmap of the mount the inode was found from ”h]”(jÊ)�”}”(hŒ``struct mnt_idmap *idmap``”h]”jÐ)�”}”(hj[#h]”hŒstruct mnt_idmap *idmap”…”�”}”(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´MhjU#ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ+idmap of the mount the inode was found from”h]”hŒ+idmap of the mount the inode was found from”…”�”}”(hjt#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jp#h´Mhjq#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjU#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jp#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_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 ”…”�”}”(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 fsuid 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 Œinode_fsgid_set (C function)”Œc.inode_fsgid_set”hNt”auh1hýhhìh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒCvoid inode_fsgid_set (struct inode *inode, struct mnt_idmap *idmap)”h]”j)�”}”(hŒBvoid inode_fsgid_set(struct inode *inode, struct mnt_idmap *idmap)”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÿ#h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjû#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Œ.(struct inode *inode, 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&]”uh1jhj8$ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjI$h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj8$ubh)�”}”(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)�”}”jj"$sbŒc.inode_fsgid_set”†”asbuh1hhj8$ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjz$h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj8$ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjˆ$h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj8$ubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj•$h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj8$ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj4$ubjC)�”}”(hŒstruct mnt_idmap *idmap”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Œ 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 ]”jv$Œc.inode_fsgid_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Œidmap”h]”hŒidmap”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjª$ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj4$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™jG%jšjG%j›‰jœ‰j�‰uh1jh²hhhìh³Nh´NubjŸ)�”}”(hX'**Parameters** ``struct inode *inode`` inode to initialize ``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©)�”}”(hjQ%h]”hŒ Parameters”…”�”}”(hjS%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjO%ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MhjK%ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ,``struct inode *inode`` inode to initialize ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hjp%h]”hŒstruct inode *inode”…”�”}”(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:14: ./include/linux/fs.h”h´Mhjj%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åhjj%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j…%h´Mhjg%ubjÄ)�”}”(hŒH``struct mnt_idmap *idmap`` idmap of the mount the inode was found from ”h]”(jÊ)�”}”(hŒ``struct mnt_idmap *idmap``”h]”jÐ)�”}”(hj©%h]”hŒ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´Mhjg%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjK%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´MhjK%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´MhjK%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ŒKbool fsuidgid_has_mapping (struct super_block *sb, struct mnt_idmap *idmap)”h]”j)�”}”(hŒJbool fsuidgid_has_mapping(struct super_block *sb, struct mnt_idmap *idmap)”h]”(jf)�”}”(hjih]”hŒbool”…”�”}”(hjM&h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjI&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&]”uh1j1hjI&h²hh³jZ&h´MubjC)�”}”(hŒfsuidgid_has_mapping”h]”jI)�”}”(hŒfsuidgid_has_mapping”h]”hŒfsuidgid_has_mapping”…”�”}”(hjm&h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhji&ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjI&h²hh³jZ&h´Mubj=)�”}”(hŒ1(struct super_block *sb, struct mnt_idmap *idmap)”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)�”}”jjo&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`jauh1jBhj�&ubjC)�”}”(hŒstruct mnt_idmap *idmap”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Œ 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Œ ”…”�”}”(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Œidmap”h]”hŒidmap”…”�”}”(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<hjI&h²hh³jZ&h´Mubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjE&h²hh³jZ&h´Mubah}”(h]”j@&ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jZ&h´MhjB&h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ,check whether caller's fsuid/fsgid is mapped”h]”hŒ.check whether caller’s fsuid/fsgid is mapped”…”�”}”(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´Mhjy'h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjB&h²hh³jZ&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 super_block *sb`` the superblock we want a mapping in ``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Œ8``struct mnt_idmap *idmap`` idmap of the relevant mount ”h]”(jÊ)�”}”(hŒ``struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjö'h]”hŒ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©)�”}”(hj1(h]”hŒ Description”…”�”}”(hj3(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 ”…”�”}”(hjG(h²hh³Nh´Nubj©)�”}”(hŒ**sb**”h]”hŒsb”…”�”}”(hjO(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjG(ubhŒ\. If the caller is on an idmapped mount map the caller’s fsuid and fsgid according to the ”…”�”}”(hjG(h²hh³Nh´Nubj©)�”}”(hŒ **idmap**”h]”hŒidmap”…”�”}”(hja(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjG(ubhŒ first.”…”�”}”(hjG(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©)�”}”(hj|(h]”hŒReturn”…”�”}”(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&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”…”�”}”(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.inode_set_ctime”†”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”…”�”}”(hj…)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]”(jf)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjæ)h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjâ)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²hub•¨jw)�”}”(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™jD*jšjD*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©)�”}”(hjN*h]”hŒ Parameters”…”�”}”(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§hjH*ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ8``struct inode *inode`` inode in which to set the ctime ”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³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M¤hjg*ubjæ)�”}”(hhh]”hÌ)�”}”(hŒinode in which to set the ctime”h]”hŒinode in which 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åhjg*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j‚*h´M¤hjd*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¥hjd*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¦hjd*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¨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¨hjH*ubhÌ)�”}”(hŒ3Set the ctime in **inode** to { **sec**, **nsec** }”h]”(hŒSet the ctime in ”…”�”}”(hj0+h²hh³Nh´Nubj©)�”}”(hŒ **inode**”h]”hŒinode”…”�”}”(hj8+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj0+ubhŒ to { ”…”�”}”(hj0+h²hh³Nh´Nubj©)�”}”(hŒ**sec**”h]”hŒsec”…”�”}”(hjJ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj0+ubhŒ, ”…”�”}”(hj0+h²hh³Nh´Nubj©)�”}”(hŒ**nsec**”h]”hŒnsec”…”�”}”(hj\+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj0+ubhŒ }”…”�”}”(hj0+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§hjH*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]”(jf)�”}”(hjih]”hŒbool”…”�”}”(hj•+h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj‘+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 )�”}”(hj¾h]”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Œ*”…”�”}”(hj8,h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjÍ+ubjI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjE,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”…”�”}”(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³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 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]”(jf)�”}”(hjih]”hŒbool”…”�”}”(hj0-h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj,-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_not_started”h]”jI)�”}”(hŒfile_write_not_started”h]”hŒfile_write_not_started”…”�”}”(hjP-h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjL-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 )�”}”(hj¾h]”hŒconst”…”�”}”(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-ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj‡-h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjh-ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”-h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjh-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)�”}”jjR-sbŒc.file_write_not_started”†”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Œfile”h]”hŒfile”…”�”}”(hjà-h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjh-ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjd-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 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³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 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Ð)�”}”(hjK.h]”hŒconst struct file *file”…”�”}”(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Œthe file we write to”h]”hŒthe file we write 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.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 Œrenamedata (C struct)”Œ c.renamedata”hNt”auh1hýhhìh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ renamedata”h]”j)�”}”(hŒstruct renamedata”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Œ 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”…”�”}”(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“Œstruct”eh"]”h$]”h&]”j˜j“j™j%/jšj%/j›‰jœ‰j�‰uh1jh²hhhìh³Nh´NubjŸ)�”}”(hXN**Definition**:: struct renamedata { 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”…”�”}”(hj1/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 renamedata { 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 { 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; };”…”�”}”hjJ/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¨hjY/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ŒC``mnt_idmap`` idmap of the mount in which the rename is happening. ”h]”(jÊ)�”}”(hŒ ``mnt_idmap``”h]”jÐ)�”}”(hjz/h]”hŒ mnt_idmap”…”�”}”(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Œ4idmap of the mount in which the rename is happening.”h]”hŒ4idmap of the mount in which the rename is happening.”…”�”}”(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öhjq/ubjÄ)�”}”(hŒ ``old_parent`` parent of source ”h]”(jÊ)�”}”(hŒ``old_parent``”h]”jÐ)�”}”(hj³/h]”hŒ old_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:14: ./include/linux/fs.h”h´M÷hj­/ubjæ)�”}”(hhh]”hÌ)�”}”(hŒparent of source”h]”hŒparent of source”…”�”}”(hjÌ/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hË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Œ``old_dentry`` source ”h]”(jÊ)�”}”(hŒ``old_dentry``”h]”jÐ)�”}”(hjì/h]”hŒ old_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:14: ./include/linux/fs.h”h´Møhjæ/ubjæ)�”}”(hhh]”hÌ)�”}”(hŒsource”h]”hŒsource”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j0h´Møhj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjæ/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j0h´Møhjq/ubjÄ)�”}”(hŒ%``new_parent`` parent of destination ”h]”(jÊ)�”}”(hŒ``new_parent``”h]”jÐ)�”}”(hj%0h]”hŒ new_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ùhj0ubjæ)�”}”(hhh]”hÌ)�”}”(hŒparent of destination”h]”hŒparent of destination”…”�”}”(hj>0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j:0h´Mùhj;0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j:0h´Mùhjq/ubjÄ)�”}”(hŒ``new_dentry`` destination ”h]”(jÊ)�”}”(hŒ``new_dentry``”h]”jÐ)�”}”(hj^0h]”hŒ new_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úhjX0ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ destination”h]”hŒ destination”…”�”}”(hjw0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³js0h´Múhjt0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjX0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³js0h´Múhjq/ubjÄ)�”}”(hŒ@``delegated_inode`` returns an inode needing a delegation break ”h]”(jÊ)�”}”(hŒ``delegated_inode``”h]”jÐ)�”}”(hj—0h]”hŒdelegated_inode”…”�”}”(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Œ+returns an inode needing a delegation break”h]”hŒ+returns an inode needing a delegation break”…”�”}”(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ûhjq/ubjÄ)�”}”(hŒ``flags`` rename flags”h]”(jÊ)�”}”(hŒ ``flags``”h]”jÐ)�”}”(hjÐ0h]”hŒflags”…”�”}”(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Œ rename flags”h]”hŒ rename flags”…”�”}”(hjé0h²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æ0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÊ0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jå0h´Mûhjq/ubeh}”(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 Œ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]”(jf)�”}”(hjih]”hŒbool”…”�”}”(hj*1h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj&1h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj81h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj&1h²hh³j71h´M ubjC)�”}”(hŒ is_mgtime”h]”jI)�”}”(hŒ is_mgtime”h]”hŒ is_mgtime”…”�”}”(hjJ1h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjF1ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj&1h²hh³j71h´M ubj=)�”}”(hŒ(const struct inode *inode)”h]”jC)�”}”(hŒconst struct inode *inode”h]”(j )�”}”(hj¾h]”hŒconst”…”�”}”(hjf1h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjb1ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjs1h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjb1ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj�1h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjb1ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽ1h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjb1ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(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)�”}”jjL1sbŒ c.is_mgtime”†”asbuh1hhjb1ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿1h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjb1ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjÍ1h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjb1ubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjÚ1h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjb1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj^1ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj&1h²hh³j71h´M ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj"1h²hh³j71h´M ubah}”(h]”j1ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j71h´M hj1h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ)is this inode using multigrain timestamps”h]”hŒ)is this inode using multigrain timestamps”…”�”}”(hj2h²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 hj2h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj1h²hh³j71h´M ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j2jšj2j›‰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©)�”}”(hj&2h]”hŒ Parameters”…”�”}”(hj(2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj$2ubah}”(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 2ubj¿)�”}”(hhh]”jÄ)�”}”(hŒF``const struct inode *inode`` inode to test for multigrain timestamps ”h]”(jÊ)�”}”(hŒ``const struct inode *inode``”h]”jÐ)�”}”(hjE2h]”hŒconst struct inode *inode”…”�”}”(hjG2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjC2ubah}”(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?2ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ'inode to test for multigrain timestamps”h]”hŒ'inode to test for multigrain timestamps”…”�”}”(hj^2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jZ2h´M hj[2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj?2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jZ2h´M hj<2ubah}”(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³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M hj 2ubhÌ)�”}”(hŒEReturn true if the inode uses multigrain timestamps, false otherwise.”h]”hŒEReturn true if the inode uses multigrain timestamps, false otherwise.”…”�”}”(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 2ubeh}”(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]”(jf)�”}”(hjih]”hŒbool”…”�”}”(hjÅ2h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÁ2h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mz ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓ2h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÁ2h²hh³jÒ2h´Mz ubjC)�”}”(hŒiput_if_not_last”h]”jI)�”}”(hŒiput_if_not_last”h]”hŒiput_if_not_last”…”�”}”(hjå2h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjá2ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjÁ2h²hh³jÒ2h´Mz ubj=)�”}”(hŒ(struct inode *inode)”h]”jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjý2ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjý2ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj3ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j!3Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjç2sbŒc.iput_if_not_last”†”asbuh1hhjý2ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?3h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjý2ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjM3h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjý2ubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjZ3h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjý2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjù2ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjÁ2h²hh³jÒ2h´Mz ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj½2h²hh³jÒ2h´Mz ubah}”(h]”j¸2ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÒ2h´Mz hjº2h²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”…”�”}”(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´Mz hj�3h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjº2h²hh³jÒ2h´Mz ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jœ3jšjœ3j›‰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¦3h]”hŒ Parameters”…”�”}”(hj¨3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¤3ubah}”(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 3ubj¿)�”}”(hhh]”jÄ)�”}”(hŒ%``struct inode *inode`` inode to put ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hjÅ3h]”hŒstruct inode *inode”…”�”}”(hjÇ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÃ3ubah}”(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¿3ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ inode to put”h]”hŒ inode to put”…”�”}”(hjÞ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÚ3h´M{ hjÛ3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¿3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÚ3h´M{ hj¼3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj 3ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj4h]”hŒ Description”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjþ3ubah}”(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 3ubhÌ)�”}”(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.”…”�”}”(hj4h²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 3ubeh}”(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]”(jf)�”}”(hjih]”hŒbool”…”�”}”(hjE4h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjA4h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M¬ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjS4h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjA4h²hh³jR4h´M¬ ubjC)�”}”(hŒis_idmapped_mnt”h]”jI)�”}”(hŒis_idmapped_mnt”h]”hŒis_idmapped_mnt”…”�”}”(hje4h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhja4ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjA4h²hh³jR4h´M¬ ubj=)�”}”(hŒ(const struct vfsmount *mnt)”h]”jC)�”}”(hŒconst struct vfsmount *mnt”h]”(j )�”}”(hj¾h]”hŒconst”…”�”}”(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}4ubj )�”}”(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º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)�”}”jjg4sbŒc.is_idmapped_mnt”†”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Œmnt”h]”hŒmnt”…”�”}”(hjõ4h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj}4ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjy4ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjA4h²hh³jR4h´M¬ ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj=4h²hh³jR4h´M¬ ubah}”(h]”j84ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jR4h´M¬ hj:4h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒcheck whether a mount is mapped”h]”hŒcheck whether a mount is mapped”…”�”}”(hj5h²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¬ hj5h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj:4h²hh³jR4h´M¬ ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j75jšj75j›‰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©)�”}”(hjA5h]”hŒ Parameters”…”�”}”(hjC5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj?5ubah}”(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;5ubj¿)�”}”(hhh]”jÄ)�”}”(hŒ2``const struct vfsmount *mnt`` the mount to check ”h]”(jÊ)�”}”(hŒ``const struct vfsmount *mnt``”h]”jÐ)�”}”(hj`5h]”hŒconst struct vfsmount *mnt”…”�”}”(hjb5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj^5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M­ hjZ5ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe mount to check”h]”hŒthe mount to check”…”�”}”(hjy5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ju5h´M­ hjv5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjZ5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³ju5h´M­ hjW5ubah}”(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³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M¯ hj;5ubhÌ)�”}”(hŒNIf **mnt** has an non **nop_mnt_idmap** attached to it then **mnt** is mapped.”h]”(hŒIf ”…”�”}”(hj±5h²hh³Nh´Nubj©)�”}”(hŒ**mnt**”h]”hŒmnt”…”�”}”(hj¹5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj±5ubhŒ has an non ”…”�”}”(hj±5h²hh³Nh´Nubj©)�”}”(hŒ**nop_mnt_idmap**”h]”hŒ nop_mnt_idmap”…”�”}”(hjË5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj±5ubhŒ attached to it then ”…”�”}”(hj±5h²hh³Nh´Nubj©)�”}”(hŒ**mnt**”h]”hŒmnt”…”�”}”(hjÝ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj±5ubhŒ is mapped.”…”�”}”(hj±5h²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;5ubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hjø5h]”hŒReturn”…”�”}”(hjú5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjö5ubah}”(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;5ubhÌ)�”}”(hŒ&true if mount is mapped, false if not.”h]”hŒ&true if mount is mapped, false if not.”…”�”}”(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± hj;5ubeh}”(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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj=6h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj96h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mº ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjL6h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj96h²hh³jK6h´Mº ubjC)�”}”(hŒfile_start_write”h]”jI)�”}”(hŒfile_start_write”h]”hŒfile_start_write”…”�”}”(hj^6h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjZ6ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj96h²hh³jK6h´Mº ubj=)�”}”(hŒ(struct file *file)”h]”jC)�”}”(hŒstruct file *file”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjz6h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjv6ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡6h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjv6ubh)�”}”(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)�”}”jj`6sbŒc.file_start_write”†”asbuh1hhjv6ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸6h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjv6ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjÆ6h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjv6ubjI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjÓ6h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjv6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjr6ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj96h²hh³jK6h´Mº ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj56h²hh³jK6h´Mº ubah}”(h]”j06ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jK6h´Mº hj26h²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ý6h²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ú6h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj26h²hh³jK6h´Mº ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j7jšj7j›‰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©)�”}”(hj7h]”hŒ Parameters”…”�”}”(hj!7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M¾ hj7ubj¿)�”}”(hhh]”jÄ)�”}”(hŒ3``struct file *file`` the file we want to write to ”h]”(jÊ)�”}”(hŒ``struct file *file``”h]”jÐ)�”}”(hj>7h]”hŒstruct file *file”…”�”}”(hj@7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj<7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M» hj87ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe file we want to write to”h]”hŒthe file we want to write to”…”�”}”(hjW7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jS7h´M» hjT7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj87ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jS7h´M» hj57ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj7ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjy7h]”hŒ Description”…”�”}”(hj{7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjw7ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M½ hj7ubhÌ)�”}”(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�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¼ hj7ubeh}”(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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¾7h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjº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_end_write”h]”jI)�”}”(hŒfile_end_write”h]”hŒfile_end_write”…”�”}”(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´MÏ ubj=)�”}”(hŒ(struct file *file)”h]”jC)�”}”(hŒstruct file *file”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjû7h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj÷7ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj÷7ubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j8Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjá7sbŒc.file_end_write”†”asbuh1hhj÷7ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj98h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj÷7ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjG8h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj÷7ubjI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjT8h²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´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Œ3drop write access to a superblock of a regular file”h]”hŒ3drop write access to a superblock of a regular file”…”�”}”(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{8h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj³7h²hh³jÌ7h´MÏ ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j–8jšj–8j›‰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 8h]”hŒ Parameters”…”�”}”(hj¢8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjž8ubah}”(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Œ+``struct file *file`` the file we wrote to ”h]”(jÊ)�”}”(hŒ``struct file *file``”h]”jÐ)�”}”(hj¿8h]”hŒstruct file *file”…”�”}”(hjÁ8h²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 wrote to”h]”hŒthe file we wrote to”…”�”}”(hjØ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÔ8h´MÐ hjÕ8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¹8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÔ8h´MÐ hj¶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³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÒ hjš8ubhÌ)�”}”(hŒ4Should be matched with a call to file_start_write().”h]”hŒ4Should be matched with a call to file_start_write().”…”�”}”(hj9h²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 Œ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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj?9h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj;9h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´MÜ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjN9h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj;9h²hh³jM9h´MÜ ubjC)�”}”(hŒkiocb_start_write”h]”jI)�”}”(hŒkiocb_start_write”h]”hŒkiocb_start_write”…”�”}”(hj`9h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj\9ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj;9h²hh³jM9h´MÜ ubj=)�”}”(hŒ(struct kiocb *iocb)”h]”jC)�”}”(hŒstruct kiocb *iocb”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj|9h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjx9ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰9h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjx9ubh)�”}”(hhh]”jI)�”}”(hŒkiocb”h]”hŒkiocb”…”�”}”(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)�”}”jjb9sbŒc.kiocb_start_write”†”asbuh1hhjx9ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjº9h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjx9ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjÈ9h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjx9ubjI)�”}”(hŒiocb”h]”hŒiocb”…”�”}”(hjÕ9h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjx9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjt9ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj;9h²hh³jM9h´MÜ ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj79h²hh³jM9h´MÜ ubah}”(h]”j29ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jM9h´MÜ hj49h²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ÿ9h²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ü9h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj49h²hh³jM9h´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Ð)�”}”(hj@:h]”hŒstruct kiocb *iocb”…”�”}”(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Ý 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”…”�”}”(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³Œ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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÀ:h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj¼: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Œ*”…”�”}”(hjI;h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjù:ubjI)�”}”(hŒiocb”h]”hŒiocb”…”�”}”(hjV;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”…”�”}”(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 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]”(jf)�”}”(hjih]”hŒbool”…”�”}”(hjA<h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj=<h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mt ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjO<h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj=<h²hh³jN<h´Mt ubjC)�”}”(hŒname_is_dot_dotdot”h]”jI)�”}”(hŒname_is_dot_dotdot”h]”hŒname_is_dot_dotdot”…”�”}”(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´Mt ubj=)�”}”(hŒ(const char *name, size_t len)”h]”(jC)�”}”(hŒconst char *name”h]”(j )�”}”(hj¾h]”hŒconst”…”�”}”(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<ubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj˜<h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjy<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Œname”h]”hŒname”…”�”}”(hjÁ<h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjy<ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhju<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)�”}”jjc<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`jauh1jBhju<ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj=<h²hh³jN<h´Mt ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj9<h²hh³jN<h´Mt ubah}”(h]”j4<ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jN<h´Mt hj6<h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ,returns true only if **name** is "." or ".."”h]”(hŒreturns true only if ”…”�”}”(hj5=h²hh³Nh´Nubj©)�”}”(hŒ**name**”h]”hŒname”…”�”}”(hj==h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj5=ubhŒ is “.â€� or “..â€�”…”�”}”(hj5=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´Mt hj2=h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj6<h²hh³jN<h´Mt ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j_=jšj_=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©)�”}”(hji=h]”hŒ Parameters”…”�”}”(hjk=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjg=ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mx hjc=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Ï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´Mu hj‚=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´Mu hjž=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj‚=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j�=h´Mu hj=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´Mw 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´Mv 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¾hjc=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]”(jf)�”}”(hjih]”hŒbool”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj>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&]”uh1jHhj7>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 )�”}”(hj¾h]”hŒconst”…”�”}”(hjW>h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjS>ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjd>h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjS>ubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjr>h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjS>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Œname”h]”hŒname”…”�”}”(hj›>h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjS>ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjO>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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj_?h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj[?h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”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Œinode_dio_begin”h]”jI)�”}”(hŒinode_dio_begin”h]”hŒinode_dio_begin”…”�”}”(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 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_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<hj[?h²hh³jm?h´M` ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjW?h²hh³jm?h´M` ubah}”(h]”jR?ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jm?h´M` hjT?h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ%signal start of a direct I/O requests”h]”hŒ%signal start of a direct I/O requests”…”�”}”(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&]”uh1jvhjT?h²hh³jm?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 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©)�”}”(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´Md hj;@ubj¿)�”}”(hhh]”jÄ)�”}”(hŒ8``struct inode *inode`` inode the direct I/O happens on ”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´Ma hjZ@ubjæ)�”}”(hhh]”hÌ)�”}”(hŒinode the direct I/O happens on”h]”hŒinode the direct I/O happens on”…”�”}”(hjy@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ju@h´Ma hjv@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjZ@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³ju@h´Ma hjW@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´Mc hj;@ubhÌ)�”}”(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±@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´Mb 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_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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjà@h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÜ@h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Ml ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjï@h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÜ@h²hh³jî@h´Ml ubjC)�”}”(hŒ inode_dio_end”h]”jI)�”}”(hŒ inode_dio_end”h]”hŒ inode_dio_end”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjý@ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjÜ@h²hh³jî@h´Ml ubj=)�”}”(hŒ(struct inode *inode)”h]”jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjAubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*Ah²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjAubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj;Ah²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj8Aubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j=AŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjAsbŒc.inode_dio_end”†”asbuh1hhjAubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[Ah²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjAubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjiAh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjAubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjvAh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjAubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjAubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjÜ@h²hh³jî@h´Ml ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjØ@h²hh³jî@h´Ml ubah}”(h]”jÓ@ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jî@h´Ml hjÕ@h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ&signal finish of a direct I/O requests”h]”hŒ&signal finish of a direct I/O requests”…”�”}”(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´Ml hj�Ah²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÕ@h²hh³jî@h´Ml 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©)�”}”(hjÂAh]”hŒ Parameters”…”�”}”(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´Mp hj¼Aubj¿)�”}”(hhh]”jÄ)�”}”(hŒ8``struct inode *inode`` inode the direct I/O happens on ”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ÏhjßAubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mm hjÛAubjæ)�”}”(hhh]”hÌ)�”}”(hŒinode the direct I/O happens on”h]”hŒinode the direct I/O happens on”…”�”}”(hjúAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jöAh´Mm hj÷Aubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÛAubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jöAh´Mm hjØAubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj¼AubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjBh]”hŒ Description”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjBubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´Mo 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.”…”�”}”(hj2Bh²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´Mn hj¼Aubeh}”(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]”(jf)�”}”(hjih]”hŒbool”…”�”}”(hjaBh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj]Bh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoBh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj]Bh²hh³jnBh´M ubjC)�”}”(hŒgeneric_ci_validate_strict_name”h]”jI)�”}”(hŒgeneric_ci_validate_strict_name”h]”hŒgeneric_ci_validate_strict_name”…”�”}”(hj�Bh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj}Bubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj]Bh²hh³jnBh´M ubj=)�”}”(hŒ,(struct inode *dir, const struct qstr *name)”h]”(jC)�”}”(hŒstruct inode *dir”h]”(j )�”}”(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Œ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”j½BŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjƒBsbŒ!c.generic_ci_validate_strict_name”†”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Œdir”h]”hŒdir”…”�”}”(hjöBh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj™Bubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj•BubjC)�”}”(hŒconst struct qstr *name”h]”(j )�”}”(hj¾h]”hŒconst”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj Cubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCh²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Œ ”…”�”}”(hj7Ch²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj Cubh)�”}”(hhh]”jI)�”}”(hŒqstr”h]”hŒqstr”…”�”}”(hjHCh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjECubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jJCŒmodname”NŒ classname”Njj )�”}”j ]”j×BŒ!c.generic_ci_validate_strict_name”†”asbuh1hhj Cubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfCh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj Cubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjtCh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj CubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hj�Ch²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj Cubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj•Bubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj]Bh²hh³jnBh´M ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjYBh²hh³jnBh´M ubah}”(h]”jTBah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jnBh´M hjVBh²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«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´M hj¨Ch²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjVBh²hh³jnBh´M ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÃCjšjÃCj›‰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ÍCh]”hŒ Parameters”…”�”}”(hjÏCh²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´M# hjÇCubj¿)�”}”(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ìCh]”hŒstruct inode *dir”…”�”}”(hjîCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjêCubah}”(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æCubjæ)�”}”(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”…”�”}”(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Œ1``const struct qstr *name`` name of the new file ”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³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M* hjDubjæ)�”}”(hhh]”hÌ)�”}”(hŒname of the new file”h]”hŒname of the new file”…”�”}”(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Œ**Description**”h]”j©)�”}”(hj`Dh]”hŒ Description”…”�”}”(hjbDh²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ÇCubhÌ)�”}”(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.”…”�”}”(hjvDh²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ÇCubhÌ)�”}”(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³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:14: ./include/linux/fs.h”h´M' hjÇCubhŒ 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¨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¤Dubah}”(h]”h ]”h"]”h$]”h&]”uh1j¢DhjŸDubj£D)�”}”(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Á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½Dubah}”(h]”h ]”h"]”h$]”h&]”uh1j¢DhjŸDubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”j–uh1j�Dh³j¶Dh´M, hjÇCubeh}”(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ïDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjìDh²hh³hÊh´Kubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œd_drop (C function)”Œc.d_drop”hNt”auh1hýhjìDh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ#void d_drop (struct dentry *dentry)”h]”j)�”}”(hŒ"void d_drop(struct dentry *dentry)”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjEh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MIubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%Eh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjEh²hh³j$Eh´MIubjC)�”}”(hŒd_drop”h]”jI)�”}”(hŒd_drop”h]”hŒd_drop”…”�”}”(hj7Eh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj3Eubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjEh²hh³j$Eh´MIubj=)�”}”(hŒ(struct dentry *dentry)”h]”jC)�”}”(hŒstruct dentry *dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjSEh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjOEubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`Eh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjOEubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjqEh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjnEubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jsEŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj9EsbŒc.d_drop”†”asbuh1hhjOEubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘Eh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjOEubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjŸEh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjOEubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj¬Eh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjOEubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjKEubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjEh²hh³j$Eh´MIubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjEh²hh³j$Eh´MIubah}”(h]”j Eah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j$Eh´MIhj Eh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ drop a dentry”h]”hŒ drop a dentry”…”�”}”(hjÖEh²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´MIhjÓEh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj Eh²hh³j$Eh´MIubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jîEjšjîEj›‰jœ‰j�‰uh1jh²hhjìDh³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øEh]”hŒ Parameters”…”�”}”(hjúEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjöEubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MMhjòEubj¿)�”}”(hhh]”jÄ)�”}”(hŒ)``struct dentry *dentry`` dentry to drop ”h]”(jÊ)�”}”(hŒ``struct dentry *dentry``”h]”jÐ)�”}”(hjFh]”hŒstruct dentry *dentry”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjFubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MJhjFubjæ)�”}”(hhh]”hÌ)�”}”(hŒdentry to drop”h]”hŒdentry to drop”…”�”}”(hj0Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j,Fh´MJhj-Fubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjFubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j,Fh´MJhjFubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjòEubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjRFh]”hŒ Description”…”�”}”(hjTFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjPFubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MLhjòEubhÌ)�”}”(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.”…”�”}”(hjhFh²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´MKhjòEubhÌ)�”}”(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).”…”�”}”(hjwFh²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´MQhjòEubhÌ)�”}”(hŒ __d_drop requires dentry->d_lock”h]”hŒ __d_drop requires dentry->d_lock”…”�”}”(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´MThjòEubhÌ)�”}”(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•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´MVhjòEubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjìDh²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ìDh²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]”(jf)�”}”(hjih]”hŒbool”…”�”}”(hjÄFh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÀFh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M!ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒFh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÀFh²hh³jÑFh´M!ubjC)�”}”(hŒ__move_to_shrink_list”h]”jI)�”}”(hŒ__move_to_shrink_list”h]”hŒ__move_to_shrink_list”…”�”}”(hjäFh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjàFubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjÀFh²hh³jÑFh´M!ubj=)�”}”(hŒ/(struct dentry *dentry, struct list_head *list)”h]”(jC)�”}”(hŒstruct dentry *dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjüFubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Gh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjüFubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjGh²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 ]”j)�”}”jjæFsbŒc.__move_to_shrink_list”†”asbuh1hhjüFubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>Gh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjüFubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjLGh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjüFubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjYGh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjüFubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjøFubjC)�”}”(hŒstruct list_head *list”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjrGh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjnGubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjnGubh)�”}”(hhh]”jI)�”}”(hŒ list_head”h]”hŒ list_head”…”�”}”(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:GŒc.__move_to_shrink_list”†”asbuh1hhjnGubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®Gh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjnGubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj¼Gh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjnGubjI)�”}”(hŒlist”h]”hŒlist”…”�”}”(hjÉGh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjnGubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjøFubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjÀFh²hh³jÑFh´M!ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj¼Fh²hh³jÑFh´M!ubah}”(h]”j·Fah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÑFh´M!hj¹Fh²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ó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´M!hjðGh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj¹Fh²hh³jÑFh´M!ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j Hjšj Hj›‰jœ‰j�‰uh1jh²hhjìDh³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©)�”}”(hjHh]”hŒ Parameters”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjHubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M%hjHubj¿)�”}”(hhh]”(jÄ)�”}”(hŒA``struct dentry *dentry`` dentry to try putting into shrink list ”h]”(jÊ)�”}”(hŒ``struct dentry *dentry``”h]”jÐ)�”}”(hj4Hh]”hŒstruct dentry *dentry”…”�”}”(hj6Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj2Hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M"hj.Hubjæ)�”}”(hhh]”hÌ)�”}”(hŒ&dentry to try putting into shrink list”h]”hŒ&dentry to try putting into shrink list”…”�”}”(hjMHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jIHh´M"hjJHubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj.Hubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jIHh´M"hj+HubjÄ)�”}”(hŒ<``struct list_head *list`` the list to put **dentry** into. ”h]”(jÊ)�”}”(hŒ``struct list_head *list``”h]”jÐ)�”}”(hjmHh]”hŒstruct list_head *list”…”�”}”(hjoHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjkHubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M#hjgHubjæ)�”}”(hhh]”hÌ)�”}”(hŒ the list to put **dentry** into.”h]”(hŒthe list to put ”…”�”}”(hj†Hh²hh³Nh´Nubj©)�”}”(hŒ **dentry**”h]”hŒdentry”…”�”}”(hjŽHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj†HubhŒ into.”…”�”}”(hj†Hh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‚Hh´M#hjƒHubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjgHubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j‚Hh´M#hj+Hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjHubhÌ)�”}”(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³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M%hjHubhÌ)�”}”(hŒ>true **dentry** had been placed into **list**, false otherwise”h]”(hŒtrue ”…”�”}”(hjÐHh²hh³Nh´Nubj©)�”}”(hŒ **dentry**”h]”hŒdentry”…”�”}”(hjØHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÐHubhŒ had been placed into ”…”�”}”(hjÐHh²hh³Nh´Nubj©)�”}”(hŒ**list**”h]”hŒlist”…”�”}”(hjêHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÐHubhŒ, false otherwise”…”�”}”(hjÐHh²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$hjHubhÌ)�”}”(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³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M&hjHubhÌ)�”}”(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 ”…”�”}”(hjIh²hh³Nh´Nubj©)�”}”(hŒ **dentry**”h]”hŒdentry”…”�”}”(hj#Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjIubhŒB is idle and not already include into a shrink list, move it into ”…”�”}”(hjIh²hh³Nh´Nubj©)�”}”(hŒ**list**”h]”hŒlist”…”�”}”(hj5Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjIubhŒ and return ”…”�”}”(hjIh²hh³Nh´NubjÐ)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hjGIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjIubhŒ"; otherwise do nothing and return ”…”�”}”(hjIh²hh³Nh´NubjÐ)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hjYIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjIubhŒ.”…”�”}”(hjIh²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%hjHubhÌ)�”}”(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 ”…”�”}”(hjrIh²hh³Nh´Nubj©)�”}”(hŒ**dentry->d_lock**”h]”hŒdentry->d_lock”…”�”}”(hjzIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjrIubhŒ0. There must have been no calls of dentry_free(”…”�”}”(hjrIh²hh³Nh´Nubj©)�”}”(hŒ **dentry**”h]”hŒdentry”…”�”}”(hjŒIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjrIubhŒ[) prior to the beginning of the RCU read-side critical area in which __move_to_shrink_list(”…”�”}”(hjrIh²hh³Nh´Nubj©)�”}”(hŒ **dentry**”h]”hŒdentry”…”�”}”(hjžIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjrIubhŒ, ”…”�”}”(hjrIh²hh³Nh´Nubj©)�”}”(hŒ**list**”h]”hŒlist”…”�”}”(hj°Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjrIubhŒ ) is called.”…”�”}”(hjrIh²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(hjHubhÌ)�”}”(hŒ_**list** should be thread-private and eventually emptied by passing it to shrink_dentry_list().”h]”(j©)�”}”(hŒ**list**”h]”hŒlist”…”�”}”(hjÍIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÉIubhŒW should be thread-private and eventually emptied by passing it to shrink_dentry_list().”…”�”}”(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´M,hjHubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjìDh²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ìDh²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”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjJh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MŒubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjJh²hh³jJh´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_find_any_alias”sbŒc.d_find_any_alias”†”asbuh1hhjJh²hh³jJh´MŒubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFJh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjJh²hh³jJh´MŒubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjTJh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjJh²hh³jJh´MŒubjC)�”}”(hŒd_find_any_alias”h]”jI)�”}”(hjCJh]”hŒd_find_any_alias”…”�”}”(hjeJh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjaJubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjJh²hh³jJh´MŒubj=)�”}”(hŒ(struct inode *inode)”h]”jC)�”}”(hŒstruct inode *inode”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Œinode”h]”hŒinode”…”�”}”(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 ]”jAJŒc.d_find_any_alias”†”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Œinode”h]”hŒinode”…”�”}”(hj×Jh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj|Jubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjxJubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjJh²hh³jJh´MŒubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjþIh²hh³jJh´MŒubah}”(h]”jùIah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jJh´MŒhjûIh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ find any alias for a given inode”h]”hŒ find any alias for a given inode”…”�”}”(hjKh²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þJh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjûIh²hh³jJh´MŒubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jKjšjKj›‰jœ‰j�‰uh1jh²hhjìDh³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©)�”}”(hj#Kh]”hŒ Parameters”…”�”}”(hj%Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj!Kubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M�hjKubj¿)�”}”(hhh]”jÄ)�”}”(hŒ3``struct inode *inode`` inode to find an alias for ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hjBKh]”hŒstruct inode *inode”…”�”}”(hjDKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj@Kubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M�hjah"]”h$]”h&]”uh1j1hjÐKh²hh³jáKh´M±ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(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Œ d_find_alias”sbŒc.d_find_alias”†”asbuh1hhjÐKh²hh³jáKh´M±ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÐKh²hh³jáKh´M±ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj"Lh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjÐKh²hh³jáKh´M±ubjC)�”}”(hŒ d_find_alias”h]”jI)�”}”(hjLh]”hŒ d_find_alias”…”�”}”(hj3Lh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj/Lubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjÐKh²hh³jáKh´M±ubj=)�”}”(hŒ(struct inode *inode)”h]”jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjNLh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjJLubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[Lh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjJLubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjlLh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjiLubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jnLŒmodname”NŒ classname”Njj )�”}”j ]”jLŒc.d_find_alias”†”asbuh1hhjJLubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠLh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjJLubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj˜Lh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjJLubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj¥Lh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjJLubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjFLubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjÐKh²hh³jáKh´M±ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjÌKh²hh³jáKh´M±ubah}”(h]”jÇKah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jáKh´M±hjÉKh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒgrab a hashed alias of inode”h]”hŒgrab a hashed alias of inode”…”�”}”(hjÏLh²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ÌLh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÉKh²hh³jáKh´M±ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jçLjšjçLj›‰jœ‰j�‰uh1jh²hhjìDh³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ñ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µhjëLubj¿)�”}”(hhh]”jÄ)�”}”(hŒ*``struct inode *inode`` inode in question ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hjMh]”hŒstruct inode *inode”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjMubah}”(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”…”�”}”(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²hjMubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjëLubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjKMh]”hŒ Description”…”�”}”(hjMMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjIMubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M´hjëLubhÌ)�”}”(hXwIf 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.”h]”hXwIf 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.”…”�”}”(hjaMh²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ëLubhÌ)�”}”(hŒiIf the inode has an IS_ROOT, DCACHE_DISCONNECTED alias, then prefer any other hashed alias over that one.”h]”hŒiIf the inode has an IS_ROOT, DCACHE_DISCONNECTED alias, then prefer any other hashed alias over that one.”…”�”}”(hjpMh²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ëLubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjìDh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œshrink_dcache_sb (C function)”Œc.shrink_dcache_sb”hNt”auh1hýhjìDh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ.void shrink_dcache_sb (struct super_block *sb)”h]”j)�”}”(hŒ-void shrink_dcache_sb(struct super_block *sb)”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjŸMh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj›Mh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´Mxubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®Mh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj›Mh²hh³j­Mh´MxubjC)�”}”(hŒshrink_dcache_sb”h]”jI)�”}”(hŒshrink_dcache_sb”h]”hŒshrink_dcache_sb”…”�”}”(hjÀMh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¼Mubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj›Mh²hh³j­Mh´Mxubj=)�”}”(hŒ(struct super_block *sb)”h]”jC)�”}”(hŒstruct super_block *sb”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Œ super_block”h]”hŒ super_block”…”�”}”(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.shrink_dcache_sb”†”asbuh1hhjØMubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjØMubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj(Nh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjØMubjI)�”}”(hŒsb”h]”hŒsb”…”�”}”(hj5Nh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjØMubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÔMubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj›Mh²hh³j­Mh´Mxubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj—Mh²hh³j­Mh´Mxubah}”(h]”j’Mah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j­Mh´Mxhj”Mh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒshrink dcache for a superblock”h]”hŒshrink dcache for a superblock”…”�”}”(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´Mxhj\Nh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj”Mh²hh³j­Mh´Mxubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jwNjšjwNj›‰jœ‰j�‰uh1jh²hhjìDh³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©)�”}”(hj�Nh]”hŒ Parameters”…”�”}”(hjƒNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjNubah}”(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 super_block *sb`` superblock ”h]”(jÊ)�”}”(hŒ``struct super_block *sb``”h]”jÐ)�”}”(hj Nh]”hŒstruct super_block *sb”…”�”}”(hj¢Nh²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´MyhjšNubjæ)�”}”(hhh]”hÌ)�”}”(hŒ superblock”h]”hŒ superblock”…”�”}”(hj¹Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jµNh´Myhj¶Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjšNubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jµNh´Myhj—Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj{NubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjÛNh]”hŒ Description”…”�”}”(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{NubhÌ)�”}”(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ñ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´Mzhj{Nubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjìDh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œpath_has_submounts (C function)”Œc.path_has_submounts”hNt”auh1hýhjìDh²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj Oh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjOh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/Oh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjOh²hh³j.Oh´MubjC)�”}”(hŒpath_has_submounts”h]”jI)�”}”(hŒpath_has_submounts”h]”hŒpath_has_submounts”…”�”}”(hjAOh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj=Oubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjOh²hh³j.Oh´Mubj=)�”}”(hŒ(const struct path *parent)”h]”jC)�”}”(hŒconst struct path *parent”h]”(j )�”}”(hj¾h]”hŒconst”…”�”}”(hj]Oh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjYOubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjjOh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjYOubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjxOh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjYOubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…Oh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjYOubh)�”}”(hhh]”jI)�”}”(hŒpath”h]”hŒpath”…”�”}”(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)�”}”jjCOsbŒc.path_has_submounts”†”asbuh1hhjYOubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶Oh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjYOubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjÄOh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjYOubjI)�”}”(hŒparent”h]”hŒparent”…”�”}”(hjÑOh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjYOubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjUOubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjOh²hh³j.Oh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjOh²hh³j.Oh´Mubah}”(h]”jOah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j.Oh´MhjOh²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û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´MhjøOh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjOh²hh³j.Oh´Mubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jPjšjPj›‰jœ‰j�‰uh1jh²hhjìDh³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©)�”}”(hjPh]”hŒ Parameters”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjPubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MhjPubj¿)�”}”(hhh]”jÄ)�”}”(hŒ-``const struct path *parent`` path to check. ”h]”(jÊ)�”}”(hŒ``const struct path *parent``”h]”jÐ)�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj:Pubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´Mhj6Pubjæ)�”}”(hhh]”hÌ)�”}”(hŒpath to check.”h]”hŒpath to check.”…”�”}”(hjUPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jQPh´MhjRPubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj6Pubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jQPh´Mhj3Pubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjPubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjwPh]”hŒ Description”…”�”}”(hjyPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjuPubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MhjPubhÌ)�”}”(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�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´MhjPubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjìDh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œd_invalidate (C function)”Œc.d_invalidate”hNt”auh1hýhjìDh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ)void d_invalidate (struct dentry *dentry)”h]”j)�”}”(hŒ(void d_invalidate(struct dentry *dentry)”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¼Ph²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj¸Ph²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MCubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjËPh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¸Ph²hh³jÊPh´MCubjC)�”}”(hŒ d_invalidate”h]”jI)�”}”(hŒ d_invalidate”h]”hŒ d_invalidate”…”�”}”(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´MCubj=)�”}”(hŒ(struct dentry *dentry)”h]”jC)�”}”(hŒstruct dentry *dentry”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Œdentry”h]”hŒdentry”…”�”}”(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)�”}”jjßPsbŒc.d_invalidate”†”asbuh1hhjõPubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7Qh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjõPubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjEQh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjõPubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjRQh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjõPubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjñPubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj¸Ph²hh³jÊPh´MCubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj´Ph²hh³jÊPh´MCubah}”(h]”j¯Pah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÊPh´MChj±Ph²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ(detach submounts, prune dcache, and drop”h]”hŒ(detach submounts, prune dcache, and drop”…”�”}”(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´MChjyQh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj±Ph²hh³jÊPh´MCubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j”Qjšj”Qj›‰jœ‰j�‰uh1jh²hhjìDh³Nh´NubjŸ)�”}”(hŒ]**Parameters** ``struct dentry *dentry`` dentry to invalidate (aka detach, prune and drop)”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´MGhj˜Qubj¿)�”}”(hhh]”jÄ)�”}”(hŒK``struct dentry *dentry`` dentry to invalidate (aka detach, prune and drop)”h]”(jÊ)�”}”(hŒ``struct dentry *dentry``”h]”jÐ)�”}”(hj½Qh]”hŒstruct dentry *dentry”…”�”}”(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´MIhj·Qubjæ)�”}”(hhh]”hÌ)�”}”(hŒ1dentry to invalidate (aka detach, prune and drop)”h]”hŒ1dentry to invalidate (aka detach, prune and drop)”…”�”}”(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´MDhjÓQubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj·Qubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÒQh´MIhj´Qubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj˜Qubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjìDh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œd_alloc (C function)”Œ c.d_alloc”hNt”auh1hýhjìDh²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”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjRh²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&]”uh1j1hjRh²hh³j$Rh´M¾ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj6Rh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj3Rubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j8RŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒd_alloc”sbŒ c.d_alloc”†”asbuh1hhjRh²hh³j$Rh´M¾ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWRh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjRh²hh³j$Rh´M¾ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjeRh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjRh²hh³j$Rh´M¾ubjC)�”}”(hŒd_alloc”h]”jI)�”}”(hjTRh]”hŒd_alloc”…”�”}”(hjvRh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjrRubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjRh²hh³j$Rh´M¾ubj=)�”}”(hŒ0(struct dentry *parent, const struct qstr *name)”h]”(jC)�”}”(hŒstruct dentry *parent”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Œ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 ]”jRRŒ c.d_alloc”†”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Œparent”h]”hŒparent”…”�”}”(hjèRh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj�Rubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj‰RubjC)�”}”(hŒconst struct qstr *name”h]”(j )�”}”(hj¾h]”hŒconst”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjýRubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjýRubj )�”}”(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Œqstr”h]”hŒqstr”…”�”}”(hj:Sh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj7Subah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jah"]”h$]”h&]”uh1j1hjýRubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjfSh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjýRubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hjsSh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjýRubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj‰Rubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjRh²hh³j$Rh´M¾ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjRh²hh³j$Rh´M¾ubah}”(h]”j Rah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j$Rh´M¾hj Rh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒallocate a dcache entry”h]”hŒallocate a dcache entry”…”�”}”(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µSjšjµSj›‰jœ‰j�‰uh1jh²hhjìDh³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¿Sh]”hŒ Parameters”…”�”}”(hjÁSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj½Subah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MÂhj¹Subj¿)�”}”(hhh]”(jÄ)�”}”(hŒ7``struct dentry * parent`` parent of entry to allocate ”h]”(jÊ)�”}”(hŒ``struct dentry * parent``”h]”jÐ)�”}”(hjÞSh]”hŒstruct dentry * parent”…”�”}”(hjàSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÜSubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M¿hjØSubjæ)�”}”(hhh]”hÌ)�”}”(hŒparent of entry to allocate”h]”hŒparent of entry to allocate”…”�”}”(hj÷Sh²hh³Nh´Nubah}”(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¿hjÕSubjÄ)�”}”(hŒ-``const struct qstr *name`` qstr of the name ”h]”(jÊ)�”}”(hŒ``const struct qstr *name``”h]”jÐ)�”}”(hjTh]”hŒconst struct qstr *name”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjTubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MÀhjTubjæ)�”}”(hhh]”hÌ)�”}”(hŒqstr of the name”h]”hŒqstr of the name”…”�”}”(hj0Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j,Th´MÀhj-Tubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjTubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j,Th´MÀhjÕSubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj¹SubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjRTh]”hŒ Description”…”�”}”(hjTTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjPTubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MÂhj¹SubhÌ)�”}”(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 ”…”�”}”(hjhTh²hh³Nh´NubjÐ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjpTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjhTubhŒ£ 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.”…”�”}”(hjhTh²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¹Subeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjìDh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œd_instantiate (C function)”Œc.d_instantiate”hNt”auh1hýhjìDh²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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj©Th²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj¥Th²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´Mtubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸Th²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¥Th²hh³j·Th´MtubjC)�”}”(hŒ d_instantiate”h]”jI)�”}”(hŒ d_instantiate”h]”hŒ d_instantiate”…”�”}”(hjÊTh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÆTubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj¥Th²hh³j·Th´Mtubj=)�”}”(hŒ+(struct dentry *entry, struct inode *inode)”h]”(jC)�”}”(hŒstruct dentry *entry”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Œdentry”h]”hŒdentry”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjUubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”•3jUŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjÌTsbŒc.d_instantiate”†”asbuh1hhjâTubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$Uh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjâTubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj2Uh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjâTubjI)�”}”(hŒentry”h]”hŒentry”…”�”}”(hj?Uh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjâTubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÞTubjC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjXUh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjTUubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeUh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjTUubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjvUh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjsUubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jxUŒmodname”NŒ classname”Njj )�”}”j ]”j UŒc.d_instantiate”†”asbuh1hhjTUubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”Uh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjTUubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj¢Uh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjTUubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj¯Uh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjTUubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÞTubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj¥Th²hh³j·Th´Mtubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj¡Th²hh³j·Th´Mtubah}”(h]”jœTah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j·Th´MthjžTh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ&fill in inode information for a dentry”h]”hŒ&fill in inode information for a dentry”…”�”}”(hjÙUh²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´MthjÖUh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjžTh²hh³j·Th´Mtubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jñUjšjñUj›‰jœ‰j�‰uh1jh²hhjìDh³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ûUh]”hŒ Parameters”…”�”}”(hjýUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjùUubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MxhjõUubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ,``struct dentry *entry`` dentry to complete ”h]”(jÊ)�”}”(hŒ``struct dentry *entry``”h]”jÐ)�”}”(hjVh]”hŒstruct dentry *entry”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjVubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MuhjVubjæ)�”}”(hhh]”hÌ)�”}”(hŒdentry to complete”h]”hŒdentry to complete”…”�”}”(hj3Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j/Vh´Muhj0Vubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjVubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j/Vh´MuhjVubjÄ)�”}”(hŒ8``struct inode * inode`` inode to attach to this dentry ”h]”(jÊ)�”}”(hŒ``struct inode * inode``”h]”jÐ)�”}”(hjSVh]”hŒstruct inode * inode”…”�”}”(hjUVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjQVubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MvhjMVubjæ)�”}”(hhh]”hÌ)�”}”(hŒinode to attach to this dentry”h]”hŒinode to attach to this dentry”…”�”}”(hjlVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jhVh´MvhjiVubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjMVubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jhVh´MvhjVubeh}”(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³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MxhjõUubhÌ)�”}”(hŒ'Fill in inode information in the entry.”h]”hŒ'Fill in inode information in the entry.”…”�”}”(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´MwhjõUubhÌ)�”}”(hŒEThis turns negative dentries into productive full members of society.”h]”hŒEThis turns negative dentries into productive full members of society.”…”�”}”(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´MyhjõUubhÌ)�”}”(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.”…”�”}”(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´M|hjõUubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjìDh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œd_obtain_alias (C function)”Œc.d_obtain_alias”hNt”auh1hýhjìDh²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”…”�”}”(hjñVh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjíVh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´Mðubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿVh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjíVh²hh³jþVh´Mðubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj Wubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jWŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒd_obtain_alias”sbŒc.d_obtain_alias”†”asbuh1hhjíVh²hh³jþVh´Mðubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1Wh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjíVh²hh³jþVh´Mðubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj?Wh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjíVh²hh³jþVh´MðubjC)�”}”(hŒd_obtain_alias”h]”jI)�”}”(hj.Wh]”hŒd_obtain_alias”…”�”}”(hjPWh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjLWubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjíVh²hh³jþVh´Mðubj=)�”}”(hŒ(struct inode *inode)”h]”jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjkWh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjgWubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxWh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjgWubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(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.d_obtain_alias”†”asbuh1hhjgWubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§Wh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjgWubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjµWh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjgWubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjÂWh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjgWubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjcWubah}”(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Œ8find or allocate a DISCONNECTED dentry for a given inode”h]”hŒ8find or allocate a DISCONNECTED dentry for a given inode”…”�”}”(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éWh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjæVh²hh³jþVh´Mðubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jXjšjXj›‰jœ‰j�‰uh1jh²hhjìDh³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©)�”}”(hjXh]”hŒ Parameters”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj Xubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MôhjXubj¿)�”}”(hhh]”jÄ)�”}”(hŒ9``struct inode *inode`` inode to allocate the dentry for ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hj-Xh]”hŒstruct inode *inode”…”�”}”(hj/Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj+Xubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´Mñhj'Xubjæ)�”}”(hhh]”hÌ)�”}”(hŒ inode to allocate the dentry for”h]”hŒ inode to allocate the dentry for”…”�”}”(hjFXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jBXh´MñhjCXubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj'Xubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jBXh´Mñhj$Xubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjXubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjhXh]”hŒ Description”…”�”}”(hjjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjfXubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MóhjXubhÌ)�”}”(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~Xh²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òhjXubhÌ)�”}”(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�Xh²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öhjXubhÌ)�”}”(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œXh²hh³Nh´NubjÐ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj¤Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjœXubhŒ_ or IS_ERR inode may be passed in and the error will be propagated to the return value, with a ”…”�”}”(hjœXh²hh³Nh´NubjÐ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj¶Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjœXubhŒ ”…”�”}”(hjœXh²hh³Nh´Nubj©)�”}”(hŒ **inode**”h]”hŒinode”…”�”}”(hjÈXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjœXubhŒ replaced by ERR_PTR(-ESTALE).”…”�”}”(hjœXh²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úhjXubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjìDh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œd_obtain_root (C function)”Œc.d_obtain_root”hNt”auh1hýhjìDh²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”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjýXh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjýXh²hh³jYh´M ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj Yh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjYubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j"YŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒ d_obtain_root”sbŒc.d_obtain_root”†”asbuh1hhjýXh²hh³jYh´M ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjAYh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjýXh²hh³jYh´M ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjOYh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjýXh²hh³jYh´M ubjC)�”}”(hŒ d_obtain_root”h]”jI)�”}”(hj>Yh]”hŒ d_obtain_root”…”�”}”(hj`Yh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj\Yubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjýXh²hh³jYh´M ubj=)�”}”(hŒ(struct inode *inode)”h]”jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj{Yh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjwYubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆYh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjwYubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(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 ]”jah"]”h$]”h&]”uh1j1hjwYubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjÅYh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjwYubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjÒYh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjwYubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjsYubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjýXh²hh³jYh´M ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjùXh²hh³jYh´M ubah}”(h]”jôXah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jYh´M hjöXh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ+find or allocate a dentry for a given inode”h]”hŒ+find or allocate a dentry for a given inode”…”�”}”(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ùYh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjöXh²hh³jYh´M ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jZjšjZj›‰jœ‰j�‰uh1jh²hhjìDh³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©)�”}”(hjZh]”hŒ Parameters”…”�”}”(hj Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjZubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M hjZubj¿)�”}”(hhh]”jÄ)�”}”(hŒ9``struct inode *inode`` inode to allocate the dentry for ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hj=Zh]”hŒstruct inode *inode”…”�”}”(hj?Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj;Zubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M hj7Zubjæ)�”}”(hhh]”hÌ)�”}”(hŒ inode to allocate the dentry for”h]”hŒ inode to allocate the dentry for”…”�”}”(hjVZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jRZh´M hjSZubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj7Zubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jRZh´M hj4Zubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjZubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjxZh]”hŒ Description”…”�”}”(hjzZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjvZubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M hjZubhÌ)�”}”(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ŽZh²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 hjZubhÌ)�”}”(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�Zh²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 hjZubhÌ)�”}”(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¬Zh²hh³Nh´NubjÐ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj´Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¬ZubhŒf or IS_ERR inode may be passed in and will be the error will be propagate to the return value, with a ”…”�”}”(hj¬Zh²hh³Nh´NubjÐ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjÆZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¬ZubhŒ ”…”�”}”(hj¬Zh²hh³Nh´Nubj©)�”}”(hŒ **inode**”h]”hŒinode”…”�”}”(hjØZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¬ZubhŒ replaced by ERR_PTR(-ESTALE).”…”�”}”(hj¬Zh²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 hjZubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjìDh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œd_add_ci (C function)”Œ c.d_add_ci”hNt”auh1hýhjìDh²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”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj [h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.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”…”�”}”(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)�”}”jŒd_add_ci”sbŒ c.d_add_ci”†”asbuh1hhj [h²hh³j[h´M ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQ[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_add_ci”h]”jI)�”}”(hjN[h]”hŒd_add_ci”…”�”}”(hjp[h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjl[ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj [h²hh³j[h´M 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 ]”jL[Œ 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Œ ”…”�”}”(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 ]”jL[Œ c.d_add_ci”†”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Œstruct qstr *name”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(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\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 ]”jL[Œ c.d_add_ci”†”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Œname”h]”hŒname”…”�”}”(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´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Œ2lookup or allocate new dentry with case-exact name”h]”hŒ2lookup or allocate new dentry with case-exact name”…”�”}”(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´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ìDh³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©)�”}”(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:20: ./fs/dcache.c”h´M! hj]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Ð)�”}”(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³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M hj']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”…”�”}”(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ŒD``struct inode *inode`` the inode case-insensitive lookup has found ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hjf]h]”hŒstruct inode *inode”…”�”}”(hjh]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjd]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 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´M hj|]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj`]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j{]h´M hj$]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 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:20: ./fs/dcache.c”h´M" hj]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.”…”�”}”(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´M! hj]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.”…”�”}”(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´M% hj]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.”…”�”}”(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´M( hj]ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjìDh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œd_same_name (C function)”Œ c.d_same_name”hNt”auh1hýhjìDh²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]”(jf)�”}”(hjih]”hŒbool”…”�”}”(hj=^h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj9^h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MR ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjK^h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj9^h²hh³jJ^h´MR ubjC)�”}”(hŒ d_same_name”h]”jI)�”}”(hŒ d_same_name”h]”hŒ d_same_name”…”�”}”(hj]^h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjY^ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj9^h²hh³jJ^h´MR ubj=)�”}”(hŒS(const struct dentry *dentry, const struct dentry *parent, const struct qstr *name)”h]”(jC)�”}”(hŒconst struct dentry *dentry”h]”(j )�”}”(hj¾h]”hŒconst”…”�”}”(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^ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj”^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Œ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_same_name”†”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^ubjC)�”}”(hŒconst struct dentry *parent”h]”(j )�”}”(hj¾h]”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”jA_Œmodname”NŒ classname”Njj )�”}”j ]”jÎ^Œ c.d_same_name”†”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`jauh1jBhjq^ubjC)�”}”(hŒconst struct qstr *name”h]”(j )�”}”(hj¾h]”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 ]”jÎ^Œ c.d_same_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Œname”h]”hŒname”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj�_ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjq^ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj9^h²hh³jJ^h´MR ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj5^h²hh³jJ^h´MR ubah}”(h]”j0^ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jJ^h´MR hj2^h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ(compare dentry name with case-exact name”h]”hŒ(compare dentry name with case-exact name”…”�”}”(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´MR hj*`h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj2^h²hh³jJ^h´MR ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jE`jšjE`j›‰jœ‰j�‰uh1jh²hhjìDh³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©)�”}”(hjO`h]”hŒ Parameters”…”�”}”(hjQ`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjM`ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MV hjI`ubj¿)�”}”(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Ð)�”}”(hjn`h]”hŒconst struct dentry *dentry”…”�”}”(hjp`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjl`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MS hjh`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´MS hj„`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjh`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jƒ`h´MS hje`ubjÄ)�”}”(hŒ.``const struct dentry *parent`` parent dentry ”h]”(jÊ)�”}”(hŒ``const struct dentry *parent``”h]”jÐ)�”}”(hj§`h]”hŒconst struct dentry *parent”…”�”}”(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´MT hj¡`ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ parent dentry”h]”hŒ parent dentry”…”�”}”(hjÀ`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¼`h´MT hj½`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¡`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¼`h´MT hje`ubjÄ)�”}”(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à`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³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´MU 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´MU hjö`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÚ`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jõ`h´MU hje`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjI`ubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hjah]”hŒReturn”…”�”}”(hjah²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´MW hjI`ubhÌ)�”}”(hŒ true if names are same, or false”h]”hŒ true if names are same, or false”…”�”}”(hj1ah²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 hjI`ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjìDh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œd_lookup (C function)”Œ c.d_lookup”hNt”auh1hýhjìDh²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`ah²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj\ah²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´Mù ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnah²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj\ah²hh³jmah´Mù ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjah²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)�”}”jŒd_lookup”sbŒ c.d_lookup”†”asbuh1hhj\ah²hh³jmah´Mù ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ah²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj\ah²hh³jmah´Mù ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj®ah²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj\ah²hh³jmah´Mù ubjC)�”}”(hŒd_lookup”h]”jI)�”}”(hj�ah]”hŒd_lookup”…”�”}”(hj¿ah²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj»aubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj\ah²hh³jmah´Mù ubj=)�”}”(hŒ6(const struct dentry *parent, const struct qstr *name)”h]”(jC)�”}”(hŒconst struct dentry *parent”h]”(j )�”}”(hj¾h]”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Œ ”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÖaubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(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.d_lookup”†”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ÖaubjI)�”}”(hŒparent”h]”hŒparent”…”�”}”(hjLbh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÖaubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÒaubjC)�”}”(hŒconst struct qstr *name”h]”(j )�”}”(hj¾h]”hŒconst”…”�”}”(hjebh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjabubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrbh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjabubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj€bh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjabubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�bh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjabubh)�”}”(hhh]”jI)�”}”(hŒqstr”h]”hŒqstr”…”�”}”(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.d_lookup”†”asbuh1hhjabubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼bh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjabubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjÊbh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjabubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hj×bh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjabubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÒaubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj\ah²hh³jmah´Mù ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjXah²hh³jmah´Mù ubah}”(h]”jSaah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jmah´Mù hjUah²hubjw)�”}”(hhh]”hÌ)�”}”(hŒsearch for a dentry”h]”hŒsearch for a dentry”…”�”}”(hjch²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þbh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjUah²hh³jmah´Mù ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jcjšjcj›‰jœ‰j�‰uh1jh²hhjìDh³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©)�”}”(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ý hjcubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ.``const struct dentry *parent`` parent dentry ”h]”(jÊ)�”}”(hŒ``const struct dentry *parent``”h]”jÐ)�”}”(hjBch]”hŒconst struct dentry *parent”…”�”}”(hjDch²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ú hjah"]”h$]”h&]”uh1j1hj0dh²hh³jBdh´M~ ubjC)�”}”(hŒd_delete”h]”jI)�”}”(hŒd_delete”h]”hŒd_delete”…”�”}”(hjUdh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjQdubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj0dh²hh³jBdh´M~ ubj=)�”}”(hŒ(struct dentry *dentry)”h]”jC)�”}”(hŒstruct dentry *dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjqdh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjmdubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~dh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjmdubh)�”}”(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)�”}”jjWdsbŒ c.d_delete”†”asbuh1hhjmdubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯dh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjmdubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj½dh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjmdubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjÊdh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjmdubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjidubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj0dh²hh³jBdh´M~ ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj,dh²hh³jBdh´M~ ubah}”(h]”j'dah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jBdh´M~ hj)dh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒdelete a dentry”h]”hŒdelete a dentry”…”�”}”(hjôdh²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ñdh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj)dh²hh³jBdh´M~ ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j ejšj ej›‰jœ‰j�‰uh1jh²hhjìDh³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©)�”}”(hjeh]”hŒ Parameters”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjeubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M‚ hjeubj¿)�”}”(hhh]”jÄ)�”}”(hŒ0``struct dentry * dentry`` The dentry to delete ”h]”(jÊ)�”}”(hŒ``struct dentry * dentry``”h]”jÐ)�”}”(hj5eh]”hŒstruct dentry * dentry”…”�”}”(hj7eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj3eubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M hj/eubjæ)�”}”(hhh]”hÌ)�”}”(hŒThe dentry to delete”h]”hŒThe dentry to delete”…”�”}”(hjNeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jJeh´M hjKeubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj/eubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jJeh´M hj,eubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjeubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjpeh]”hŒ Description”…”�”}”(hjreh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjneubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M� hjeubhÌ)�”}”(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†eh²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€ hjeubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjìDh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œd_rehash (C function)”Œ c.d_rehash”hNt”auh1hýhjìDh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ%void d_rehash (struct dentry * entry)”h]”j)�”}”(hŒ#void d_rehash(struct dentry *entry)”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjµeh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj±eh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M¥ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄeh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj±eh²hh³jÃeh´M¥ ubjC)�”}”(hŒd_rehash”h]”jI)�”}”(hŒd_rehash”h]”hŒd_rehash”…”�”}”(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´M¥ ubj=)�”}”(hŒ(struct dentry *entry)”h]”jC)�”}”(hŒstruct dentry *entry”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Œdentry”h]”hŒdentry”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj fubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jfŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjØesbŒ c.d_rehash”†”asbuh1hhjîeubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0fh²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Œentry”h]”hŒentry”…”�”}”(hjKfh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjîeubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjêeubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj±eh²hh³jÃeh´M¥ ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj­eh²hh³jÃeh´M¥ ubah}”(h]”j¨eah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÃeh´M¥ hjªeh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒadd an entry back to the hash”h]”hŒadd an entry back to the hash”…”�”}”(hjufh²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¥ hjrfh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjªeh²hh³jÃeh´M¥ ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j�fjšj�fj›‰jœ‰j�‰uh1jh²hhjìDh³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—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´M© hj‘fubj¿)�”}”(hhh]”jÄ)�”}”(hŒ4``struct dentry * entry`` dentry to add to the hash ”h]”(jÊ)�”}”(hŒ``struct dentry * entry``”h]”jÐ)�”}”(hj¶fh]”hŒstruct dentry * entry”…”�”}”(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´M¦ hj°fubjæ)�”}”(hhh]”hÌ)�”}”(hŒdentry to add to the hash”h]”hŒdentry to add to the hash”…”�”}”(hjÏfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jËfh´M¦ hjÌfubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj°fubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jËfh´M¦ hj­fubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj‘fubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjñfh]”hŒ Description”…”�”}”(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´M¨ hj‘fubhÌ)�”}”(hŒ0Adds a dentry to the hash according to its name.”h]”hŒ0Adds a dentry to the hash according to its name.”…”�”}”(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´M§ hj‘fubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjìDh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œd_add (C function)”Œc.d_add”hNt”auh1hýhjìDh²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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj6gh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj2gh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M� ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjEgh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj2gh²hh³jDgh´M� ubjC)�”}”(hŒd_add”h]”jI)�”}”(hŒd_add”h]”hŒd_add”…”�”}”(hjWgh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjSgubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj2gh²hh³jDgh´M� ubj=)�”}”(hŒ+(struct dentry *entry, struct inode *inode)”h]”(jC)�”}”(hŒstruct dentry *entry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjsgh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjogubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€gh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjogubh)�”}”(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)�”}”jjYgsbŒc.d_add”†”asbuh1hhjogubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±gh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjogubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj¿gh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjogubjI)�”}”(hŒentry”h]”hŒentry”…”�”}”(hjÌgh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjogubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjkgubjC)�”}”(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”…”�”}”(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­gŒc.d_add”†”asbuh1hhjágubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!hh²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”…”�”}”(hjah"]”h$]”h&]”uh1j1hjnih²hh³jih´Mæ ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(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)�”}”jŒd_splice_alias”sbŒc.d_splice_alias”†”asbuh1hhjnih²hh³jih´Mæ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²ih²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjnih²hh³jih´Mæ ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjÀih²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjnih²hh³jih´Mæ ubjC)�”}”(hŒd_splice_alias”h]”jI)�”}”(hj¯ih]”hŒd_splice_alias”…”�”}”(hjÑih²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÍiubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjnih²hh³jih´Mæ ubj=)�”}”(hŒ,(struct inode *inode, struct dentry *dentry)”h]”(jC)�”}”(hŒstruct inode *inode”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Œinode”h]”hŒinode”…”�”}”(hj jh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j jŒmodname”NŒ classname”Njj )�”}”j ]”j­iŒc.d_splice_alias”†”asbuh1hhjèiubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(jh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjèiubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj6jh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjèiubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjCjh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjèiubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjäiubjC)�”}”(hŒstruct dentry *dentry”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj\jh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjXjubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjijh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjXjubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjzjh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjwjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j|jŒmodname”NŒ classname”Njj )�”}”j ]”j­iŒc.d_splice_alias”†”asbuh1hhjXjubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜jh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjXjubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj¦jh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjXjubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj³jh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjXjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjäiubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjnih²hh³jih´Mæ ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjjih²hh³jih´Mæ ubah}”(h]”jeiah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jih´Mæ hjgih²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Ýjh²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Újh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjgih²hh³jih´Mæ ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jõjjšjõjj›‰jœ‰j�‰uh1jh²hhjìDh³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** 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 is needed in the lookup routine of any filesystem that is exportable (via knfsd) so that we can build dcache paths to directories effectively. If a dentry was found and moved, then it is returned. Otherwise NULL is returned. This matches the expected return value of ->lookup. Cluster filesystems may call this function with a negative, hashed dentry. In that case, we know that the inode will be a regular file, and also this will only occur during atomic_open. So we need to check for the dentry being already hashed only in the final case.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j©)�”}”(hjÿjh]”hŒ Parameters”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjýjubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´Mê hjùjubj¿)�”}”(hhh]”(jÄ)�”}”(hŒG``struct inode *inode`` the inode which may have a disconnected dentry ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hjkh]”hŒstruct inode *inode”…”�”}”(hj kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjkubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´Mç hjkubjæ)�”}”(hhh]”hÌ)�”}”(hŒ.the inode which may have a disconnected dentry”h]”hŒ.the inode which may have a disconnected dentry”…”�”}”(hj7kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j3kh´Mç hj4kubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjkubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j3kh´Mç hjkubjÄ)�”}”(hŒQ``struct dentry *dentry`` a negative dentry which we want to point to the inode. ”h]”(jÊ)�”}”(hŒ``struct dentry *dentry``”h]”jÐ)�”}”(hjWkh]”hŒstruct dentry *dentry”…”�”}”(hjYkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjUkubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´Mè hjQkubjæ)�”}”(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.”…”�”}”(hjpkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jlkh´Mè hjmkubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjQkubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jlkh´Mè hjkubeh}”(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³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´Mê hjùjubhÌ)�”}”(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¨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ùjubhÌ)�”}”(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·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ùjubhÌ)�”}”(hŒ“This is needed in the lookup routine of any filesystem that is exportable (via knfsd) so that we can build dcache paths to directories effectively.”h]”hŒ“This is needed in the lookup routine of any filesystem that is exportable (via knfsd) so that we can build dcache paths to directories effectively.”…”�”}”(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ùjubhÌ)�”}”(hŒ‡If a dentry was found and moved, then it is returned. Otherwise NULL is returned. This matches the expected return value of ->lookup.”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.”…”�”}”(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ùjubhÌ)�”}”(hX Cluster filesystems may call this function with a negative, hashed dentry. In that case, we know that the inode will be a regular file, and also this will only occur during atomic_open. So we need to check for the dentry being already hashed only in the final case.”h]”hX Cluster filesystems may call this function with a negative, hashed dentry. In that case, we know that the inode will be a regular file, and also this will only occur during atomic_open. So we need to check for the dentry being already hashed only in the final case.”…”�”}”(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ùjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjìDh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œis_subdir (C function)”Œ c.is_subdir”hNt”auh1hýhjìDh²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]”(jf)�”}”(hjih]”hŒbool”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjlh²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&]”uh1j1hjlh²hh³j lh´M ubjC)�”}”(hŒ is_subdir”h]”jI)�”}”(hŒ is_subdir”h]”hŒ is_subdir”…”�”}”(hj3lh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj/lubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjlh²hh³j lh´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”…”�”}”(hjOlh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjKlubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\lh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjKlubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjmlh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjjlubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jolŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj5lsbŒ c.is_subdir”†”asbuh1hhjKlubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�lh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjKlubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj›lh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjKlubjI)�”}”(hŒ new_dentry”h]”hŒ new_dentry”…”�”}”(hj¨lh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjKlubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjGlubjC)�”}”(hŒstruct dentry *old_dentry”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Œ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‰lŒ c.is_subdir”†”asbuh1hhj½lubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýlh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj½lubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj mh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj½lubjI)�”}”(hŒ old_dentry”h]”hŒ old_dentry”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj½lubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjGlubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjlh²hh³j lh´M ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj lh²hh³j lh´M ubah}”(h]”jlah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j lh´M hjlh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ*is new dentry a subdirectory of old_dentry”h]”hŒ*is new dentry a subdirectory of old_dentry”…”�”}”(hjBmh²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&]”uh1jvhjlh²hh³j lh´M ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jZmjšjZmj›‰jœ‰j�‰uh1jh²hhjìDh³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©)�”}”(hjdmh]”hŒ Parameters”…”�”}”(hjfmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjbmubah}”(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 dentry *new_dentry`` new dentry ”h]”(jÊ)�”}”(hŒ``struct dentry *new_dentry``”h]”jÐ)�”}”(hjƒmh]”hŒstruct dentry *new_dentry”…”�”}”(hj…mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj�mubah}”(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Œ new dentry”h]”hŒ new dentry”…”�”}”(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 hjzmubjÄ)�”}”(hŒ)``struct dentry *old_dentry`` old dentry ”h]”(jÊ)�”}”(hŒ``struct dentry *old_dentry``”h]”jÐ)�”}”(hj¼mh]”hŒstruct dentry *old_dentry”…”�”}”(hj¾mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjºmubah}”(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Œ old dentry”h]”hŒ old dentry”…”�”}”(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 hjzmubeh}”(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³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:20: ./fs/dcache.c”h´M hj^mubhÌ)�”}”(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 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^mubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjìDh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œdget_dlock (C function)”Œ c.dget_dlock”hNt”auh1hýhjìDh²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”…”�”}”(hjah"]”h$]”h&]”uh1j1hj8nh²hh³jInh´MGubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj[nh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjXnubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j]nŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒ dget_dlock”sbŒ c.dget_dlock”†”asbuh1hhj8nh²hh³jInh´MGubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|nh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj8nh²hh³jInh´MGubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjŠnh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj8nh²hh³jInh´MGubjC)�”}”(hŒ dget_dlock”h]”jI)�”}”(hjynh]”hŒ dget_dlock”…”�”}”(hj›nh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj—nubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj8nh²hh³jInh´MGubj=)�”}”(hŒ(struct dentry *dentry)”h]”jC)�”}”(hŒstruct dentry *dentry”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Œdentry”h]”hŒdentry”…”�”}”(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 ]”jwnŒ c.dget_dlock”†”asbuh1hhj²nubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjònh²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Œdentry”h]”hŒdentry”…”�”}”(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<hj8nh²hh³jInh´MGubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj4nh²hh³jInh´MGubah}”(h]”j/nah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jInh´MGhj1nh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒget a reference to a dentry”h]”hŒget a reference to a dentry”…”�”}”(hj7oh²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´MGhj4oh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj1nh²hh³jInh´MGubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jOojšjOoj›‰jœ‰j�‰uh1jh²hhjìDh³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©)�”}”(hjYoh]”hŒ Parameters”…”�”}”(hj[oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjWoubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´MKhjSoubj¿)�”}”(hhh]”jÄ)�”}”(hŒ7``struct dentry *dentry`` dentry to get a reference to ”h]”(jÊ)�”}”(hŒ``struct dentry *dentry``”h]”jÐ)�”}”(hjxoh]”hŒstruct dentry *dentry”…”�”}”(hjzoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjvoubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´MHhjroubjæ)�”}”(hhh]”hÌ)�”}”(hŒdentry to get a reference to”h]”hŒdentry to get a reference to”…”�”}”(hj‘oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j�oh´MHhjŽoubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjroubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j�oh´MHhjooubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjSoubhÌ)�”}”(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³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´MJhjSoubhÌ)�”}”(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Éoh²hh³Nh´Nubj©)�”}”(hŒ**dentry->d_lock**”h]”hŒdentry->d_lock”…”�”}”(hjÑoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÉoubhŒï. 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Éoh²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´MIhjSoubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjìDh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œdget (C function)”Œc.dget”hNt”auh1hýhjìDh²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 ph²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjph²hh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´MXubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjph²hh³jph´MXubh)�”}”(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)�”}”jŒdget”sbŒc.dget”†”asbuh1hhjph²hh³jph´MXubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJph²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjph²hh³jph´MXubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjXph²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjph²hh³jph´MXubjC)�”}”(hŒdget”h]”jI)�”}”(hjGph]”hŒdget”…”�”}”(hjiph²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjepubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjph²hh³jph´MXubj=)�”}”(hŒ(struct dentry *dentry)”h]”jC)�”}”(hŒstruct dentry *dentry”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 ]”jEpŒc.dget”†”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Œdentry”h]”hŒdentry”…”�”}”(hjÛph²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj€pubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj|pubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjph²hh³jph´MXubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjph²hh³jph´MXubah}”(h]”jýoah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jph´MXhjÿoh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒget a reference to a dentry”h]”hŒget a reference to a dentry”…”�”}”(hjqh²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´MXhjqh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÿoh²hh³jph´MXubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jqjšjqj›‰jœ‰j�‰uh1jh²hhjìDh³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©)�”}”(hj'qh]”hŒ Parameters”…”�”}”(hj)qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj%qubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´M\hj!qubj¿)�”}”(hhh]”jÄ)�”}”(hŒ7``struct dentry *dentry`` dentry to get a reference to ”h]”(jÊ)�”}”(hŒ``struct dentry *dentry``”h]”jÐ)�”}”(hjFqh]”hŒstruct dentry *dentry”…”�”}”(hjHqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjDqubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´MYhj@qubjæ)�”}”(hhh]”hÌ)�”}”(hŒdentry to get a reference to”h]”hŒdentry to get a reference to”…”�”}”(hj_qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j[qh´MYhj\qubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj@qubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j[qh´MYhj=qubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj!qubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj�qh]”hŒ Description”…”�”}”(hjƒqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjqubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´M[hj!qubhÌ)�”}”(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—qh²hh³Nh´NubjÐ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjŸqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj—qubhXp 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—qh²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´MZhj!qubhÌ)�”}”(hŒ**NOTE**”h]”j©)�”}”(hjºqh]”hŒNOTE”…”�”}”(hj¼qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¸qubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´Mbhj!qubhÌ)�”}”(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Ðqh²hh³Nh´Nubj©)�”}”(hŒ**dentry->d_lock**”h]”hŒdentry->d_lock”…”�”}”(hjØqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÐqubhŒ‹ is held. From the deadlock avoidance point of view it is equivalent to spin_lock()/increment refcount/spin_unlock(), so calling it under ”…”�”}”(hjÐqh²hh³Nh´Nubj©)�”}”(hŒ**dentry->d_lock**”h]”hŒdentry->d_lock”…”�”}”(hjêqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÐqubhŒM is always a bug; so’s calling it under ->d_lock on any of its descendents.”…”�”}”(hjÐqh²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´Mchj!qubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjìDh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œd_unhashed (C function)”Œ c.d_unhashed”hNt”auh1hýhjìDh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ,int d_unhashed (const struct dentry *dentry)”h]”j)�”}”(hŒ+int d_unhashed(const struct dentry *dentry)”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj#rh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjrh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´M…ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2rh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjrh²hh³j1rh´M…ubjC)�”}”(hŒ d_unhashed”h]”jI)�”}”(hŒ d_unhashed”h]”hŒ d_unhashed”…”�”}”(hjDrh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj@rubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjrh²hh³j1rh´M…ubj=)�”}”(hŒ(const struct dentry *dentry)”h]”jC)�”}”(hŒconst struct dentry *dentry”h]”(j )�”}”(hj¾h]”hŒconst”…”�”}”(hj`rh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj\rubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjmrh²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Œ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)�”}”jjFrsbŒ c.d_unhashed”†”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Œdentry”h]”hŒdentry”…”�”}”(hjÔrh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj\rubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjXrubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjrh²hh³j1rh´M…ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjrh²hh³j1rh´M…ubah}”(h]”jrah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j1rh´M…hjrh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒis dentry hashed”h]”hŒis dentry hashed”…”�”}”(hjþrh²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ûrh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjrh²hh³j1rh´M…ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jsjšjsj›‰jœ‰j�‰uh1jh²hhjìDh³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©)�”}”(hj sh]”hŒ Parameters”…”�”}”(hj"sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjsubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´M‰hjsubj¿)�”}”(hhh]”jÄ)�”}”(hŒ/``const struct dentry *dentry`` entry to check ”h]”(jÊ)�”}”(hŒ``const struct dentry *dentry``”h]”jÐ)�”}”(hj?sh]”hŒconst struct dentry *dentry”…”�”}”(hjAsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj=subah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´M†hj9subjæ)�”}”(hhh]”hÌ)�”}”(hŒentry to check”h]”hŒentry to check”…”�”}”(hjXsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jTsh´M†hjUsubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj9subeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jTsh´M†hj6subah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjsubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjzsh]”hŒ Description”…”�”}”(hj|sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjxsubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´MˆhjsubhÌ)�”}”(hŒ:Returns true if the dentry passed is not currently hashed.”h]”hŒ:Returns true if the dentry passed is not currently hashed.”…”�”}”(hj�sh²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‡hjsubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjìDh²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ìDh²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]”(jf)�”}”(hjih]”hŒbool”…”�”}”(hj¿sh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj»sh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´Mÿubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍsh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj»sh²hh³jÌsh´MÿubjC)�”}”(hŒd_really_is_negative”h]”jI)�”}”(hŒd_really_is_negative”h]”hŒd_really_is_negative”…”�”}”(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´Mÿubj=)�”}”(hŒ(const struct dentry *dentry)”h]”jC)�”}”(hŒconst struct dentry *dentry”h]”(j )�”}”(hj¾h]”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Œ ”…”�”}”(hj#th²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj÷subh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj4th²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj1tubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j6tŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjássbŒc.d_really_is_negative”†”asbuh1hhj÷subj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTth²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj÷subj“)�”}”(hj–h]”hŒ*”…”�”}”(hjbth²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj÷subjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjoth²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj÷subeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjósubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj»sh²hh³jÌsh´Mÿubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj·sh²hh³jÌsh´Mÿubah}”(h]”j²sah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÌsh´Mÿhj´sh²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™th²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–th²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj´sh²hh³jÌsh´Mÿubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j±tjšj±tj›‰jœ‰j�‰uh1jh²hhjìDh³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»th]”hŒ Parameters”…”�”}”(hj½th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¹tubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´Mhjµtubj¿)�”}”(hhh]”jÄ)�”}”(hŒ7``const struct dentry *dentry`` The dentry in question ”h]”(jÊ)�”}”(hŒ``const struct dentry *dentry``”h]”jÐ)�”}”(hjÚth]”hŒconst struct dentry *dentry”…”�”}”(hjÜth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjØtubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´MhjÔtubjæ)�”}”(hhh]”hÌ)�”}”(hŒThe dentry in question”h]”hŒThe dentry in question”…”�”}”(hjóth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jïth´Mhjðtubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÔtubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jïth´MhjÑtubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjµtubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjuh]”hŒ Description”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjuubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´MhjµtubhÌ)�”}”(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.”…”�”}”(hj+uh²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µtubhÌ)�”}”(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:uh²hh³Nh´Nubj )�”}”(hŒ*only*”h]”hŒonly”…”�”}”(hjBuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~ hj:uubhXM 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:uh²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µtubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjìDh²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ìDh²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]”(jf)�”}”(hjih]”hŒbool”…”�”}”(hj{uh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjwuh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰uh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjwuh²hh³jˆuh´MubjC)�”}”(hŒd_really_is_positive”h]”jI)�”}”(hŒd_really_is_positive”h]”hŒd_really_is_positive”…”�”}”(hj›uh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj—uubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjwuh²hh³jˆuh´Mubj=)�”}”(hŒ(const struct dentry *dentry)”h]”jC)�”}”(hŒconst struct dentry *dentry”h]”(j )�”}”(hj¾h]”hŒconst”…”�”}”(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³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Œ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)�”}”jj�usbŒc.d_really_is_positive”†”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Œdentry”h]”hŒdentry”…”�”}”(hj+vh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj³uubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¯uubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjwuh²hh³jˆuh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjsuh²hh³jˆuh´Mubah}”(h]”jnuah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jˆuh´Mhjpuh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ@Determine if a dentry is really positive (ignoring fallthroughs)”h]”hŒ@Determine if a dentry is really positive (ignoring fallthroughs)”…”�”}”(hjUvh²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´MhjRvh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjpuh²hh³jˆuh´Mubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jmvjšjmvj›‰jœ‰j�‰uh1jh²hhjìDh³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©)�”}”(hjwvh]”hŒ Parameters”…”�”}”(hjyvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjuvubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´Mhjqvubj¿)�”}”(hhh]”jÄ)�”}”(hŒ7``const struct dentry *dentry`` The dentry in question ”h]”(jÊ)�”}”(hŒ``const struct dentry *dentry``”h]”jÐ)�”}”(hj–vh]”hŒconst struct dentry *dentry”…”�”}”(hj˜vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj”vubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´Mhj�vubjæ)�”}”(hhh]”hÌ)�”}”(hŒThe dentry in question”h]”hŒThe dentry in question”…”�”}”(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¾hjqvubhÌ)�”}”(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³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´MhjqvubhÌ)�”}”(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çvh²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´MhjqvubhÌ)�”}”(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övh²hh³Nh´Nubj )�”}”(hŒ*only*”h]”hŒonly”…”�”}”(hjþvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~ hjövubhŒ¿ 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övh²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´Mhjqvubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjìDh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œd_inode (C function)”Œ c.d_inode”hNt”auh1hýhjìDh²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”…”�”}”(hj7wh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj3wh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´M,ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjEwh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj3wh²hh³jDwh´M,ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjVwh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjSwubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jXwŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒd_inode”sbŒ c.d_inode”†”asbuh1hhj3wh²hh³jDwh´M,ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwwh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj3wh²hh³jDwh´M,ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj…wh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj3wh²hh³jDwh´M,ubjC)�”}”(hŒd_inode”h]”jI)�”}”(hjtwh]”hŒd_inode”…”�”}”(hj–wh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj’wubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj3wh²hh³jDwh´M,ubj=)�”}”(hŒ(const struct dentry *dentry)”h]”jC)�”}”(hŒconst struct dentry *dentry”h]”(j )�”}”(hj¾h]”hŒconst”…”�”}”(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­wubj )�”}”(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 ]”jrwŒ c.d_inode”†”asbuh1hhj­wubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj­wubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjxh²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<hj3wh²hh³jDwh´M,ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj/wh²hh³jDwh´M,ubah}”(h]”j*wah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jDwh´M,hj,wh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ#Get the actual inode of this dentry”h]”hŒ#Get the actual inode of this dentry”…”�”}”(hjMxh²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,hjJxh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj,wh²hh³jDwh´M,ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jexjšjexj›‰jœ‰j�‰uh1jh²hhjìDh³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©)�”}”(hjoxh]”hŒ Parameters”…”�”}”(hjqxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjmxubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´M0hjixubj¿)�”}”(hhh]”jÄ)�”}”(hŒ4``const struct dentry *dentry`` The dentry to query ”h]”(jÊ)�”}”(hŒ``const struct dentry *dentry``”h]”jÐ)�”}”(hjŽxh]”hŒconst 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´M-hjˆxubjæ)�”}”(hhh]”hÌ)�”}”(hŒThe dentry to query”h]”hŒThe dentry to query”…”�”}”(hj§xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j£xh´M-hj¤xubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjˆxubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j£xh´M-hj…xubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjixubhÌ)�”}”(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´M/hjixubhÌ)�”}”(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ßxh²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.hjixubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjìDh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œd_inode_rcu (C function)”Œ c.d_inode_rcu”hNt”auh1hýhjìDh²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”…”�”}”(hjyh²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´M8ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj yh²hh³jyh´M8ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(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)�”}”jŒ d_inode_rcu”sbŒ c.d_inode_rcu”†”asbuh1hhj yh²hh³jyh´M8ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNyh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj yh²hh³jyh´M8ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj\yh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj yh²hh³jyh´M8ubjC)�”}”(hŒ d_inode_rcu”h]”jI)�”}”(hjKyh]”hŒ d_inode_rcu”…”�”}”(hjmyh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjiyubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj yh²hh³jyh´M8ubj=)�”}”(hŒ(const struct dentry *dentry)”h]”jC)�”}”(hŒconst struct dentry *dentry”h]”(j )�”}”(hj¾h]”hŒconst”…”�”}”(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„yubj )�”}”(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 ]”jIyŒ c.d_inode_rcu”†”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³jyh´M8ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjyh²hh³jyh´M8ubah}”(h]”jyah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jyh´M8hjyh²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()”…”�”}”(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´M8hj!zh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjyh²hh³jyh´M8ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jah"]”h$]”h&]”uh1j1hjázh²hh³jòzh´MDubh)�”}”(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ázh²hh³jòzh´MDubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%{h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjázh²hh³jòzh´MDubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj3{h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjázh²hh³jòzh´MDubjC)�”}”(hŒd_backing_inode”h]”jI)�”}”(hj"{h]”hŒd_backing_inode”…”�”}”(hjD{h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj@{ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjázh²hh³jòzh´MDubj=)�”}”(hŒ(const struct dentry *upper)”h]”jC)�”}”(hŒconst struct dentry *upper”h]”(j )�”}”(hj¾h]”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Œ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_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`jauh1jBhjW{ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjázh²hh³jòzh´MDubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjÝzh²hh³jòzh´MDubah}”(h]”jØzah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jòzh´MDhjÚzh²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´MDhjø{h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÚzh²hh³jòzh´MDubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j|jšj|j›‰jœ‰j�‰uh1jh²hhjìDh³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©)�”}”(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´MHhj|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”…”�”}”(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´MEhj6|ubjæ)�”}”(hhh]”hÌ)�”}”(hŒThe upper layer”h]”hŒThe upper layer”…”�”}”(hjU|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jQ|h´MEhjR|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj6|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jQ|h´MEhj3|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³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´MGhj|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´MFhj|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´MJhj|ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjìDh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œd_real (C function)”Œc.d_real”hNt”auh1hýhjìDh²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´MUubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙ|h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÇ|h²hh³jØ|h´MUubh)�”}”(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´MUubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj }h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÇ|h²hh³jØ|h´MUubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjÇ|h²hh³jØ|h´MUubjC)�”}”(hŒd_real”h]”jI)�”}”(hj}h]”hŒd_real”…”�”}”(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´MUubj=)�”}”(hŒ.(struct dentry *dentry, enum d_real_type type)”h]”(jC)�”}”(hŒstruct dentry *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”…”�”}”(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.d_real”†”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Œdentry”h]”hŒdentry”…”�”}”(hjœ}h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjA}ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj=}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`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ŒReturn the real dentry”h]”hŒReturn the real dentry”…”�”}”(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´MUhj&~h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÀ|h²hh³jØ|h´MUubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jA~jšjA~j›‰jœ‰j�‰uh1jh²hhjìDh³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©)�”}”(hjK~h]”hŒ Parameters”…”�”}”(hjM~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjI~ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´MYhjE~ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ.``struct dentry *dentry`` the dentry to query ”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³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´MVhjd~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´MVhj€~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjd~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j~h´MVhja~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´MWh•j�~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´MWhj¹~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj�~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¸~h´MWhja~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³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:23: ./include/linux/dcache.h”h´MYhjE~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´MXhjE~ubhÌ)�”}”(hŒ+See also: Documentation/filesystems/vfs.rst”h]”hŒ+See also: Documentation/filesystems/vfs.rst”…”�”}”(hjh²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~ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjìDh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œd_real_inode (C function)”Œc.d_real_inode”hNt”auh1hýhjìDh²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”…”�”}”(hj2h²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´Mgubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj.h²hh³j?h´Mgubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjNubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jSŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒ d_real_inode”sbŒc.d_real_inode”†”asbuh1hhj.h²hh³j?h´Mgubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj.h²hh³j?h´Mgubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj.h²hh³j?h´MgubjC)�”}”(hŒ d_real_inode”h]”jI)�”}”(hjoh]”hŒ d_real_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´Mgubj=)�”}”(hŒ(const struct dentry *dentry)”h]”jC)�”}”(hŒconst struct dentry *dentry”h]”(j )�”}”(hj¾h]”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_real_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”…”�”}”(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´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Œ&Return the real inode hosting the data”h]”hŒ&Return the real inode hosting the data”…”�”}”(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´MghjE€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ìDh³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©)�”}”(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´Mkhjd€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´Mhhjƒ€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´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¾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´Mjhjd€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´Mihjd€ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjìDh²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj"�h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj�h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´KÖubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj�h²hh³j0�h´KÖubjC)�”}”(hŒinode_init_always_gfp”h]”jI)�”}”(hŒinode_init_always_gfp”h]”hŒinode_init_always_gfp”…”�”}”(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´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Œ ”…”�”}”(hjl�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&]”uh1jHhjz�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j�Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjE�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`jauh1jBhjW�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Œ ”…”�”}”(hj ‚h²hh³Nh´Nubah}”(h]”h ]”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`jauh1jBhjW�ubjC)�”}”(hŒ gfp_t gfp”h]”(h)�”}”(hhh]”jI)�”}”(hŒgfp_t”h]”hŒgfp_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.inode_init_always_gfp”†”asbuh1hhj=‚ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjb‚h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj=‚ubjI)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hjp‚h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj=‚ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjW�ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj�h²hh³j0�h´KÖubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj�h²hh³j0�h´KÖubah}”(h]”j�ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j0�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³j0�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Ð)�”}”(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´KØhjƒubjæ)�”}”(hhh]”hÌ)�”}”(hŒinode to initialise”h]”hŒinode to initialise”…”�”}”(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Œ``gfp_t gfp`` allocation flags ”h]”(jÊ)�”}”(hŒ ``gfp_t gfp``”h]”jÐ)�”}”(hjMƒh]”hŒ gfp_t gfp”…”�”}”(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´KÙhjGƒubjæ)�”}”(hhh]”hÌ)�”}”(hŒallocation flags”h]”hŒallocation flags”…”�”}”(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Ò‚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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj߃h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÛƒ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Œ ”…”�”}”(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&]”uh1jHhj7„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Œ ”…”�”}”(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Œinode”h]”hŒinode”…”�”}”(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Œ#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”…”�”}”(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Ì)�”}”(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.”…”�”}”(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»„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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj`…h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj\…h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.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Œ 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³jn…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³jn…h´M ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjX…h²hh³jn…h´M ubah}”(h]”jS…ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jn…h´M hjU…h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ#directly zero an inode's link count”h]”hŒ%directly zero 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&]”uh1jvhjU…h²hh³jn…h´M ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j8†jšj8†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©)�”}”(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Œ``struct inode *inode`` inode ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hja†h]”hŒstruct inode *inode”…”�”}”(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Œinode”h]”hŒinode”…”�”}”(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³Œ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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjá†h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj݆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\eh"]”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”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”j,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&]”uh1jHhj9‡ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j>‡Œ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Œ*”…”�”}”(hjj‡h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj‡ubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjw‡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]”(jf)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj�‡h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjŒ‡ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjž‡h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjŒ‡ubjf)�”}”(hŒint”h]”hŒint”…”�”}”(hj¬‡h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjŒ‡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©)�”}”(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Ð)�”}”(hj3ˆh]”hŒstruct inode *inode”…”�”}”(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:29: ./fs/inode.c”h´M²hj-ˆubjæ)�”}”(hhh]”hÌ)�”}”(hŒinode”h]”hŒinode”…”�”}”(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``unsigned int nlink`` new nlink (should be non-zero) ”h]”(jÊ)�”}”(hŒ``unsigned int nlink``”h]”jÐ)�”}”(hjlˆh]”hŒunsigned int nlink”…”�”}”(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Œ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å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: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.”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´hjˆ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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjìˆh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjèˆ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”…”�”}”(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Œ ”…”�”}”(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.inc_nlink”†”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´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©)�”}”(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. 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().”…”�”}”(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_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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjmŠh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjiŠh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mwubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|Šh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjiŠh²hh³j{Šh´MwubjC)�”}”(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`jauh1jBhjiŠh²hh³j{Šh´Mwubj=)�”}”(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<hjiŠh²hh³j{Šh´Mwubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjeŠh²hh³j{Šh´Mwubah}”(h]”j`Šah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j{Šh´MwhjbŠh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ*add inode to the superblock list of inodes”h]”hŒ*add inode to the superblock list of inodes”…”�”}”(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*‹h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjbŠh²hh³j{Šh´Mwubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jE‹jšjE‹j›‰jœ‰j�‰uh1jh²hhjø€h³Nh´NubjŸ)�”}”(hŒ6**Parameters** ``struct inode *inode`` inode to add”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:29: ./fs/inode.c”h´M{hjI‹ubj¿)�”}”(hhh]”jÄ)�”}”(hŒ$``struct inode *inode`` inode to add”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hjn‹h]”hŒstruct inode *inode”…”�”}”(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Œ 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´Mxhj„‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjh‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jƒ‹h´M}hje‹ubah}”(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 Œ __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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÈ‹h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÄ‹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Œ ”…”�”}”(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.__insert_inode_hash”†”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Œ u64 hashval”h]”(h)�”}”(hhh]”jI)�”}”(hŒu64”h]”hŒu64”…”�”}”(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?ŒŒc.__insert_inode_hash”†”asbuh1hhjsŒubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜Œh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjsŒubjI)�”}”(hŒhashval”h]”hŒhashval”…”�”}”(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´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Ð)�”}”(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Œunhashed inode”h]”hŒunhashed 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ŒM``u64 hashval`` u64 value used to locate this object in the inode_hashtable. ”h]”(jÊ)�”}”(hŒ``u64 hashval``”h]”jÐ)�”}”(hjJ�h]”hŒ u64 hashval”…”�”}”(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:29: ./fs/inode.c”h´M�hjD�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”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”j,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”…”�”}”(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)�”}”jjù�sbŒc.__remove_inode_hash”†”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Œinode”h]”hŒinode”…”�”}”(hjlŽ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Œ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©)�”}”(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Œ$Remove an inode from the superblock.”h]”hÌ)�”}”(hj*�h]”hŒ$Remove an inode from the superblock.”…”�”}”(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³j9�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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj`�h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj\�h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mfubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjo�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj\�h²hh³jn�h´MfubjC)�”}”(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³jn�h´Mfubj=)�”}”(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³jn�h´Mfubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjX�h²hh³jn�h´Mfubah}”(h]”jS�ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jn�h´MfhjU�h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ+evict all evictable inodes for a superblock”h]”hŒ+evict all evictable inodes 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:29: ./fs/inode.c”h´Mfhj�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjU�h²hh³jn�h´Mfubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j8�jšj8�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©)�”}”(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´Mjhj<�ubj¿)�”}”(hhh]”jÄ)�”}”(hŒ4``struct super_block *sb`` superblock to operate on ”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´Mghj[�ubjæ)�”}”(hhh]”hÌ)�”}”(hŒsuperblock to operate on”h]”hŒsuperblock to operate on”…”�”}”(hjz�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jv�h´Mghjw�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj[�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jv�h´MghjX�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´Mihj<�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´Mhhj<�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Œ ”…”�”}”(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Œ new_inode”h]”jI)�”}”(hj‘h]”hŒ 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 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&]”uh1jhjW‘ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh‘h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjW‘ubh)�”}”(hhh]”jI)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(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.new_inode”†”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Œsb”h]”hŒsb”…”�”}”(hj²‘h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjW‘ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjS‘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Ð)�”}”(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”…”�”}”(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’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³Œ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”…”�”}”(hjr’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…hjn’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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj§’h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj£’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Œ ”…”�”}”(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Œ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]”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”…”�”}”(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®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ø€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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj(”h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj$”h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MÔubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7”h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj$”h²hh³j6”h´MÔubjC)�”}”(hŒlock_two_nondirectories”h]”jI)�”}”(hŒlock_two_nondirectories”h]”hŒlock_two_nondirectories”…”�”}”(hjI”h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjE”ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj$”h²hh³j6”h´MÔubj=)�”}”(hŒ,(struct inode *inode1, struct inode *inode2)”h]”(jC)�”}”(hŒstruct inode *inode1”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Œ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)�”}”jjK”sbŒc.lock_two_nondirectories”†”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Œinode1”h]”hŒinode1”…”�”}”(hj¾”h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhja”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Œ ”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÓ”ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj!•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<hj$”h²hh³j6”h´MÔubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj ”h²hh³j6”h´MÔubah}”(h]”j”ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j6”h´MÔhj”h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ+take two i_mutexes on non-directory objects”h]”hŒ+take two i_mutexes on non-directory objects”…”�”}”(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³j6”h´MÔubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jp•jšjp•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©)�”}”(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 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¾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Œ|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.”…”�”}”(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Õhjt•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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjR–h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjN–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Œunlock_two_nondirectories”h]”jI)�”}”(hŒunlock_two_nondirectories”h]”hŒunlock_two_nondirectories”…”�”}”(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 *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)�”}”jju–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Œ ”…”�”}”(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.unlock_two_nondirectories”†”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Œinode2”h]”hŒinode2”…”�”}”(hjX—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<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Œ,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&]”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Œ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”…”�”}”(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ž—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”…”�”}”(hjV˜h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjR˜h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”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Œ inode_insert5”sbŒc.inode_insert5”†”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Œ 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`jauh1jBhjR˜h²hh³jc˜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Œ ”…”�”}”(hj ™h²hh³Nh´Nubah}”(h]”h ]”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Œ u64 hashval”h]”(h)�”}”(hhh]”jI)�”}”(hŒu64”h]”hŒu64”…”�”}”(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.inode_insert5”†”asbuh1hhj<™ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hja™h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj<™ubjI)�”}”(hŒhashval”h]”hŒhashval”…”�”}”(hjo™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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjˆ™h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj„™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Œ*”…”�”}”(hj$šh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj„™ubj“)�”}”(hŒ,”h]”hŒ,”…”�”}”(hj1š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„™ubjf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjMšh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj„™ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj[šh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj„™ubj“)�”}”(hjÏ™h]”hŒ)”…”�”}”(hjhš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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj€šh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj|šubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽšh²hh³Nh´Nubah}”(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“)�”}”(hj3šh]”hŒ,”…”�”}”(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|šubjf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjB›h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj|šubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjP›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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hju›h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjq›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Œdata”h]”hŒdata”…”�”}”(hjž›h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjq›ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjȘubeh}”(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Œ*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&]”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ø€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´Mhjä›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”…”�”}”(hj"œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hË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``u64 hashval`` hash value (usually inode number) to get ”h]”(jÊ)�”}”(hŒ``u64 hashval``”h]”jÐ)�”}”(hjBœh]”hŒ u64 hashval”…”�”}”(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:29: ./fs/inode.c”h´Mhj<œ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³jWœh´MhjXœubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj<œubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jWœh´Mhjœ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Ïhjyœubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mhjuœ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åhjuœubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j�œh´Mhjœ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´Mhj®œ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´MhjÊœubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj®œubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÉœh´Mhjœ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”…”�”}”(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´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©)�”}”(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´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”…”�”}”(hjf�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj^�ubhŒ and ”…”�”}”(hj^�h²hh³Nh´Nubj©)�”}”(hŒ**data**”h]”hŒdata”…”�”}”(hjx�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´M hjä›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´MJubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjï�h²hh³jžh´MJubh)�”}”(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”sbŒc.iget5_locked”†”asbuh1hhjï�h²hh³jžh´MJubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3žh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjï�h²hh³jžh´MJubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjAžh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjï�h²hh³jžh´MJubjC)�”}”(hŒ iget5_locked”h]”jI)�”}”(hj0žh]”hŒ iget5_locked”…”�”}”(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´MJubj=)�”}”(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”…”�”}”(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Œ 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.iget5_locked”†”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Œsb”h]”hŒsb”…”�”}”(hjÄžh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjižubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjež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”†”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`jauh1jBhježubjC)�”}”(hŒ!int (*test)(struct inode*, void*)”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj%Ÿh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj!Ÿubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3Ÿ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!Ÿubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjNŸ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Œ)”…”�”}”(hjiŸh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj!Ÿubj“)�”}”(hj¦™h]”hŒ(”…”�”}”(hjvŸ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.iget5_locked”†”asbuh1hhj!Ÿubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj¿Ÿh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj!Ÿubj“)�”}”(hj3š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!Ÿubjf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjçŸh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj!Ÿ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`jauh1jBhježubjC)�”}”(hŒ int (*set)(struct inode*, void*)”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj 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 ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjC h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj ubjI)�”}”(hŒset”h]”hŒset”…”�”}”(hjP 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Œ(”…”�”}”(hjk h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjx h²hh³Nh´Nubah}”(h]”h ]”j,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.iget5_locked”†”asbuh1hhj ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj´ h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj ubj“)�”}”(hj3š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 ubjf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÜ h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj 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`jauh1jBhježubjC)�”}”(hŒ void *data”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj ¡ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”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”…”�”}”(hj8¡h²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´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Œ*obtain an inode from a mounted file system”h]”hŒ*obtain an inode from a mounted file system”…”�”}”(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´MJhj_¡h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjè�h²hh³jžh´MJubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jz¡jšjz¡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´MNhj~¡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´MKhj�¡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´MKhj¹¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj�¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¸¡h´MKhjš¡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´MLhjÖ¡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´MLhjò¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÖ¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jñ¡h´MLhjš¡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´MMhj¢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´MMhj+¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j*¢h´MMhjš¡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Ð)�”}”(hjN¢h]”hŒ"int (*set)(struct inode *, void *)”…”�”}”(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´MNhjH¢ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ.callback used to initialize a new struct inode”h]”hŒ.callback used to initialize a new struct inode”…”�”}”(hjg¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jc¢h´MNhjd¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjH¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jc¢h´MNhjš¡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´MOhj�¢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´MOhj�¢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”…”�”}”(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´MQhj~¡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”…”�”}”(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 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´MPhj~¡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().”…”�”}”(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~¡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”…”�”}”(hjB£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj:£ubhŒ and ”…”�”}”(hj:£h²hh³Nh´Nubj©)�”}”(hŒ**set**”h]”hŒset”…”�”}”(hjT£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´MYhj~¡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´Mqubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›£h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‰£h²hh³jš£h´Mqubh)�”}”(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´Mqubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍ£h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‰£h²hh³jš£h´Mqubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjÛ£h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj‰£h²hh³jš£h´MqubjC)�”}”(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´Mqubj=)�”}”(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 ]”jÈ£Œc.iget5_locked_rcu”†”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Œ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”…”�”}”(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È£Œc.iget5_locked_rcu”†”asbuh1hhjs¤ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜¤h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjs¤ubjI)�”}”(hŒhashval”h]”hŒhashval”…”�”}”(hj¦¤h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjs¤ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÿ£ubjC)�”}”(hŒ!int (*test)(struct inode*, void*)”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj¿¤h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj»¤ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjͤh²hh³Nh´Nubah}”(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”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”j,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&]”uh1jHhj8¥ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j=¥Œmodname”NŒ classname”Njj )�”}”j ]”jÈ£Œc.iget5_locked_rcu”†”asbuh1hhj»¤ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjY¥h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj»¤ubj“)�”}”(hj3šh]”hŒ,”…”�”}”(hjf¥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»¤ubjf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj�¥h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj»¤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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj´¥h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj°¥ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂ¥h²hh³Nh´Nubah}”(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”…”�”}”(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.iget5_locked_rcu”†”asbuh1hhj°¥ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjN¦h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj°¥ubj“)�”}”(hj3š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°¥ubjf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjv¦h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj°¥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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj©¦h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj¥¦ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·¦h²hh³Nh´Nubah}”(h]”h ]”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´Mqubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj…£h²hh³jš£h´Mqubah}”(h]”j€£ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jš£h´Mqhj‚£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´Mqhjù¦h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj‚£h²hh³jš£h´Mqubeh}”(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** 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©)�”}”(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´Muhj§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´Mrhj7§ubjæ)�”}”(hhh]”hÌ)�”}”(hŒsuper block of file system”h]”hŒsuper block of file system”…”�”}”(hjV§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jR§h´MrhjS§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj7§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jR§h´Mrhj4§ubjÄ)�”}”(hŒ9``u64 hashval`` hash value (usually inode number) to get ”h]”(jÊ)�”}”(hŒ``u64 hashval``”h]”jÐ)�”}”(hjv§h]”hŒ u64 hashval”…”�”}”(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:29: ./fs/inode.c”h´Mshjp§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´MshjŒ§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjp§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j‹§h´Mshj4§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´Mthj©§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´Mthjŧubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj©§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jħh´Mthj4§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´Muhjâ§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´Muhjþ§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjâ§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jý§h´Muhj4§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´Mvhj¨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”…”�”}”(hjB¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj:¨ubhŒ and ”…”�”}”(hj:¨h²hh³Nh´Nubj©)�”}”(hŒ**set**”h]”hŒset”…”�”}”(hjT¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj:¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j6¨h´Mvhj7¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j6¨h´Mvhj4§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¨hjz¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mxhj§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´Mwhj§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Œ ”…”�”}”(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Œ iget_locked”h]”jI)�”}”(hj©h]”hŒ iget_locked”…”�”}”(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´Mžubj=)�”}”(hŒ!(struct super_block *sb, u64 ino)”h]”(jC)�”}”(hŒstruct super_block *sb”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Œ super_block”h]”hŒ super_block”…”�”}”(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.iget_locked”†”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Œsb”h]”hŒsb”…”�”}”(hj¤©h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjI©ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjE©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 ]”j©Œ 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`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Œ*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™j.ªjšj.ª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©)�”}”(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Œ6``struct super_block *sb`` super block of file system ”h]”(jÊ)�”}”(hŒ``struct super_block *sb``”h]”jÐ)�”}”(hjWªh]”hŒstruct super_block *sb”…”�”}”(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Œsuper block of file system”h]”hŒsuper block of file system”…”�”}”(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Œ ``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 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ŒÝ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¡hj2ª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¥hj2ª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”…”�”}”(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Œiunique”sbŒ c.iunique”†”asbuh1hhj-«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&]”uh1j1hj-«h²hh³jU«h´MÿubjC)�”}”(hŒiunique”h]”jI)�”}”(hjR«h]”hŒiunique”…”�”}”(hjh«h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjd«ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj-«h²hh³jU«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 ]”jP«Œ 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 ]”jP«Œ c.iunique”†”asbuh1hhjï«ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjï«ubjI)�”}”(hŒ max_reserved”h]”hŒ max_reserved”…”�”}”(hj"¬h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjï«ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jB•hj{«ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj-«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Œget a unique inode number”h]”hŒget a unique inode number”…”�”}”(hjL¬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ÿhjI¬h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj&«h²hh³jU«h´Mÿubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jd¬jšjd¬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©)�”}”(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:29: ./fs/inode.c”h´Mhjh¬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´Mhj‡¬ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ superblock”h]”hŒ superblock”…”�”}”(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Œ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´MhjÀ¬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´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¨hjÿ¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´Mhjh¬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´Mhj­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.”…”�”}”(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­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jœ�h³j)­h´Mhjh¬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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj_­h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj[­h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.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Œ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³jm­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.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³jm­h´M&ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjW­h²hh³jm­h´M&ubah}”(h]”jR­ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jm­h´M&hjT­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”…”�”}”(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&]”uh1jvhjT­h²hh³jm­h´M&ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j7®jšj7®j›‰jœ‰j�‰uh1jh²hhjø€h³Nh´NubjŸ)�”}”(hŒ=**Parameters** ``struct inode *inode`` inode to operate on”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³Œ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 operate on”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³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M,hjZ®ubjæ)�”}”(hhh]”hÌ)�”}”(hŒinode to operate on”h]”hŒinode to operate on”…”�”}”(hjy®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®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjZ®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³ju®h´M,hjW®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´Mqubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈ®h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¶®h²hh³jÇ®h´Mqubh)�”}”(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´Mqubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjú®h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¶®h²hh³jÇ®h´Mqubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj¶®h²hh³jÇ®h´MqubjC)�”}”(hŒilookup5_nowait”h]”jI)�”}”(hj÷®h]”hŒilookup5_nowait”…”�”}”(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´Mqubj=)�”}”(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”…”�”}”(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Œ super_block”h]”hŒ super_block”…”�”}”(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.ilookup5_nowait”†”asbuh1hhj0¯ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjp¯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Œsb”h]”hŒsb”…”�”}”(hj‹¯h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj0¯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_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`jauh1jBhj,¯ubjC)�”}”(hŒ!int (*test)(struct inode*, void*)”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjì¯h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjè¯ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjú¯h²hh³Nh´Nubah}”(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Œ)”…”�”}”(hj0°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”…”�”}”(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Œinode”h]”hŒinode”…”�”}”(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.ilookup5_nowait”†”asbuh1hhjè¯ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj†°h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjè¯ubj“)�”}”(hj3š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è¯ubjf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj®°h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjè¯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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjá°h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjݰubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjï°h²hh³Nh´Nubah}”(h]”h ]”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Œ bool *isnew”h]”(jf)�”}”(hjih]”hŒbool”…”�”}”(hj#±h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj±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Œisnew”h]”hŒisnew”…”�”}”(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´Mqubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj²®h²hh³jÇ®h´Mqubah}”(h]”j­®ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÇ®h´Mqhj¯®h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ&search for an inode in the inode cache”h]”hŒ&search for an inode in the inode cache”…”�”}”(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´Mqhjr±h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj¯®h²hh³jÇ®h´Mqubeh}”(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´Muhj‘±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´Mrhj°±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´Mrhj̱ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj°±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j˱h´Mrhj­±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´Mshjé±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´Mshj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjé±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j²h´Mshj­±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´Mthj"²ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ,callback used for comparisons between inodes”h]”hŒ,callback used for comparisons between inodes”…”�”}”(hjA²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Œ7``void *data`` opaque data pointer to pass to **test** ”h]”(jÊ)�”}”(hŒ``void *data``”h]”jÐ)�”}”(hja²h]”hŒ void *data”…”�”}”(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´Muhj[²ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ'opaque data pointer to pass to **test**”h]”(hŒopaque data pointer to pass to ”…”�”}”(hjz²h²hh³Nh´Nubj©)�”}”(hŒ**test**”h]”hŒtest”…”�”}”(hj‚²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjz²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jv²h´Muhjw²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj[²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jv²h´Muhj­±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´Mxhj¢²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´Mvhj¾²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:29: ./fs/inode.c”h´Mzhj‘±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”…”�”}”(hj³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´Myhj‘±ubhÌ)�”}”(hŒ**Note**”h]”j©)�”}”(hj/³h]”hŒNote”…”�”}”(hj1³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ŒŽ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.”…”�”}”(hjE³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: ”…”�”}”(hjT³h²hh³Nh´Nubj©)�”}”(hŒ**test**”h]”hŒtest”…”�”}”(hj\³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjT³ubhŒ; is called with the inode_hash_lock held, so can’t sleep.”…”�”}”(hjT³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”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”j,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.ilookup5”†”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Œsb”h]”hŒsb”…”�”}”(hjf´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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjÇ´h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjôubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕ´h²hh³Nh´Nubah}”(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”…”�”}”(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.ilookup5”†”asbuh1hhjôubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjaµh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjôubj“)�”}”(hj3šh]”hŒ,”…”�”}”(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ôubjf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj‰µh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjô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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¼µh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj¸µubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjʵh²hh³Nh´Nubah}”(h]”h ]”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”…”�”}”(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`` 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©)�”}”(hj1¶h]”hŒ Parameters”…”�”}”(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+¶ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ@``struct super_block *sb`` super block of file system to search ”h]”(jÊ)�”}”(hŒ``struct super_block *sb``”h]”jÐ)�”}”(hjP¶h]”hŒstruct super_block *sb”…”�”}”(hjR¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjN¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M“hjJ¶ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ$super block of file system to search”h]”hŒ$super block of file system to search”…”�”}”(hji¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³je¶h´M“hjf¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjJ¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³je¶h´M“hjG¶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”hjG¶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•hjG¶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–hjG¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj+¶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³Œ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 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 ”…”�”}”(hjZ·h²hh³Nh´Nubj©)�”}”(hŒ **hashval**”h]”hŒhashval”…”�”}”(hjb·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjZ·ubhŒ and ”…”�”}”(hjZ·h²hh³Nh´Nubj©)�”}”(hŒ**data**”h]”hŒdata”…”�”}”(hjt·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjZ·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.”…”�”}”(hjZ·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Œ‹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œhj+¶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Ÿhj+¶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 hj+¶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”…”�”}”(hj¸h²hh³Nh´Nubah}”(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Œilookup”sbŒ c.ilookup”†”asbuh1hhjí·h²hh³jþ·h´M¹ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1¸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Œilookup”h]”jI)�”}”(hj.¸h]”hŒilookup”…”�”}”(hjP¸h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjL¸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”…”�”}”(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¸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.ilookup”†”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Œsb”h]”hŒsb”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjg¸ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjc¸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 ]”j,¸Œ 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`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Œ&search for an inode in the inode cache”h]”hŒ&search for an inode in the inode cache”…”�”}”(hj4¹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¹hj1¹h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjæ·h²hh³jþ·h´M¹ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jL¹jšjL¹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©)�”}”(hjV¹h]”hŒ Parameters”…”�”}”(hjX¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjT¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M½hjP¹ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ@``struct super_block *sb`` super block of file system to search ”h]”(jÊ)�”}”(hŒ``struct super_block *sb``”h]”jÐ)�”}”(hju¹h]”hŒstruct super_block *sb”…”�”}”(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:29: ./fs/inode.c”h´Mºhjo¹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åhjo¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jйh´Mºhjl¹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»hjl¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjP¹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½hjP¹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¼hjP¹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”…”�”}”(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Œ ”…”�”}”(hjNºh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj<ºh²hh³jMº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”jaºŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒfind_inode_nowait”sbŒc.find_inode_nowait”†”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Œ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³jMº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”…”�”}”(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.find_inode_nowait”†”asbuh1hhj&»ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjK»h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj&»ubjI)�”}”(hŒhashval”h]”hŒhashval”…”�”}”(hjY»h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj&»ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj²ºubjC)�”}”(hŒ'int (*match)(struct inode*, u64, void*)”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjr»h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjn»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»ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj›»h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjn»ubjI)�”}”(hŒmatch”h]”hŒmatch”…”�”}”(hj¨»h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjn»ubj“)�”}”(hjÏ™h]”hŒ)”…”�”}”(hj¶»h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjn»ubj“)�”}”(hj¦™h]”hŒ(”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjn»ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjл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.find_inode_nowait”†”asbuh1hhjn»ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj ¼h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjn»ubj“)�”}”(hj3šh]”hŒ,”…”�”}”(hj¼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»ubh)�”}”(hhh]”jI)�”}”(hŒu64”h]”hŒu64”…”�”}”(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.find_inode_nowait”†”asbuh1hhjn»ubj“)�”}”(hj3šh]”hŒ,”…”�”}”(hjU¼h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjn»ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjb¼h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjn»ubjf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjp¼h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjn»ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj~¼h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjn»ubj“)�”}”(hjÏ™h]”hŒ)”…”�”}”(hj‹¼h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjn»ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj²ºubjC)�”}”(hŒ void *data”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj£¼h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjŸ¼ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±¼h²hh³Nh´Nubah}”(h]”h ]”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³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Œ 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&]”uh1jvhj5ºh²hh³jMº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 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** funtion 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Þ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Ð)�”}”(hj7½h]”hŒstruct super_block *sb”…”�”}”(hj9½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj5½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MÛhj1½ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ$super block of file system to search”h]”hŒ$super block of file system to search”…”�”}”(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Ûhj.½ubjÄ)�”}”(hŒ@``u64 hashval`` hash value (usually inode number) to search for ”h]”(jÊ)�”}”(hŒ``u64 hashval``”h]”jÐ)�”}”(hjp½h]”hŒ u64 hashval”…”�”}”(hjr½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjn½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MÜhjj½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åhjj½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j…½h´MÜhj.½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Ýhj.½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Þ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Ì)�”}”(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 ”…”�”}”(hjA¾h²hh³Nh´Nubj©)�”}”(hŒ **hashval**”h]”hŒhashval”…”�”}”(hjI¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjA¾ubhŒ and ”…”�”}”(hjA¾h²hh³Nh´Nubj©)�”}”(hŒ**data**”h]”hŒdata”…”�”}”(hj[¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjA¾ubhŒ/ in the inode cache, where the helper function ”…”�”}”(hjA¾h²hh³Nh´Nubj©)�”}”(hŒ **match**”h]”hŒmatch”…”�”}”(hjm¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjA¾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 ”…”�”}”(hjA¾h²hh³Nh´Nubj©)�”}”(hŒ **match**”h]”hŒmatch”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjA¾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.”…”�”}”(hjA¾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Ì)�”}”(hXYThis 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** funtion 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Œ, funtion 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è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_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´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Œfind_inode_rcu”sbŒc.find_inode_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Œfind_inode_rcu”h]”jI)�”}”(hj¿h]”hŒfind_inode_rcu”…”�”}”(hj8¿h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj4¿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”…”�”}”(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Œ 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.find_inode_rcu”†”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Œsb”h]”hŒsb”…”�”}”(hjª¿h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjO¿ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjK¿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.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`jauh1jBhjK¿ubjC)�”}”(hŒ!int (*test)(struct inode*, void*)”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj Àh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÀubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀh²hh³Nh´Nubah}”(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Œ*”…”�”}”(hj4Àh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjÀubjI)�”}”(hŒtest”h]”hŒtest”…”�”}”(hjAÀh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÀubj“)�”}”(hjÏ™h]”hŒ)”…”�”}”(hjOÀ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”…”�”}”(hj‡Àh²hh³Nh´Nubah}”(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_rcu”†”asbuh1hhjÀubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj¥Àh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjÀubj“)�”}”(hj3š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Àubjf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÍÀh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÀ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`jauh1jBhjK¿ubjC)�”}”(hŒ void *data”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjüÀubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”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`jauh1jBhjK¿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Œ find an inode in the inode cache”h]”hŒ find an inode in the inode cache”…”�”}”(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 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™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`` 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©)�”}”(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´MhjoÁ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`` 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”…”�”}”(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Œ&``void *data`` Data for test function ”•Wh]”(jÊ)�”}”(hŒ``void *data``”h]”jÐ)�”}”(hj?Âh]”hŒ void *data”…”�”}”(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:29: ./fs/inode.c”h´Mhj9Âubjæ)�”}”(hhh]”hÌ)�”}”(hŒData for test function”h]”hŒData for test function”…”�”}”(hjXÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jTÂh´MhjUÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj9Âubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jTÂh´Mhj‹Áubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjoÁ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³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MhjoÁ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´MhjoÁ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´MhjoÁ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´MhjoÁ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´MhjoÁ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”…”�”}”(hjXÃh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjTÃh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M4ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfÃh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjTÃh²hh³jeÃh´M4ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(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)�”}”jŒfind_inode_by_ino_rcu”sbŒc.find_inode_by_ino_rcu”†”asbuh1hhjTÃh²hh³jeÃh´M4ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜Ãh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjTÃh²hh³jeÃh´M4ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj¦Ãh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjTÃh²hh³jeÃh´M4ubjC)�”}”(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`jauh1jBhjTÃh²hh³jeÃh´M4ubj=)�”}”(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Œ ”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”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”…”�”}”(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.find_inode_by_ino_rcu”†”asbuh1hhj>Äubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjcÄh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj>ÄubjI)�”}”(hŒino”h]”hŒino”…”�”}”(hjqÄ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³jeÃh´M4ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjPÃh²hh³jeÃh´M4ubah}”(h]”jKÃah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jeÃh´M4hjMÃ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´M4hj˜Äh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjMÃh²hh³jeÃh´M4ubeh}”(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´M8hj·Ä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´M5hjÖÄ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´M5hjòÄubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÖÄubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jñÄh´M5hjÓÄubjÄ)�”}”(hŒ&``u64 ino`` The inode number to match ”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´M6hjÅubjæ)�”}”(hhh]”hÌ)�”}”(hŒThe inode number to match”h]”hŒThe inode number to match”…”�”}”(hj.Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j*Åh´M6hj+Åubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÅubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j*Åh´M6hjÓÄ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:29: ./fs/inode.c”h´M8hj·Ä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 ”…”�”}”(hjfÅh²hh³Nh´Nubj©)�”}”(hŒ **hashval**”h]”hŒhashval”…”�”}”(hjnÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjfÅubhŒ and ”…”�”}”(hjfÅh²hh³Nh´Nubj©)�”}”(hŒ**data**”h]”hŒdata”…”�”}”(hj€Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjfÅubhŒ/ in the inode cache, where the helper function ”…”�”}”(hjfÅh²hh³Nh´Nubj©)�”}”(hŒ**test**”h]”hŒtest”…”�”}”(hj’Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjfÅubhŒB will return 0 if the inode does not match and 1 if it does. The ”…”�”}”(hjfÅh²hh³Nh´Nubj©)�”}”(hŒ**test**”h]”hŒtest”…”�”}”(hj¤Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjfÅubhŒ� function must be responsible for taking the i_lock spin_lock and checking i_state for an inode being freed or being initialized.”…”�”}”(hjfÅ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´M7hj·Ä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”…”�”}”(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´M@hj·Ä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´MChj·Ä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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj.Æh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj*Æ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Œiput”h]”jI)�”}”(hŒiput”h]”hŒiput”…”�”}”(hjOÆh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjKÆ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”…”�”}”(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Æ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)�”}”jjQÆsbŒc.iput”†”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Œinode”h]”hŒinode”…”�”}”(hjÄÆh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjgÆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjcÆ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Œ 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&]”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 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©)�”}”(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”…”�”}”(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:29: ./fs/inode.c”h´Mãhj)Çubjæ)�”}”(hhh]”hÌ)�”}”(hŒ inode to put”h]”hŒ inode to put”…”�”}”(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ãhj&Çubah}”(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: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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÈÇh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÄÇ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Œ ”…”�”}”(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.iput_not_last”†”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ýÇ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´Mhj¤È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´MhjÃÈ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´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¤È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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj#Éh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÉh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M"ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2Éh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÉh²hh³j1Éh´M"ubjC)�”}”(hŒbmap”h]”jI)�”}”(hŒbmap”h]”hŒbmap”…”�”}”(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´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Œ ”…”�”}”(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)�”}”jjFÉ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`jauh1jBhjXÉ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”…”�”}”(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´M"ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjÉh²hh³j1Éh´M"ubah}”(h]”jÉah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j1Éh´M"hjÉh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒfind a block number in a file”h]”hŒfind a block number in a file”…”�”}”(hj8Ê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Êh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÉh²hh³j1Éh´M"ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jPÊjšjPÊ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©)�”}”(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ŒF``struct inode *inode`` inode owning the block number being requested ”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³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M#hjsÊ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åhjsÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jŽÊh´M#hjpÊ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$hjpÊ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Ê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”…”�”}”(hjË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”…”�”}”(hj!Ë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´M%hjË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”…”�”}”(hjBË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´M+hjËubeh}”(h]”h ]”h"]”h$]”h&]”uh1jœ�h³j9Ë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 Œ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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj�Ëh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj}Ë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”…”�”}”(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Œfs_update_time”h]”hŒfs_update_time”…”�”}”(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øËŒc.inode_update_time”†”asbuh1hhj,Ìubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjlÌh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj,ÌubjI)�”}”(hŒtype”h]”hŒtype”…”�”}”(hjzÌ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]”(jf)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj“Ìh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj�Ìubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡Ìh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj�Ìubjf)�”}”(hŒint”h]”hŒint”…”�”}”(hj¯Ìh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj�Ì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ˆ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Œ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&]”uh1jvhjvË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 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¨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Ð)�”}”(hj6Íh]”hŒstruct inode *inode”…”�”}”(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:29: ./fs/inode.c”h´M—hj0Íubjæ)�”}”(hhh]”hÌ)�”}”(hŒinode to be updated”h]”hŒinode to be updated”…”�”}”(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Œ5``enum fs_update_time type`` timestamp to be updated ”h]”(jÊ)�”}”(hŒ``enum fs_update_time type``”h]”jÐ)�”}”(hjoÍh]”hŒenum fs_update_time type”…”�”}”(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:29: ./fs/inode.c”h´M˜hjiÍ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åhjiÍ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Œ¡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šhjÍ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žhjÍ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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj7Îh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj3Îh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M³ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFÎh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj3Îh²hh³jEÎh´M³ubjC)�”}”(hŒgeneric_update_time”h]”jI)�”}”(hŒgeneric_update_time”h]”hŒgeneric_update_time”…”�”}”(hjXÎh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjTÎubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj3Îh²hh³jEÎ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”…”�”}”(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Î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)�”}”jjZÎsbŒc.generic_update_time”†”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Œinode”h]”hŒinode”…”�”}”(hjÍÎh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjpÎubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjlÎ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Œ ”…”�”}”(hj"Ïh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjâÎubjI)�”}”(hŒtype”h]”hŒtype”…”�”}”(hj0Ïh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjâÎubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjlÎubjC)�”}”(hŒunsigned int flags”h]”(jf)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjIÏh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjEÏubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWÏh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjEÏubjf)�”}”(hŒint”h]”hŒint”…”�”}”(hjeÏh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjEÏubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjsÏh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjEÏubjI)�”}”(hŒflags”h]”hŒflags”…”�”}”(hj�Ïh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjEÏubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjlÎubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj3Îh²hh³jEÎh´M³ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj/Îh²hh³jEÎh´M³ubah}”(h]”j*Îah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jEÎh´M³hj,Î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&]”uh1jvhj,Îh²hh³jEÎ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Ð)�”}”(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µ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¶hjXÐubjæ)�”}”(hhh]”hÌ)�”}”(hŒflags for the update”h]”hŒflags for the update”…”�”}”(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ÇÏ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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjÞÐh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÚÐ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_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´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”…”�”}”(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.file_remove_privs”†”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Œfile”h]”hŒfile”…”�”}”(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´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Œ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´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 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´Mb 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´M_ 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´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´Ma 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.”…”�”}”(hj0Ò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©)�”}”(hjAÒh]”hŒReturn”…”�”}”(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:29: ./fs/inode.c”h´Mc hjºÑubhÌ)�”}”(hŒ(0 on success, negative errno on failure.”h]”hŒ(0 on success, negative errno on failure.”…”�”}”(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´Md 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´Mm ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”Òh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‚Òh²hh³j“Òh´Mm 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´Mm ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆÒh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‚Òh²hh³j“Òh´Mm 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´Mm 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.current_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”…”�”}”(hjJÓ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´Mm ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj~Òh²hh³j“Òh´Mm ubah}”(h]”jyÒah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j“Òh´Mm hj{Òh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ&Return FS time (possibly fine-grained)”h]”hŒ&Return FS time (possibly fine-grained)”…”�”}”(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´Mm hjqÓh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj{Òh²hh³j“Òh´Mm 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´Mq 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´Mn hj¯Óubjæ)�”}”(hhh]”hÌ)�”}”(hŒinode.”h]”hŒinode.”…”�”}”(hjÎÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÊÓh´Mn hjËÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¯Óubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÊÓh´Mn 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´Mp 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´Mo 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().”…”�”}”(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´Mt 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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjDÔh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj@Ôh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M¸ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSÔh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj@Ôh²hh³jRÔh´M¸ ubjC)�”}”(hŒfile_update_time”h]”jI)�”}”(hŒfile_update_time”h]”hŒfile_update_time”…”�”}”(hjeÔh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjaÔubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj@Ôh²hh³jRÔ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)�”}”jjgÔ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`jauh1jBhjyÔubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj@Ôh²hh³jRÔh´M¸ ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj<Ôh²hh³jRÔh´M¸ ubah}”(h]”j7Ôah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jRÔh´M¸ hj9Ô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&]”uh1jvhj9Ôh²hh³jRÔ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©)�”}”(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 accessed ”h]”(jÊ)�”}”(hŒ``struct file *file``”h]”jÐ)�”}”(hjEÕh]”hŒstruct file *file”…”�”}”(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Œ file accessed”h]”hŒ file accessed”…”�”}”(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<Õ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Ì)�”}”(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º 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 Œ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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjìÕh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjèÕ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”…”�”}”(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)”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Œ ”…”�”}”(hj6Öh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj%Öubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(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.file_modified”†”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Œ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<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©)�”}”(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.”…”�”}”(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Œ **Context**”h]”j©)�”}”(hjO×h]”hŒContext”…”�”}”(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î hjÈÖubhÌ)�”}”(hŒ'Caller must hold the file's inode lock.”h]”hŒ)Caller must hold the file’s inode lock.”…”�”}”(hje×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©)�”}”(hjv×h]”hŒReturn”…”�”}”(hjx×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjt×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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj»×h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj·×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&]”uh1jHhjØ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Œ ”…”�”}”(hj6Ø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Œiocb”h]”hŒiocb”…”�”}”(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Œ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ú hjxØ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.”…”�”}”(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Œ **Context**”h]”j©)�”}”(hjÙh]”hŒContext”…”�”}”(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Œ'Caller must hold the file's inode lock.”h]”hŒ)Caller must hold the file’s inode lock.”…”�”}”(hj4Ù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©)�”}”(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´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Œkvoid inode_init_owner (struct mnt_idmap *idmap, struct inode *inode, const struct inode *dir, umode_t mode)”h]”j)�”}”(hŒjvoid inode_init_owner(struct mnt_idmap *idmap, struct inode *inode, const struct inode *dir, umode_t mode)”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjŠÙh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj†Ù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ŒU(struct mnt_idmap *idmap, struct inode *inode, const struct inode *dir, umode_t mode)”h]”(jC)�”}”(hŒstruct mnt_idmap *idmap”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Œ 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Œ ”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”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”…”�”}”(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Œinode”h]”hŒinode”…”�”}”(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ÚŒc.inode_init_owner”†”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Œinode”h]”hŒinode”…”�”}”(hj�Úh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj5Úubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¿ÙubjC)�”}”(hŒconst struct inode *dir”h]”(j )�”}”(hj¾h]”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Œ*”…”�”}”(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Œ umode_t mode”h]”(h)�”}”(hhh]”jI)�”}”(hŒumode_t”h]”hŒumode_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.inode_init_owner”†”asbuh1hhj0Ûubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUÛh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj0ÛubjI)�”}”(hŒmode”h]”hŒmode”…”�”}”(hjcÛh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj0Û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ŒÜ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ŒDirectory inode”h]”hŒDirectory inode”…”�”}”(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ÅÛubjÄ)�”}”(hŒ'``umode_t mode`` mode of the new inode ”h]”(jÊ)�”}”(hŒ``umode_t mode``”h]”jÐ)�”}”(hjyÜh]”hŒ umode_t mode”…”�”}”(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:29: ./fs/inode.c”h´M– hjsÜubjæ)�”}”(hhh]”hÌ)�”}”(hŒmode of the new inode”h]”hŒmode of the new 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ÅÛ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Ì)�”}”(hXoIf the inode has been created 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 and initializing i_uid and i_gid. On non-idmapped mounts or if permission checking is to be performed on the raw inode simply pass **nop_mnt_idmap**.”h]”(hŒiIf the inode has been created 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 and initializing i_uid and i_gid. 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_owner_or_capable (C function)”Œc.inode_owner_or_capable”hNt”auh1hýhjø€h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒPbool inode_owner_or_capable (struct mnt_idmap *idmap, const struct inode *inode)”h]”j)�”}”(hŒObool inode_owner_or_capable(struct mnt_idmap *idmap, const struct inode *inode)”h]”(jf)�”}”(hjih]”hŒbool”…”�”}”(hj/Ýh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj+Ý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_owner_or_capable”h]”jI)�”}”(hŒinode_owner_or_capable”h]”hŒinode_owner_or_capable”…”�”}”(hjOÝh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjKÝubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj+Ýh²hh³j<Ýh´M¯ ubj=)�”}”(hŒ4(struct mnt_idmap *idmap, const struct inode *inode)”h]”(jC)�”}”(hŒstruct mnt_idmap *idmap”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(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Ý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)�”}”jjQÝsbŒc.inode_owner_or_capable”†”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Œconst struct inode *inode”h]”(j )�”}”(hj¾h]”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_owner_or_capable”†”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Œinode”h]”hŒinode”…”�”}”(hjOÞh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÙÝ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Œ'check current task permissions to inode”h]”hŒ'check current task permissions to inode”…”�”}”(hjyÞ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Þ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 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ŒH``struct mnt_idmap *idmap`` idmap of the mount the inode was found from ”h]”(jÊ)�”}”(hŒ``struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjºÞh]”hŒ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Ð)�”}”(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³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´M± hjíÞubjæ)�”}”(hhh]”hÌ)�”}”(hŒinode being checked”h]”hŒinode being checked”…”�”}”(hj ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hË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”…”�”}”(hj0ß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.”…”�”}”(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Ì)�”}”(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 ”…”�”}”(hjSßh²hh³Nh´Nubj©)�”}”(hŒ **idmap**”h]”hŒidmap”…”�”}”(hj[ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjSßubhŒB. This function will then take care to map the inode according to ”…”�”}”(hjSßh²hh³Nh´Nubj©)�”}”(hŒ **idmap**”h]”hŒidmap”…”�”}”(hjmßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjSßubhŒ before checking permissions. On non-idmapped mounts or if permission checking is to be performed on the raw inode simply pass ”…”�”}”(hjSßh²hh³Nh´Nubj©)�”}”(hŒ**nop_mnt_idmap**”h]”hŒ nop_mnt_idmap”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjSßubhŒ.”…”�”}”(hjSß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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¸ßh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj´ß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”…”�”}”(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.inode_dio_wait”†”asbuh1hhjñßubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3à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´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”…”�”}”(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™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©)�”}”(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Œ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.”…”�”}”(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Œ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.”…”�”}”(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 Œ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”…”�”}”(hjHáh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjDá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&]”uh1j1hjDáh²hh³jUáh´M ubh)�”}”(hhh]”jI)�”}”(hŒ timespec64”h]”hŒ timespec64”…”�”}”(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)�”}”jŒtimestamp_truncate”sbŒc.timestamp_truncate”†”asbuh1hhjDáh²hh³jUáh´M ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆáh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjDáh²hh³jUá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`jauh1jBhjDáh²hh³jUá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Œ ”…”�”}”(hjñáh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj±áubjI)�”}”(hŒt”h]”hŒt”…”�”}”(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”…”�”}”(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.timestamp_truncate”†”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Œinode”h]”hŒinode”…”�”}”(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<hjDá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Œ"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³jUá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Ð)�”}”(hjÚâh]”hŒstruct timespec64 t”…”�”}”(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ŒTimespec”h]”hŒTimespec”…”�”}”(hjóâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hË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`` inode being 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 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å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©)�”}”(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Œ­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).”…”�”}”(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µâ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´M5 ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡ãh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj�ãh²hh³j ãh´M5 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´M5 ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓãh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj�ãh²hh³j ãh´M5 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´M5 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.inode_set_ctime_current”†”asbuh1hhjüã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Œinode”h]”hŒinode”…”�”}”(hjWä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´M5 ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj‹ãh²hh³j ãh´M5 ubah}”(h]”j†ãah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j ãh´M5 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´M5 hj~äh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjˆãh²hh³j ãh´M5 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´M9 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´M6 hj¼äubjæ)�”}”(hhh]”hÌ)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjÛäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j×äh´M6 hjØäubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¼äubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j×äh´M6 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´M8 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.”…”�”}”(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´M7 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´M; 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.”…”�”}”(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�ä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Œ ”…”�”}”(hjnåh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj\åh²hh³jmå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³jmåh´M‡ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj åh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj\åh²hh³jmå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³jmå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Œ ”…”�”}”(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_set_ctime_deleg”†”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 timespec64 update”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(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æubh)�”}”(hhh]”jI)�”}”(hŒ timespec64”h]”hŒ timespec64”…”�”}”(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.inode_set_ctime_deleg”†”asbuh1hhj9æubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyæh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj9æubjI)�”}”(hŒupdate”h]”hŒupdate”…”�”}”(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<hj\åh²hh³jmåh´M‡ ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjXåh²hh³jmåh´M‡ ubah}”(h]”jSåah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jmåh´M‡ hjUå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&]”uh1jvhjUåh²hh³jmå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Ð)�”}”(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 update”h]”hŒ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ˆ hjéæ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”…”�”}”(hjDçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j@çh´M‰ hjAç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: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Œ^bool in_group_or_capable (struct mnt_idmap *idmap, const struct inode *inode, vfsgid_t vfsgid)”h]”j)�”}”(hŒ]bool in_group_or_capable(struct mnt_idmap *idmap, const struct inode *inode, vfsgid_t vfsgid)”h]”(jf)�”}”(hjih]”hŒbool”…”�”}”(hjØçh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÔç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”…”�”}”(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ŒE(struct mnt_idmap *idmap, const struct inode *inode, vfsgid_t vfsgid)”h]”(jC)�”}”(hŒstruct mnt_idmap *idmap”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Œ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(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)�”}”jjúçsbŒ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Œidmap”h]”hŒidmap”…”�”}”(hjmè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 )�”}”(hj¾h]”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 ]”jNèŒc.in_group_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Œ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Œ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 ]”jNèŒc.in_group_or_capable”†”asbuh1hhj éubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2é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`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 caller is CAP_FSETID privileged”h]”hŒ-check whether caller is CAP_FSETID privileged”…”�”}”(hjjé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Ð 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™j‚éjšj‚éj›‰jœ‰j�‰uh1jh²hhjø€h³Nh´NubjŸ)�”}”(hXë**Parameters** ``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ŒH``struct mnt_idmap *idmap`` idmap of the mount **inode** was found from ”h]”(jÊ)�”}”(hŒ``struct mnt_idmap *idmap``”h]”jÐ)�”}”(hj«éh]”hŒ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 ”…”�”}”(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´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 check ”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³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:29: ./fs/inode.c”h´MÒ hjðé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åhjðé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”…”�”}”(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:29: ./fs/inode.c”h´MÓ hj)êubjæ)�”}”(hhh]”hÌ)�”}”(hŒ#the new/current vfsgid of **inode**”h]”(hŒthe new/current vfsgid of ”…”�”}”(hjHêh²hh³Nh´Nubj©)�”}”(hŒ **inode**”h]”hŒinode”…”�”}”(hjPêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjHêubeh}”(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Ó hj¢éubeh}”(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³Œ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©)�”}”(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Œah"]”h$]”h&]”uh1j1hjë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`jauh1jBhjëh²hh³j,ëh´Mç ubj=)�”}”(hŒ@(struct mnt_idmap *idmap, const struct inode *dir, umode_t mode)”h]”(jC)�”}”(hŒstruct mnt_idmap *idmap”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Œ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(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.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Œidmap”h]”hŒidmap”…”�”}”(hj±ëh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjVëubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjRëubjC)�”}”(hŒconst struct inode *dir”h]”(j )�”}”(hj¾h]”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.mode_strip_sgid”†”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`jauh1jBhjRë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'ëŒc.mode_strip_sgid”†”asbuh1hhjQìubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvì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`jauh1jBhjRë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 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&]”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 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”…”�”}”(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ŒJ``struct mnt_idmap *idmap`` idmap of the mount the inode was created from ”h]”(jÊ)�”}”(hŒ``struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjïìh]”hŒ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 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åhjéìubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jíh´Mè hjæì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”…”�”}”(hjAíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hË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`` mode of the file to be created in **dir** ”h]”(jÊ)�”}”(hŒ``umode_t mode``”h]”jÐ)�”}”(hjaíh]”hŒ umode_t mode”…”�”}”(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Œ)mode of the file to be created in **dir**”h]”(hŒ"mode of the file to be created in ”…”�”}”(hjzíh²hh³Nh´Nubj©)�”}”(hŒ**dir**”h]”hŒdir”…”�”}”(hj‚íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjzíubeh}”(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ê 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Ì)�”}”(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 ”…”�”}”(hjÀíh²hh³Nh´Nubj©)�”}”(hŒ**mode**”h]”hŒmode”…”�”}”(hjÈíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÀíubhŒA of the new file has both the S_ISGID and S_IXGRP bit raised and ”…”�”}”(hjÀíh²hh³Nh´Nubj©)�”}”(hŒ**dir**”h]”hŒdir”…”�”}”(hjÚíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÀí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 ”…”�”}”(hjÀíh²hh³Nh´Nubj©)�”}”(hŒ**mode**”h]”hŒmode”…”�”}”(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Êì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Œ 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ò hjÊì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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjLîh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjHî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Œ dump_inode”h]”jI)�”}”(hŒ dump_inode”h]”hŒ dump_inode”…”�”}”(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 *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”…”�”}”(hj§îh²hh³Nh´Nubah}”(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.dump_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�îubjC)�”}”(hŒconst char *reason”h]”(j )�”}”(hj¾h]”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÷îubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj÷î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Œ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<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Œdump an inode.”h]”hŒdump an inode.”…”�”}”(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 hjfï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Ÿ)�”}”(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Ï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 dump”h]”hŒ inode to dump”…”�”}”(hjÃïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hË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 *reason`` reason for dumping ”h]”(jÊ)�”}”(hŒ``const char *reason``”h]”jÐ)�”}”(hjãïh]”hŒconst char *reason”…”�”}”(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Œ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å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Œ�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().”…”�”}”(hj4ð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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjcðh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj_ðh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:32: ./fs/bad_inode.c”h´KÇubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrðh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj_ðh²hh³jqð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³jqð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.make_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<hj_ðh²hh³jqðh´KÇubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj[ðh²hh³jqðh´KÇubah}”(h]”jVðah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jqðh´KÇhjXð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&]”uh1jvhjXðh²hh³jqð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©)�”}”(hjEñh]”hŒ Parameters”…”�”}”(hjGñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjCñ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Ð)�”}”(hjdñh]”hŒstruct inode *inode”…”�”}”(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: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³jyñh´KÈhjzñubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj^ñubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jyñ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³Œ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.”…”�”}”(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É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]”(jf)�”}”(hjih]”hŒbool”…”�”}”(hjîñh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjêñ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Œ 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`jauh1jBhjêñ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Œ ”…”�”}”(hj7òh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj&òubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(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)�”}”jjòsbŒc.is_bad_inode”†”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Œ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Œ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&]”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Ÿ)�”}”(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”…”�”}”(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 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ãhjèò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å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³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:32: ./fs/bad_inode.c”h´KåhjÉòubj��)�”}”(hŒ=Returns true if the inode in question has been marked as bad.”h]”hÌ)�”}”(hjAóh]”hŒ=Returns true if the inode in question has been marked as bad.”…”�”}”(hjCó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³jPó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 Œ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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjwóh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjsó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&]”uh1j1hjsóh²hh³j…óh´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`jauh1jBhjsó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.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<hjsóh²hh³j…óh´Kðubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjoóh²hh³j…óh´Kðubah}”(h]”jjóah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j…óh´Kðhjló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”…”�”}”(hj7ô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ðhj4ôh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjlóh²hh³j…óh´Kðubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jOôjšjOô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©)�”}”(hjYôh]”hŒ Parameters”…”�”}”(hj[ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjWô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ôhjSôubj¿)�”}”(hhh]”jÄ)�”}”(hŒ-``struct inode *inode`` The inode to discard ”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³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:32: ./fs/bad_inode.c”h´Kñhjrôubjæ)�”}”(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³j�ôh´KñhjŽôubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjrôubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j�ôh´Kñhjoôubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjSô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óhjSôubhÌ)�”}”(hŒ8Mark an under-construction inode as dead and release it.”h]”hŒ8Mark 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òhjSô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”…”�”}”(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 Œ$deactivate_locked_super (C function)”Œc.deactivate_locked_super”hNt”auh1hýhjçôh²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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj õ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Œdeactivate_locked_super”h]”jI)�”}”(hŒdeactivate_locked_super”h]”hŒdeactivate_locked_super”…”�”}”(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´M;ubj=)�”}”(hŒ(struct super_block *s)”h]”jC)�”}”(hŒstruct super_block *s”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Œ super_block”h]”hŒ super_block”…”�”}”(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)�”}”jj4õsbŒc.deactivate_locked_super”†”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Œs”h]”hŒs”…”�”}”(hj§õh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjJõubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjFõ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Œ&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&]”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 *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©)�”}”(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: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.”…”�”}”(hjgö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=hjcöubhÌ)�”}”(hŒACaller holds exclusive lock on superblock; that lock is released.”h]”hŒACaller holds exclusive lock on superblock; that lock is released.”…”�”}”(hjvö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´MBhjcöubeh}”(h]”h ]”h"]”h$]”h&]”uh1jœ�h³juö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 Œdeactivate_super (C function)”Œc.deactivate_super”hNt”auh1hýhjçôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ-void deactivate_super (struct super_block *s)”h]”j)�”}”(hŒ,void deactivate_super(struct super_block *s)”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj«öh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj§ö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Œdeactivate_super”h]”jI)�”}”(hŒdeactivate_super”h]”hŒdeactivate_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 *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_super”†”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)�”}”(hj©õh]”hŒs”…”�”}”(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Œ&drop an active reference to superblock”h]”hŒ&drop an active reference to superblock”…”�”}”(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³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 *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©)�”}”(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��)�”}”(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´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 Œretire_super (C function)”Œc.retire_super”hNt”auh1hýhjçôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ*void retire_super (struct super_block *sb)”h]”j)�”}”(hŒ)void retire_super(struct super_block *sb)”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjGøh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjCøh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.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Œ retire_super”h]”jI)�”}”(hŒ retire_super”h]”hŒ retire_super”…”�”}”(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 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)�”}”jjjøsbŒc.retire_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|øubah}”(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Œ%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³jUø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 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Ð)�”}”(hjHùh]”hŒstruct super_block *sb”…”�”}”(hjJùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjFùubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´MªhjBùubjæ)�”}”(hhh]”hÌ)�”}”(hŒsuperblock to retire”h]”hŒsuperblock to retire”…”�”}”(hjaùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j]ùh´Mªhj^ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjBù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’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žhjçôh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ#generic_shutdown_super (C function)”Œc.generic_shutdown_super”hNt”auh1hýhjçôh²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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjáùh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÝù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Œ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`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&]”uh1jHhj9ú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Œ*”…”�”}”(hjjúh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjúubjI)�”}”(hŒsb”h]”hŒsb”…”�”}”(hjwú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Œcommon helper for ->kill_sb()”h]”hŒcommon helper for ->kill_sb()”…”�”}”(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²hhjçôh³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©)�”}”(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 super_block *sb`` superblock to kill ”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 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å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ü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.”…”�”}”(hj7û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Èhj3û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.”…”�”}”(hjFû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Îhj3ûubeh}”(h]”h ]”h"]”h$]”h&]”uh1jœ�h³jEû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 Œsget_fc (C function)”Œ c.sget_fc”hNt”auh1hýhjçôh²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&]”uh1jhjwû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&]”uh1j1hjwûh²hh³jˆûh´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”†”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Œsget_fc”h]”jI)�”}”(hj¸ûh]”hŒsget_fc”…”�”}”(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Œ‚(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 ]”j¶ûŒ c.sget_fc”†”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Œfc”h]”hŒfc”…”�”}”(hjLü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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjeüh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjaüubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjsü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üubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjŽüh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjaüubjI)�”}”(hŒtest”h]”hŒtest”…”�”}”(hj›üh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjaüubj“)�”}”(hjÏ™h]”hŒ)”…”�”}”(hj©üh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjaüubj“)�”}”(hj¦™h]”hŒ(”…”�”}”(hj¶üh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjaüubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÃüh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjaüubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐüh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjaü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.sget_fc”†”asbuh1hhjaüubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjÿüh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjaüubj“)�”}”(hj3šh]”hŒ,”…”�”}”(hj ýh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjaüubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjaüubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj'ýh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjaüubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4ýh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjaüubh)�”}”(hhh]”jI)�”}”(hŒ fs_context”h]”hŒ fs_context”…”�”}”(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.sget_fc”†”asbuh1hhjaüubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjcýh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjaüubj“)�”}”(hjÏ™h]”hŒ)”…”�”}”(hjpýh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjaüubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjíûubjC)�”}”(hŒ3int (*set)(struct super_block*, struct fs_context*)”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjˆýh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj„ýubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–ýh²hh³Nh´Nubah}”(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Œ 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.sget_fc”†”asbuh1hhj„ýubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj"þh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj„ýubj“)�”}”(hj3š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”…”�”}”(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Œ fs_context”h]”hŒ fs_context”…”�”}”(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.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<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ŒFind or create a superblock”h]”hŒFind or create 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&]”uh1jvhjpû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 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©)�”}”(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 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Ð)�”}”(hj6ÿh]”hŒ6int (*test)(struct super_block *, struct fs_context *)”…”�”}”(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ŒComparison callback”h]”hŒComparison callback”…”�”}”(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Œ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Ð)�”}”(hjoÿh]”hŒ5int (*set)(struct super_block *, struct fs_context *)”…”�”}”(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ŒSetup callback”h]”hŒSetup callback”…”�”}”(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¾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Œ0Create a new superblock or find an existing one.”h]”hŒ0Create a new superblock or find 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Øþ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”…”�”}”(hj×ÿ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”…”�”}”(hjéÿ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´M.hjØþ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:”…”�”}”(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´M3hjØþubhŒenumerated_list”“”)�”}”(hhh]”(j£D)�”}”(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”…”�”}”(hj4h²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´M5hj(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¢Dhj%ubj£D)�”}”(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 ”…”�”}”(hjWh²hh³Nh´Nubj©)�”}”(hŒ**fc**”h]”hŒfc”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjWubhŒ? has requested that reusing an extant superblock is not allowed”…”�”}”(hjWh²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´M8hjSubah}”(h]”h ]”h"]”h$]”h&]”uh1j¢Dhj%ubeh}”(h]”h ]”h"]”h$]”h&]”Œenumtype”Œarabic”Œprefix”j¦™Œsuffix”jÏ™uh1j#hjØþ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´M;hjØþ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=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´MChjØþ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.”…”�”}”(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´MDhjØþubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjçôh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ iterate_supers_type (C function)”Œc.iterate_supers_type”hNt”auh1hýhjçôh²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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjûh²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&]”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&]”uh1jHhjubah}”(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&]”uh1jhj8ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj8ubh)�”}”(hhh]”jI)�”}”(hŒfile_system_type”h]”hŒfile_system_type”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjWubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j\Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj"sbŒc.iterate_supers_type”†”asbuh1hhj8ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj8ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj8ubjI)�”}”(hŒtype”h]”hŒtype”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj4ubjC)�”}”(hŒ%void (*f)(struct super_block*, void*)”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjªubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼h²hh³Nh´Nubah}”(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Œf”h]”hŒf”…”�”}”(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Œ 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 ]”jvŒc.iterate_supers_type”†”asbuh1hhjªubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjªubj“)�”}”(hj3šh]”hŒ,”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjªubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjªubjf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjª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`jauh1jBhj4ubjC)�”}”(hŒ void *arg”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjŸubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjŸubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjŸ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`jauh1jBhj4ubeh}”(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™jjšjj›‰jœ‰j�‰uh1jh²hhjçôh³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©)�”}”(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´Mìhjubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ*``struct file_system_type *type`` fs type ”h]”(jÊ)�”}”(hŒ!``struct file_system_type *type``”h]”jÐ)�”}”(hj7h]”hŒstruct file_system_type *type”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Méhj1ubjæ)�”}”(hhh]”hÌ)�”}”(hŒfs type”h]”hŒfs type”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jLh´MéhjMubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jLh´Méhj.ubjÄ)�”}”(hŒ=``void (*f)(struct super_block *, void *)`` function to call ”h]”(jÊ)�”}”(hŒ+``void (*f)(struct super_block *, void *)``”h]”jÐ)�”}”(hjph]”hŒ'void (*f)(struct super_block *, void *)”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjnubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Mêhjjubjæ)�”}”(hhh]”hÌ)�”}”(hŒfunction to call”h]”hŒfunction to call”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j…h´Mêhj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j…h´Mêhj.ubjÄ)�”}”(hŒ%``void *arg`` argument to pass to it ”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:38: ./fs/super.c”h´Mëhj£ubjæ)�”}”(hhh]”hÌ)�”}”(hŒargument to pass to it”h]”hŒargument to pass to it”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hË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¾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³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Míhjubj��)�”}”(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ìhjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjçôh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œget_anon_bdev (C function)”Œc.get_anon_bdev”hNt”auh1hýhjçôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒint get_anon_bdev (dev_t *p)”h]”j)�”}”(hŒint get_anon_bdev(dev_t *p)”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj/h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj/h²hh³jAh´MubjC)�”}”(hŒ get_anon_bdev”h]”jI)�”}”(hŒ get_anon_bdev”h]”hŒ get_anon_bdev”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjPubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj/h²hh³jAh´Mubj=)�”}”(hŒ (dev_t *p)”h]”jC)�”}”(hŒdev_t *p”h]”(h)�”}”(hhh]”jI)�”}”(hŒdev_t”h]”hŒdev_t”…”�”}”(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)�”}”jjVsbŒc.get_anon_bdev”†”asbuh1hhjlubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjlubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjlubjI)�”}”(hjŸh]”hŒp”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjlubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjhubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj/h²hh³jAh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj+h²hh³jAh´Mubah}”(h]”j&ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jAh´Mhj(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.”…”�”}”(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´MhjÔh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj(h²hh³jAh´Mubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jïjšjïj›‰jœ‰j�‰uh1jh²hhjçôh³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´Mhjóubj¿)�”}”(hhh]”jÄ)�”}”(hŒ!``dev_t *p`` Pointer to a dev_t. ”h]”(jÊ)�”}”(hŒ ``dev_t *p``”h]”jÐ)�”}”(hjh]”hŒdev_t *p”…”�”}”(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´Mhjubjæ)�”}”(hhh]”hÌ)�”}”(hŒPointer to a dev_t.”h]”hŒPointer to a dev_t.”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j-h´Mhj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j-h´Mhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjóubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjSh]”hŒ Description”…”�”}”(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´Mhjó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.”…”�”}”(hjih²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óubhÌ)�”}”(hŒ **Context**”h]”j©)�”}”(hjzh]”hŒContext”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjxubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´MhjóubhÌ)�”}”(hŒ6Any context. Frequently called while holding sb_lock.”h]”hŒ6Any context. Frequently called while holding sb_lock.”…”�”}”(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´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³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Mhjó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.”…”�”}”(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´Mhjóubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjçôh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œsget_dev (C function)”Œ c.sget_dev”hNt”auh1hýhjçôh²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”…”�”}”(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Œ 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)�”}”jŒsget_dev”sbŒ c.sget_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Œ*”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjâh²hh³jóh´M©ubjC)�”}”(hŒsget_dev”h]”jI)�”}”(hj#h]”hŒsget_dev”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjAubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjâh²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Œ ”…”�”}”(hjmh²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.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`jauh1jBhjXubjC)�”}”(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.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”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÌubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjXubeh}”(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Œ,Find or create a superblock by device number”h]”hŒ,Find or create a superblock by device number”…”�”}”(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™jAjšjAj›‰jœ‰j�‰uh1jh²hhjçôh³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©)�”}”(hjKh]”hŒ Parameters”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjIubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M­hjEubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ.``struct fs_context *fc`` Filesystem context. ”h]”(jÊ)�”}”(hŒ``struct fs_context *fc``”h]”jÐ)�”}”(hjjh]”hŒstruct fs_context *fc”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjhubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Mªhjdubjæ)�”}”(hhh]”hÌ)�”}”(hŒFilesystem context.”h]”hŒFilesystem context.”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jh´Mªhj€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjdubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jh´MªhjaubjÄ)�”}”(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«hjaubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjEubhÌ)�”}”(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­hjEubhÌ)�”}”(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¬hjEubhÌ)�”}”(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.”…”�”}”(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¯hjEubhÌ)�”}”(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.”…”�”}”(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²hjEubhÌ)�”}”(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¸hjEubhÌ)�”}”(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.”…”�”}”(hj9h²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¹hjEubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjçôh²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ýhjçôh²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”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjdh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjdh²hh³juh´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”†”asbuh1hhjdh²hh³juh´M�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjdh²hh³juh´M�ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjdh²hh³juh´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`jauh1jBhjdh²hh³juh´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”…”�”}”(hjåh²hh³Nh´Nubah}”(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”†”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`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”†”asbuh1hhj& ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjK h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj& ubjI)�”}”(hŒmode”h]”hŒmode”…”�”}”(hjY h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj& ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÚubjC)�”}”(hŒ void *holder”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjr h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjn 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Œholder”h]”hŒholder”…”�”}”(hj› h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjn 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_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<hjdh²hh³juh´M�ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj`h²hh³juh´M�ubah}”(h]”j[ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³juh´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”…”�”}”(hj5 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�hj2 h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj]h²hh³juh´M�ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jM jšjM j›‰jœ‰j�‰uh1jh²hhjçôh³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©)�”}”(hjW h]”hŒ Parameters”…”�”}”(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:38: ./fs/super.c”h´M”hjQ ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ"``dev_t dev`` block device number ”h]”(jÊ)�”}”(hŒ ``dev_t dev``”h]”jÐ)�”}”(hjv h]”hŒ dev_t dev”…”�”}”(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:38: ./fs/super.c”h´M‘hjp 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åhjp ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j‹ h´M‘hjm 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’hjm 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”hjm 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Ï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 drive fs_holder_ops events for”h]”hŒ,superblock to drive fs_holder_ops events for”…”�”}”(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•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³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M—hjQ 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 ”…”�”}”(hjs h²hh³Nh´Nubj©)�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hj{ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjs ubhŒ with ”…”�”}”(hjs 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´M–hjs ubhŒ and register that ”…”�”}”(hjs h²hh³Nh´Nubj©)�”}”(hŒ**sb**”h]”hŒsb”…”�”}”(hj· h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjs ubhŒ? uses it, so device removal/sync/freeze/thaw are propagated to ”…”�”}”(hjs h²hh³Nh´Nubj©)�”}”(hŒ**sb**”h]”hŒsb”…”�”}”(hjÉ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjs ubhŒ# (and any other superblock sharing ”…”�”}”(hjs h²hh³Nh´Nubj©)�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hjÛ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjs ubhŒ/). Must be paired with fs_bdev_file_release().”…”�”}”(hjs h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j² h´M–hjQ 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šhjQ 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´M›hjQ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjçôh²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ýhjçôh²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”…”�”}”(hj: h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj6 h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M±ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjH h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj6 h²hh³jG h´M±ubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(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)�”}”jŒfs_bdev_file_open_by_path”sbŒc.fs_bdev_file_open_by_path”†”asbuh1hhj6 h²hh³jG h´M±ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjz h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj6 h²hh³jG h´M±ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjˆ h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj6 h²hh³jG h´M±ubjC)�”}”(hŒfs_bdev_file_open_by_path”h]”jI)�”}”(hjw 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`jauh1jBhj6 h²hh³jG h´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 )�”}”(hj¾h]”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° ubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjÏ h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj° ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝ h²hh³Nh´Nubah}”(h]”h ]”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Œ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 ]”ju Œc.fs_bdev_file_open_by_path”†”asbuh1hhj ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2 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Œ void *holder”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjY h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjU ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjg h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjU ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hju h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjU ubjI)�”}”(hŒholder”h]”hŒholder”…”�”}”(hj‚ h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjU 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 ]”ju Œc.fs_bdev_file_open_by_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Œ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<hj6 h²hh³jG h´M±ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj2 h²hh³jG h´M±ubah}”(h]”j- ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jG 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”…”�”}”(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±hjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj/ h²hh³jG h´M±ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j4jšj4j›‰jœ‰j�‰uh1jh²hhjçôh³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©)�”}”(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µhj8ubj¿)�”}”(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²hjWubjæ)�”}”(hhh]”hÌ)�”}”(hŒpath to the block device”h]”hŒpath to the block device”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jrh´M²hjsubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjWubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jrh´M²hjTubjÄ)�”}”(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³hjTubjÄ)�”}”(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µhjTubjÄ)�”}”(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Ïhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M¶hjubjæ)�”}”(hhh]”hÌ)�”}”(hŒ,superblock to drive fs_holder_ops events for”h]”hŒ,superblock to drive fs_holder_ops events for”…”�”}”(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¶hjTubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj8ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjDh]”hŒ Description”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjBubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M¸hj8ubhÌ)�”}”(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 ”…”�”}”(hjZh²hh³Nh´Nubj©)�”}”(hŒ**path**”h]”hŒpath”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjZubhŒ with ”…”�”}”(hjZh²hh³Nh´Nubh)�”}”(hŒ:c:type:`fs_holder_ops`”h]”jÐ)�”}”(hjvh]”hŒ fs_holder_ops”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”(j› j“Œc-type”eh"]”h$]”h&]”uh1jÏhjtubah}”(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·hjZubhŒ and register that ”…”�”}”(hjZh²hh³Nh´Nubj©)�”}”(hŒ**sb**”h]”hŒsb”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjZubhŒ? uses it, so device removal/sync/freeze/thaw are propagated to ”…”�”}”(hjZh²hh³Nh´Nubj©)�”}”(hŒ**sb**”h]”hŒsb”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjZubhŒ\ (and any other superblock sharing the device). Must be paired with fs_bdev_file_release().”…”�”}”(hjZh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j“h´M·hj8ubhÌ)�”}”(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¼hj8ubhÌ)�”}”(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½hj8ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjçôh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œfs_bdev_unregister (C function)”Œc.fs_bdev_unregister”hNt”auh1hýhjçôh²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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjh²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Ó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&]”uh1jHhj&ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjh²hh³jh´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”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjBubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjBubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(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)�”}”jj,sbŒc.fs_bdev_unregister”†”asbuh1hhjBubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjBubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjBubjI)�”}”(hŒ bdev_file”h]”hŒ bdev_file”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjBubeh}”(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_unregister”†”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Œsb”h]”hŒsb”…”�”}”(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<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Ó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”…”�”}”(hj9h²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Óhj6h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjþh²hh³jh´MÓubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jQjšjQj›‰jœ‰j�‰uh1jh²hhjçôh³Nh´NubjŸ)�”}”(hXS**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; a pinning cursor defers the actual unlink) 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¨hjYubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M×hjUubj¿)�”}”(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Ð)�”}”(hjzh]”hŒstruct file *bdev_file”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjxubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´MÔhjtubjæ)�”}”(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åhjtubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j�h´MÔhjqubjÄ)�”}”(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Õhjqubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjUubhÌ)�”}”(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×hjUubhÌ)�”}”(hX�The inverse of fs_bdev_register(): drop one claim on the {dev, **sb**} entry (the last claim unregisters it; a pinning cursor defers the actual unlink) 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, ”…”�”}”(hjh²hh³Nh´Nubj©)�”}”(hŒ**sb**”h]”hŒsb”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjubhXX} entry (the last claim unregisters it; a pinning cursor defers the actual unlink) 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.”…”�”}”(hjh²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ÖhjUubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjçôh²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ýhjçôh²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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjAh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Mëubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjAh²hh³jSh´MëubjC)�”}”(hŒfs_bdev_file_release”h]”jI)�”}”(hŒfs_bdev_file_release”h]”hŒfs_bdev_file_release”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjbubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjAh²hh³jSh´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)�”}”jjhsbŒ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`jauh1jBhjzubjC)�”}”(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Œ ”…”�”}”(hjh²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_release”†”asbuh1hhjðubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”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”…”�”}”(hjKh²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<hjAh²hh³jSh´Mëubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj=h²hh³jSh´Mëubah}”(h]”j8ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jSh´Mëhj:h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ/release a block device claimed for a superblock”h]”hŒ/release a block device claimed for a superblock”…”�”}”(hjuh²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ëhjrh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj:h²hh³jSh´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 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”…”�”}”(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³Œ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, ”…”�”}”(hj@h²hh³Nh´Nubj©)�”}”(hŒ**sb**”h]”hŒsb”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj@ubhŒ%} entry, then close the block device.”…”�”}”(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žhjçôh²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ýhjçôh²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj}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²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj,ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj,ubj“)�”}”(hj¦™h]”hŒ(”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj,ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj,ubjI)�”}”(hŒ fill_super”h]”hŒ fill_super”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj,ubj“)�”}”(hjÏ™h]”hŒ)”…”�”}”(hjth²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“)�”}”(hj3šh]”hŒ,”…”�”}”(hjóh²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”…”�”}”(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Œ 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_flags”†”asbuh1hhj,ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj,ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj,ubjI)�”}”(hŒfc”h]”hŒfc”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj,ubj“)�”}”(hjÏ™h]”hŒ)”…”�”}”(hjsh²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]”(jf)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj‡ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‡ubjf)�”}”(hŒint”h]”hŒint”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj‡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ˆuh1jjijjhjyh²hh³j�h´M+ubah}”(h]”jtah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j�h´M+hjvh²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&]”uh1jvhjvh²hh³j�h´M+ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jjšjj›‰jœ‰j�‰uh1jh²hhjçôh³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©)�”}”(hjh]”hŒ Parameters”…”�”}”(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/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”…”�”}”(hj0h²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”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jCh´M,hjDubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jCh´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Ð)�”}”(hjgh]”hŒ@int (*fill_super)(struct super_block *sb, struct fs_context *fc)”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjeubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M-hjaubjæ)�”}”(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åhjaubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j|h´M-hj%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/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 Œget_tree_bdev (C function)”Œc.get_tree_bdev”hNt”auh1hýhjçôh²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjö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³jh´M_ubjC)�”}”(hŒ get_tree_bdev”h]”jI)�”}”(hŒ get_tree_bdev”h]”hŒ get_tree_bdev”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjöh²hh³jh´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”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj3ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj3ubh)�”}”(hhh]”jI)�”}”(hŒ fs_context”h]”hŒ fs_context”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjRubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jWŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjsbŒc.get_tree_bdev”†”asbuh1hhj3ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj3ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj3ubjI)�”}”(hŒfc”h]”hŒfc”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj/ubjC)�”}”(hŒ:int (*fill_super)(struct super_block*, struct fs_context*)”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj¥ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·h²hh³Nh´Nubah}”(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”…”�”}”(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Œ 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 ]”jqŒc.get_tree_bdev”†”asbuh1hhj¥ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj¥ubj“)�”}”(hj3šh]”hŒ,”…”�”}”(hjPh²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”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¥ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxh²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 ]”jqŒ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³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Œ/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³jh´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 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©)�”}”(hjÿh]”hŒ Parameters”…”�”}”(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´Mchjùubj¿)�”}”(hhh]”(jÄ)�”}”(hŒH``struct fs_context *fc`` The filesystem context holding the parameters ”h]”(jÊ)�”}”(hŒ``struct fs_context *fc``”h]”jÐ)�”}”(hjh]”hŒstruct fs_context *fc”…”�”}”(hj h²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´M`hjubjæ)�”}”(hhh]”hÌ)�”}”(hŒ-The filesystem context holding the parameters”h]”hŒ-The filesystem context holding the parameters”…”�”}”(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`hjubjÄ)�”}”(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Ð)�”}”(hjWh]”hŒah"]”h$]”h&]”uh1j1hj­h²hh³j¿h´MzubjC)�”}”(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´Mzubj=)�”}”(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Œ*”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjêubjI)�”}”(hŒfc”h]”hŒfc”…”�”}”(hjGh²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´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ŒGet the mountable root”h]”hŒGet the mountable root”…”�”}”(hjqh²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´Mzhjnh²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²hhjçôh³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´M~hj�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´M{hj¬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´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Œ¸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 ”…”�”}”(hjh²hh³Nh´Nubj©)�”}”(hŒ **fc->root**”h]”hŒfc->root”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjubhŒ.”…”�”}”(hjh²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žhjçôh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œfreeze_super (C function)”Œc.freeze_super”hNt”auh1hýhjçôh²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj@h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´M‘ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj@h²hh³jRh´M‘ubjC)�”}”(hŒ freeze_super”h]”jI)�”}”(hŒ freeze_super”h]”hŒ freeze_super”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjaubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj@h²hh³jRh´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)�”}”jjgsbŒ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`jauh1jBhjyubjC)�”}”(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Œ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjïubh)�”}”(hhh]”jI)�”}”(hŒ freeze_holder”h]”hŒ freeze_holder”…”�”}”(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.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”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjïubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjyubjC)�”}”(hŒconst void *freeze_owner”h]”(j )�”}”(hj¾h]”hŒconst”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjRubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjRubjf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjRubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjRubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjRubjI)�”}”(hŒ freeze_owner”h]”hŒ freeze_owner”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjRubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjyubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj@h²hh³jRh´M‘ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj<h²hh³jRh´M‘ubah}”(h]”j7ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jRh´M‘hj9h²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&]”uh1jvhj9h²hh³jRh´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`` 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´M•hjàubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ-``struct super_block *sb`` the super to lock ”h]”(jÊ)�”}”(hŒ``struct super_block *sb``”h]”jÐ)�”}”(hjh]”hŒstruct super_block *sb”…”�”}”(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´M’hjÿubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe super to lock”h]”hŒthe super to lock”…”�”}”(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Œ8``enum freeze_holder who`` context that wants to freeze ”h]”(jÊ)�”}”(hŒ``enum freeze_holder who``”h]”jÐ)�”}”(hj>h]”hŒenum freeze_holder who”…”�”}”(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“hj8ubjæ)�”}”(hhh]”hÌ)�”}”(hŒcontext that wants to freeze”h]”hŒcontext that wants to freeze”…”�”}”(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“hjüubjÄ)�”}”(hŒ1``const void *freeze_owner`` owner of the freeze ”h]”(jÊ)�”}”(hŒ``const void *freeze_owner``”h]”jÐ)�”}”(hjwh]”hŒconst void *freeze_owner”…”�”}”(hjyh²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:38: ./fs/super.c”h´M”hjqubjæ)�”}”(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´M”hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjqubeh}”(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Ì)�”}”(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´M•hjà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Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj×ubhŒ should be: * ”…”�”}”(hj×h²hh³Nh´NubjÐ)�”}”(hŒ``FREEZE_HOLDER_USERSPACE``”h]”hŒFREEZE_HOLDER_USERSPACE”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj×ubhŒ( if userspace wants to freeze the fs; * ”…”�”}”(hj×h²hh³Nh´NubjÐ)�”}”(hŒ``FREEZE_HOLDER_KERNEL``”h]”hŒFREEZE_HOLDER_KERNEL”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj×ubhŒ) if the kernel wants to freeze the fs. * ”…”�”}”(hj×h²hh³Nh´NubjÐ)�”}”(hŒ``FREEZE_MAY_NEST``”h]”hŒFREEZE_MAY_NEST”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj×ubhŒ5 whether nesting freeze and thaw requests is 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´M™hjà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*h²hh³Nh´Nubj©)�”}”(hŒ**who**”h]”hŒwho”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj*ubhX[ 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*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à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.”…”�”}”(hjKh²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ŒEDuring this function, sb->s_writers.frozen goes through these values:”h]”hŒEDuring this function, sb->s_writers.frozen goes through these values:”…”�”}”(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«hjà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.”…”�”}”(hjih²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ŒÏ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.”…”�”}”(hjxh²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‡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Ì)�”}”(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–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Œ2sb->s_writers.frozen is protected by sb->s_umount.”h]”hŒ2sb->s_writers.frozen is protected by sb->s_umount.”…”�”}”(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Œ **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Œ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Ì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 ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjçôh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œthaw_super (C function)”Œ c.thaw_super”hNt”auh1hýhjçôh²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj÷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Œ thaw_super”h]”jI)�”}”(hŒ thaw_super”h]”hŒ thaw_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Œ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”…”�”}”(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Œ 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)�”}”jj sbŒ c.thaw_super”†”asbuh1hhj4 ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjv 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Œsb”h]”hŒsb”…”�”}”(hj‘ h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj4 ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj0 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Œ ”…”�”}”(hj· h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¦ ubh)�”}”(hhh]”jI)�”}”(hŒ freeze_holder”h]”hŒ freeze_holder”…”�”}”(hjÈ h²hh³Nh´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.thaw_super”†”asbuh1hhj¦ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæ h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¦ ubjI)�”}”(hŒwho”h]”hŒwho”…”�”}”(hjô h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¦ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj0 ubjC)�”}”(hŒconst void *freeze_owner”h]”(j )�”}”(hj¾h]”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 !ubjf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj(!h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj !ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6!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Œ freeze_owner”h]”hŒ freeze_owner”…”�”}”(hjQ!h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj !ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj0 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]”jžD)�”}”(hhh]”j£D)�”}”(hŒunlock filesystem”h]”hÌ)�”}”(hj€!h]”hŒunlock filesystem”…”�”}”(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¢Dhj{!h²hh³j�!h´Nubah}”(h]”h ]”h"]”h$]”h&]”jÜDŒ-”uh1j�Dh³j�!h´M_ hjx!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`` 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°!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´Mc hjª!ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ-``struct super_block *sb`` the super to thaw ”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Œthe super to thaw”h]”hŒthe super to thaw”…”�”}”(hjè!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hË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``enum freeze_holder who`` context that wants to freeze ”h]”(jÊ)�”}”(hŒ``enum freeze_holder who``”h]”jÐ)�”}”(hj"h]”hŒenum freeze_holder who”…”�”}”(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´Ma hj"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´Ma hj"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j"h´Ma hjÆ!ubjÄ)�”}”(hŒ1``const void *freeze_owner`` owner of the freeze ”h]”(jÊ)�”}”(hŒ``const void *freeze_owner``”h]”jÐ)�”}”(hjA"h]”hŒconst void *freeze_owner”…”�”}”(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:38: ./fs/super.c”h´Mb hj;"ubjæ)�”}”(hhh]”hÌ)�”}”(hŒowner of the freeze”h]”hŒowner of the freeze”…”�”}”(hjZ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jV"h´Mb hjW"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj;"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jV"h´Mb 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¨hjz"ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:38: ./fs/super.c”h´Md hjª!ubhÌ)�”}”(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’"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´Mc hjª!ubhÌ)�”}”(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¥"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¡"ubhŒ should be: * ”…”�”}”(hj¡"h²hh³Nh´NubjÐ)�”}”(hŒ``FREEZE_HOLDER_USERSPACE``”h]”hŒFREEZE_HOLDER_USERSPACE”…”�”}”(hj·"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¡"ubhŒ& if userspace wants to thaw the fs; * ”…”�”}”(hj¡"h²hh³Nh´NubjÐ)�”}”(hŒ``FREEZE_HOLDER_KERNEL``”h]”hŒFREEZE_HOLDER_KERNEL”…”�”}”(hjÉ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¡"ubhŒ' if the kernel wants to thaw the fs. * ”…”�”}”(hj¡"h²hh³Nh´NubjÐ)�”}”(hŒ``FREEZE_MAY_NEST``”h]”hŒFREEZE_MAY_NEST”…”�”}”(hjÛ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¡"ubhŒ4 whether nesting freeze and thaw requests is 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´Mf hjª!ubhÌ)�”}”(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ô"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´Mk hjª!ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjçôh²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”…”�”}”(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 Œ%locks_owner_has_blockers (C function)”Œc.locks_owner_has_blockers”hNt”auh1hýhj#h²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]”(jf)�”}”(hjih]”hŒbool”…”�”}”(hj<#h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj8#h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´MMubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJ#h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj8#h²hh³jI#h´MMubjC)�”}”(hŒlocks_owner_has_blockers”h]”jI)�”}”(hŒlocks_owner_has_blockers”h]”hŒlocks_owner_has_blockers”…”�”}”(hj\#h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjX#ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj8#h²hh³jI#h´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”…”�”}”(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Œfile_lock_context”h]”hŒfile_lock_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.locks_owner_has_blockers”†”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Œflctx”h]”hŒflctx”…”�”}”(hjÑ#h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjt#ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjp#ubjC)�”}”(hŒfl_owner_t owner”h]”(h)�”}”(hhh]”jI)�”}”(hŒ fl_owner_t”h]”hŒ fl_owner_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.locks_owner_has_blockers”†”asbuh1hhjæ#ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj $h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjæ#ubjI)�”}”(hŒowner”h]”hŒowner”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjæ#ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjp#ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj8#h²hh³jI#h´MMubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj4#h²hh³jI#h´MMubah}”(h]”j/#ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jI#h´MMhj1#h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ Check for blocking lock requests”h]”hŒ Check for blocking lock requests”…”�”}”(hjC$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´MMhj@$h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj1#h²hh³jI#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** ``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©)�”}”(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:44: ./fs/locks.c”h´MQhj_$ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ6``struct file_lock_context *flctx`` file lock context ”h]”(jÊ)�”}”(hŒ#``struct file_lock_context *flctx``”h]”jÐ)�”}”(hj„$h]”hŒstruct file_lock_context *flctx”…”�”}”(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´MNhj~$ubjæ)�”}”(hhh]”hÌ)�”}”(hŒfile lock context”h]”hŒfile lock context”…”�”}”(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Œ ``fl_owner_t owner`` lock owner ”h]”(jÊ)�”}”(hŒ``fl_owner_t owner``”h]”jÐ)�”}”(hj½$h]”hŒfl_owner_t 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:44: ./fs/locks.c”h´MOhj·$ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ lock owner”h]”hŒ lock owner”…”�”}”(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{$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´MQhj_$ubj¿)�”}”(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:”…”�”}”(hj%h²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´MQhj%ubjæ)�”}”(hhh]”hÌ)�”}”(hŒQ``true``: **owner** has at least one blocker ``false``: **owner** has no blockers”h]”(jÐ)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hj+%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj'%ubhŒ: ”…”�”}”(hj'%h²hh³Nh´Nubj©)�”}”(hŒ **owner**”h]”hŒowner”…”�”}”(hj=%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj'%ubhŒ has at least one blocker ”…”�”}”(hj'%h²hh³Nh´NubjÐ)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hjO%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj'%ubhŒ: ”…”�”}”hj'%sbj©)�”}”(hŒ **owner**”h]”hŒowner”…”�”}”(hja%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj'%ubhŒ has no blockers”…”�”}”(hj'%h²hh³Nh´Nubeh}”(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_$ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj#h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œlocks_delete_block (C function)”Œc.locks_delete_block”hNt”auh1hýhj#h²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj«%h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj§%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Œlocks_delete_block”h]”jI)�”}”(hŒlocks_delete_block”h]”hŒlocks_delete_block”…”�”}”(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_lock *waiter)”h]”jC)�”}”(hŒstruct file_lock *waiter”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)�”}”jjÎ%sbŒc.locks_delete_block”†”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Œwaiter”h]”hŒwaiter”…”�”}”(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Œstop waiting for a file lock”h]”hŒstop waiting for a file lock”…”�”}”(hjk&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>hjh&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 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�&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´MBhj‡&ubj¿)�”}”(hhh]”jÄ)�”}”(hŒ8``struct file_lock *waiter`` the lock which was waiting ”h]”(jÊ)�”}”(hŒ``struct file_lock *waiter``”h]”jÐ)�”}”(hj¬&h]”hŒstruct file_lock *waiter”…”�”}”(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Œthe lock which was waiting”h]”hŒthe lock which was waiting”…”�”}”(hjÅ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hË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:44: ./fs/locks.c”h´MAhj‡&ubj��)�”}”(hŒ;lockd/nfsd need to disconnect the lock while working on it.”h]”hÌ)�”}”(hjÿ&h]”hŒ;lockd/nfsd need to disconnect the lock while working on 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´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 Œposix_lock_file (C function)”Œc.posix_lock_file”hNt”auh1hýhj#h²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj5'h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj1'h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M¥ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjD'h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj1'h²hh³jC'h´M¥ubjC)�”}”(hŒposix_lock_file”h]”jI)�”}”(hŒposix_lock_file”h]”hŒposix_lock_file”…”�”}”(hjV'h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjR'ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj1'h²hh³jC'h´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”…”�”}”(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Œ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)�”}”jjX'sbŒc.posix_lock_file”†”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Œfilp”h]”hŒfilp”…”�”}”(hjË'h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjn'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjj'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.posix_lock_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Œfl”h]”hŒfl”…”�”}”(hj;(h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjà'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjj'ubjC)�”}”(hŒstruct file_lock *conflock”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Œ file_lock”h]”hŒ file_lock”…”�”}”(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.posix_lock_file”†”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Œconflock”h]”hŒconflock”…”�”}”(hj«(h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjP(ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjj'ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj1'h²hh³jC'h´M¥ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj-'h²hh³jC'h´M¥ubah}”(h]”j('ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jC'h´M¥hj*'h²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*'h²hh³jC'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 *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Ð)�”}”(hj)h]”hŒstruct file *filp”…”�”}”(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Œ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åhj)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Ð)�”}”(hjO)h]”hŒstruct file_lock *fl”…”�”}”(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:44: ./fs/locks.c”h´M§hjI)ubjæ)�”}”(hhh]”hÌ)�”}”(hŒThe lock to be applied”h]”hŒThe lock to be applied”…”�”}”(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Œ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žhj#h²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ýhj#h²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”…”�”}”(hj*h²hh³Nh´Nubah}”(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_lease_ignore_mask”sbŒc.inode_lease_ignore_mask”†”asbuh1hhj*h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M4ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<*h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj*h²hh³j;*h´M4ubjC)�”}”(hŒinode_lease_ignore_mask”h]”jI)�”}”(hj8*h]”hŒinode_lease_ignore_mask”…”�”}”(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´M4ubj=)�”}”(hŒ(struct inode *inode)”h]”jC)�”}”(hŒstruct inode *inode”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Œ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 ]”j6*Œc.inode_lease_ignore_mask”†”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Œinode”h]”hŒinode”…”�”}”(hjÀ*h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhje*ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhja*ubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj*h²hh³•j;*h´M4ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj*h²hh³j;*h´M4ubah}”(h]”j *ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j;*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³j;*h´M4ubeh}”(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 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´M8hj+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Ïhj)+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M5hj%+ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ!inode of which to get ignore mask”h]”hŒ!inode of which to get ignore mask”…”�”}”(hjD+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j@+h´M5hjA+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj%+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j@+h´M5hj"+ubah}”(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:44: ./fs/locks.c”h´M7hj+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´M6hj+ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj#h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ__break_lease (C function)”Œc.__break_lease”hNt”auh1hýhj#h²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj«+h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj§+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”…”�”}”(hj,h²hh³Nh´Nubah}”(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.__break_lease”†”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Œinode”h]”hŒinode”…”�”}”(hjA,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]”(jf)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjZ,h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjV,ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh,h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjV,ubjf)�”}”(hŒint”h]”hŒint”…”�”}”(hjv,h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjV,ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„,h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjV,ubjI)�”}”(hŒflags”h]”hŒflags”…”�”}”(hj’,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´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²hhj#h³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”…”�”}”(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Œthe inode of the file to return”h]”hŒthe inode of the file to return”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hË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`` LEASE_BREAK_* flags ”h]”(jÊ)�”}”(hŒ``unsigned int flags``”h]”jÐ)�”}”(hj6-h]”hŒunsigned int flags”…”�”}”(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:44: ./fs/locks.c”h´M‚hj0-ubjæ)�”}”(hhh]”hÌ)�”}”(hŒLEASE_BREAK_* flags”h]”hŒLEASE_BREAK_* flags”…”�”}”(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ô,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: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žhj#h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œlease_get_mtime (C function)”Œc.lease_get_mtime”hNt”auh1hýhj#h²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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¶-h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj²-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Œ ”…”�”}”(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.lease_get_mtime”†”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Œstruct timespec64 *time”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Œ 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”†”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Œtime”h]”hŒtime”…”�”}”(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<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²hhj#h³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©)�”}”(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´Mhj/ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ"``struct inode *inode`` the 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:44: ./fs/locks.c”h´Mhj!/ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ the inode”h]”hŒ the inode”…”�”}”(hj@/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jah"]”h$]”h&]”uh1j1hjÜ/h²hh³jî/h´MóubjC)�”}”(hŒgeneric_setlease”h]”jI)�”}”(hŒgeneric_setlease”h]”hŒgeneric_setlease”…”�”}”(hj0h²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 file *filp, int arg, struct file_lease **flp, void **priv)”h]”(jC)�”}”(hŒstruct file *filp”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj0ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*0h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj0ubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hj;0h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj80ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j=0Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj0sbŒc.generic_setlease”†”asbuh1hhj0ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[0h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj0ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hji0h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj0ubjI)�”}”(hŒfilp”h]”hŒfilp”…”�”}”(hjv0h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj0ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj0ubjC)�”}”(hŒint arg”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj�0h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj‹0ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�0h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‹0ubjI)�”}”(hŒarg”h]”hŒarg”…”�”}”(hj«0h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‹0ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj0ubjC)�”}”(hŒstruct file_lease **flp”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÄ0h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÀ0ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑ0h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÀ0ubh)�”}”(hhh]”jI)�”}”(hŒ file_lease”h]”hŒ file_lease”…”�”}”(hjâ0h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjß0ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jä0Œmodname”NŒ classname”Njj )�”}”j ]”jW0Œc.generic_setlease”†”asbuh1hhjÀ0ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÀ0ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjÀ0ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjÀ0ubjI)�”}”(hŒflp”h]”hŒflp”…”�”}”(hj(1h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÀ0ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj0ubjC)�”}”(hŒ void **priv”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjA1h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj=1ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjO1h²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=1ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjj1h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj=1ubjI)�”}”(hŒpriv”h]”hŒpriv”…”�”}”(hjw1h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj=1ubeh}”(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Œsets a lease on an open file”h]”hŒsets a lease on an open file”…”�”}”(hj¡1h²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ž1h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÕ/h²hh³jî/h´Móubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j¹1jšj¹1j›‰jœ‰j�‰uh1jh²hhj#h³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Ã1h]”hŒ Parameters”…”�”}”(hjÅ1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÁ1ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M÷hj½1ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ#``struct file *filp`` file pointer ”h]”(jÊ)�”}”(hŒ``struct file *filp``”h]”jÐ)�”}”(hjâ1h]”hŒstruct file *filp”…”�”}”(hjä1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjà1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´MôhjÜ1ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ file pointer”h]”hŒ file pointer”…”�”}”(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ôhjÙ1ubjÄ)�”}”(hŒ$``int arg`` type of lease to obtain ”h]”(jÊ)�”}”(hŒ ``int arg``”h]”jÐ)�”}”(hj2h]”hŒint arg”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´Mõhj2ubjæ)�”}”(hhh]”hÌ)�”}”(hŒtype of lease to obtain”h]”hŒtype of lease to obtain”…”�”}”(hj42h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j02h´Mõhj12ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j02h´MõhjÙ1ubjÄ)�”}”(hŒR``struct file_lease **flp`` input - file_lock to use, output - file_lock inserted ”h]”(jÊ)�”}”(hŒ``struct file_lease **flp``”h]”jÐ)�”}”(hjT2h]”hŒstruct file_lease **flp”…”�”}”(hjV2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjR2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´MöhjN2ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ5input - file_lock to use, output - file_lock inserted”h]”hŒ5input - file_lock to use, output - file_lock inserted”…”�”}”(hjm2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ji2h´Möhjj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjN2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³ji2h´MöhjÙ1ubjÄ)�”}”(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�2h]”hŒ void **priv”…”�”}”(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:44: ./fs/locks.c”h´Møhj‡2ubjæ)�”}”(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¦2h²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£2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj‡2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¢2h´MøhjÙ1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj½1ubhÌ)�”}”(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:44: ./fs/locks.c”h´Múhj½1ubj��)�”}”(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().”…”�”}”(hjã2h²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ß2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœ�h³jñ2h´Mùhj½1ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj#h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œvfs_setlease (C function)”Œc.vfs_setlease”hNt”auh1hýhj#h²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj3h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´MGubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'3h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj3h²hh³j&3h´MGubjC)�”}”(hŒ vfs_setlease”h]”jI)�”}”(hŒ vfs_setlease”h]”hŒ vfs_setlease”…”�”}”(hj93h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj53ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj3h²hh³j&3h´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”…”�”}”(hjU3h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjQ3ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjb3h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjQ3ubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjs3h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjp3ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”ju3Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj;3sbŒc.vfs_setlease”†”asbuh1hhjQ3ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“3h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjQ3ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj¡3h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjQ3ubjI)�”}”(hŒfilp”h]”hŒfilp”…”�”}”(hj®3h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjQ3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjM3ubjC)�”}”(hŒint arg”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjÇ3h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÃ3ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕ3h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÃ3ubjI)�”}”(hŒarg”h]”hŒarg”…”�”}”(hjã3h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÃ3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjM3ubjC)�”}”(hŒstruct file_lease **lease”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjü3h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjø3ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj 4h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjø3ubh)�”}”(hhh]”jI)�”}”(hŒ file_lease”h]”hŒ file_lease”…”�”}”(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�3Œc.vfs_setlease”†”asbuh1hhjø3ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj84h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjø3ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjF4h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjø3ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjS4h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjø3ubjI)�”}”(hŒlease”h]”hŒlease”…”�”}”(hj`4h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjø3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjM3ubjC)�”}”(hŒ void **priv”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjy4h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehju4ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡4h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hju4ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj•4h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hju4ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj¢4h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hju4ubjI)�”}”(hŒpriv”h]”hŒpriv”…”�”}”(hj¯4h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhju4ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjM3ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj3h²hh³j&3h´MGubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj3h²hh³j&3h´MGubah}”(h]”j 3ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j&3h´MGhj 3h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒsets a lease on an open file”h]”hŒsets a lease on an open file”…”�”}”(hjÙ4h²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´MGhjÖ4h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj 3h²hh³j&3h´MGubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jñ4jšjñ4j›‰jœ‰j�‰uh1jh²hhj#h³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û4h]”hŒ Parameters”…”�”}”(hjý4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjù4ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´MKhjõ4ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ#``struct file *filp`` file pointer ”h]”(jÊ)�”}”(hŒ``struct file *filp``”h]”jÐ)�”}”(hj5h]”hŒstruct file *filp”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´MHhj5ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ file pointer”h]”hŒ file pointer”…”�”}”(hj35h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j/5h´MHhj05ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j/5h´MHhj5ubjÄ)�”}”(hŒ$``int arg`` type of lease to obtain ”h]”(jÊ)�”}”(hŒ ``int arg``”h]”jÐ)�”}”(hjS5h]”hŒint arg”…”�”}”(hjU5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjQ5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´MIhjM5ubjæ)�”}”(hhh]”hÌ)�”}”(hŒtype of lease to obtain”h]”hŒtype of lease to obtain”…”�”}”(hjl5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jh5h´MIhji5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjM5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jh5h´MIhj5ubjÄ)�”}”(hŒC``struct file_lease **lease`` file_lock to use when adding a lease ”h]”(jÊ)�”}”(hŒ``struct file_lease **lease``”h]”jÐ)�”}”(hjŒ5h]”hŒstruct file_lease **lease”…”�”}”(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´MJhj†5ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ$file_lock to use when adding a lease”h]”hŒ$file_lock to use when adding a lease”…”�”}”(hj¥5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¡5h´MJhj¢5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj†5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¡5h´MJhj5ubjÄ)�”}”(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Å5h]”hŒ void **priv”…”�”}”(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´MLhj¿5ubjæ)�”}”(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)”…”�”}”(hjÞ5h²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Û5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¿5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÚ5h´MLhj5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjõ4ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj6h]”hŒ Description”…”�”}”(hj6h²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´MNhjõ4ubhÌ)�”}”(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 ”…”�”}”(hj6h²hh³Nh´NubjÐ)�”}”(hŒ ``(*lease)->fl_lmops->lm_break``”h]”hŒ(*lease)->fl_lmops->lm_break”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj6ubhŒm operation must be set; if not, this function will return -ENOLCK (and generate a scary-looking stack trace).”…”�”}”(hj6h²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õ4ubhÌ)�”}”(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.”…”�”}”(hj86h²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õ4ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj#h²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ýhj#h²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjg6h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjc6h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´MÂubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjv6h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjc6h²hh³ju6h´MÂubjC)�”}”(hŒlocks_lock_inode_wait”h]”jI)�”}”(hŒlocks_lock_inode_wait”h]”hŒlocks_lock_inode_wait”…”�”}”(hjˆ6h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj„6ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjc6h²hh³ju6h´MÂubj=)�”}”(hŒ+(struct inode *inode, struct file_lock *fl)”h]”(jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj¤6h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj 6ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±6h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj 6ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(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)�”}”jjŠ6sbŒc.locks_lock_inode_wait”†”asbuh1hhj 6ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâ6h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj 6ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjð6h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj 6ubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjý6h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj 6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjœ6ubjC)�”}”(hŒstruct file_lock *fl”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”…”�”}”(hj47h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj17ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j67Œmodname”NŒ classname”Njj )�”}”j ]”jÞ6Œc.locks_lock_inode_wait”†”asbuh1hhj7ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjR7h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj7ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj`7h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj7ubjI)�”}”(hŒfl”h]”hŒfl”…”�”}”(hjm7h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjœ6ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjc6h²hh³ju6h´MÂubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj_6h²hh³ju6h´MÂubah}”(h]”jZ6ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³ju6h´MÂhj\6h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒApply a lock to an inode”h]”hŒApply a lock to an inode”…”�”}”(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³ju6h´MÂubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j¯7jšj¯7j›‰jœ‰j�‰uh1jh²hhj#h³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¹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´MÆhj³7ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ6``struct inode *inode`` inode of the file to apply to ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hjØ7h]”hŒstruct inode *inode”…”�”}”(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Œinode of the file to apply to”h]”hŒinode of the file to apply to”…”�”}”(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Ï7ubjÄ)�”}”(hŒ0``struct file_lock *fl`` The lock to be applied ”h]”(jÊ)�”}”(hŒ``struct file_lock *fl``”h]”jÐ)�”}”(hj8h]”hŒstruct file_lock *fl”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´MÄhj 8ubjæ)�”}”(hhh]”hÌ)�”}”(hŒThe lock to be applied”h]”hŒThe lock to be applied”…”�”}”(hj*8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j&8h´MÄhj'8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj 8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j&8h´MÄhjÏ7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj³7ubhÌ)�”}”(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³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´MÆhj³7ubhÌ)�”}”(hŒ6Apply a POSIX or FLOCK style lock request to an inode.”h]”hŒ6Apply a POSIX or FLOCK style lock request to an inode.”…”�”}”(hjb8h²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³7ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj#h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œvfs_test_lock (C function)”Œc.vfs_test_lock”hNt”auh1hýhj#h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ;int vfs_test_lock (struct file *filp, struct file_lock *fl)”h]”j)�”}”(hŒ:int vfs_test_lock(struct file *filp, struct file_lock *fl)”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj‘8h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj�8h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”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Œ vfs_test_lock”h]”jI)�”}”(hŒ vfs_test_lock”h]”hŒ vfs_test_lock”…”�”}”(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 *filp, struct file_lock *fl)”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.vfs_test_lock”†”asbuh1hhjÊ8ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj 9h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÊ8ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjÊ8ubjI)�”}”(hŒfilp”h]”hŒfilp”…”�”}”(hj'9h²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”…”�”}”(hj@9h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj<9ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjM9h²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 ]”j9Œc.vfs_test_lock”†”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Œfl”h]”hŒfl”…”�”}”(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<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Œtest file byte range lock”h]”hŒtest file byte range lock”…”�”}”(hjÁ9h²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¾9h²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²hhj#h³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©)�”}”(hjã9h]”hŒ Parameters”…”�”}”(hjå9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjá9ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M hjÝ9ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ0``struct file *filp`` The file to test lock for ”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Ï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ü9ubjæ)�”}”(hhh]”hÌ)�”}”(hŒThe file to test lock for”h]”hŒThe file to test lock 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ü9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j:h´M hjù9ubjÄ)�”}”(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Ð)�”}”(hj;:h]”hŒstruct file_lock *fl”…”�”}”(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:44: ./fs/locks.c”h´M hj5:ubjæ)�”}”(hhh]”hÌ)�”}”(hŒfl_type to something other than F_UNLCK.”h]”(hŒ On entry, ”…”�”}”(hjŒ:h²hh³Nh´Nubj©)�”}”(hŒ**fl**”h]”hŒfl”…”�”}”(hj”:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjŒ:ubhŒé 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Œ:h²hh³Nh´Nubj©)�”}”(hŒ**fl**”h]”hŒfl”…”�”}”(hj¦:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjŒ:ubhŒ‰ must be NULL. Returns -ERRNO on failure. Indicates presence of conflicting lock by setting fl->fl_type to something other than F_UNLCK.”…”�”}”(hjŒ:h²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Ý9ubhÌ)�”}”(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¿: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Ý9ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj#h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œvfs_lock_file (C function)”Œc.vfs_lock_file”hNt”auh1hýhj#h²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjî:h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjê: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Œ vfs_lock_file”h]”jI)�”}”(hŒ vfs_lock_file”h]”hŒ vfs_lock_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ŒS(struct file *filp, unsigned int cmd, struct file_lock *fl, struct file_lock *conf)”h]”(jC)�”}”(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Œ ”…”�”}”(hj8;h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj';ubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(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)�”}”jj;sbŒc.vfs_lock_file”†”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Œfilp”h]”hŒfilp”…”�”}”(hj„;h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj';ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj#;ubjC)�”}”(hŒunsigned int cmd”h]”(jf)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj�;h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj™;ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«;h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj™;ubjf)�”}”(hŒint”h]”hŒint”…”�”}”(hj¹;h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj™;ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇ;h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj™;ubjI)�”}”(hŒcmd”h]”hŒcmd”…”�”}”(hjÕ;h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj™;ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj#;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 ]”je;Œc.vfs_lock_file”†”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Œfl”h]”hŒfl”…”�”}”(hjE<h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjê;ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj#;ubjC)�”}”(hŒstruct file_lock *conf”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Œ file_lock”h]”hŒ file_lock”…”�”}”(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 ]”je;Œc.vfs_lock_file”†”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Œconf”h]”hŒconf”…”�”}”(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Œfile byte range lock”h]”hŒfile byte range lock”…”�”}”(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²hhj#h³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©)�”}”(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Ð)�”}”(hj =h]”hŒstruct file *filp”…”�”}”(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ŒThe file to apply the lock to”h]”hŒThe file to apply the lock to”…”�”}”(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ŒH``unsigned int cmd`` type of locking operation (F_SETLK, F_GETLK, etc.) ”h]”(jÊ)�”}”(hŒ``unsigned int cmd``”h]”jÐ)�”}”(hjY=h]”hŒunsigned int cmd”…”�”}”(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:44: ./fs/locks.c”h´M± hjS=ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ2type of locking operation (F_SETLK, F_GETLK, etc.)”h]”hŒ2type of locking operation (F_SETLK, F_GETLK, etc.)”…”�”}”(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Œ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² hjŒ=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åhjŒ=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j§=h´M² hj=ubjÄ)�”}”(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Ë=h]”hŒstruct file_lock *conf”…”�”}”(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Œ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.”…”�”}”(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Œ¢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+>h²hh³Nh´Nubj©)�”}”(hŒ**conf**”h]”hŒconf”…”�”}”(hj3>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj+>ubhŒ` will be left unchanged; so a caller that cares should initialize it to some acceptable default.”…”�”}”(hj+>h²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û<ubhÌ)�”}”(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.”…”�”}”(hjL>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Ì)�”}”(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[>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žhj#h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œvfs_cancel_lock (C function)”Œc.vfs_cancel_lock”hNt”auh1hýhj#h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ=int vfs_cancel_lock (struct file *filp, struct file_lock *fl)”h]”j)�”}”(hŒh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj†>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Œvfs_cancel_lock”h]”jI)�”}”(hŒvfs_cancel_lock”h]”hŒvfs_cancel_lock”…”�”}”(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 *filp, struct file_lock *fl)”h]”(jC)�”}”(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)�”}”jj­>sbŒc.vfs_cancel_lock”†”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`jauh1jBhj¿>ubjC)�”}”(hŒstruct file_lock *fl”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_lock”h]”hŒ file_lock”…”�”}”(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?Œc.vfs_cancel_lock”†”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Œfl”h]”hŒfl”…”�”}”(hj�?h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj5?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Œfile byte range unblock lock”h]”hŒfile byte range unblock lock”…”�”}”(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²hhj#h³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Ü?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Œ7``struct file *filp`` The file to apply the unblock to ”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Ï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 file to apply the unblock to”h]”hŒ The file to apply the unblock 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Œ2``struct file_lock *fl`` The lock to be unblocked ”h]”(jÊ)�”}”(hŒ``struct file_lock *fl``”h]”jÐ)�”}”(hj4@h]”hŒstruct file_lock *fl”…”�”}”(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:44: ./fs/locks.c”h´M< hj.@ubjæ)�”}”(hhh]”hÌ)�”}”(hŒThe lock to be unblocked”h]”hŒThe lock to be unblocked”…”�”}”(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ò?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³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´M> hjÖ?ubhÌ)�”}”(hŒ0Used by lock managers to cancel blocked requests”h]”hŒ0Used by lock managers to cancel blocked requests”…”�”}”(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žhj#h²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ýhj#h²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]”(jf)�”}”(hjih]”hŒbool”…”�”}”(hj´@h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj°@h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:44: ./fs/locks.c”h´MJ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂ@h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj°@h²hh³jÁ@h´MJ ubjC)�”}”(hŒvfs_inode_has_locks”h]”jI)�”}”(hŒvfs_inode_has_locks”h]”hŒvfs_inode_has_locks”…”�”}”(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´MJ 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”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj Aubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jAŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjÖ@sbŒc.vfs_inode_has_locks”†”asbuh1hhjì@ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.Ah²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjì@ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjah"]”h$]”h&]”uh1j1hjTBh²hh³jfBh´MWubjC)�”}”(hŒlease_open_conflict”h]”jI)�”}”(hŒlease_open_conflict”h]”hŒlease_open_conflict”…”�”}”(hjyBh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjuBubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjTBh²hh³jfBh´MWubj=)�”}”(hŒ"(struct file *filp, const int arg)”h]”(jC)�”}”(hŒstruct file *filp”h]”(j )�”}”(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Œfile”h]”hŒfile”…”�”}”(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)�”}”jj{BsbŒc.lease_open_conflict”†”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Œfilp”h]”hŒfilp”…”�”}”(hjîBh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‘Bubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj�BubjC)�”}”(hŒ const int arg”h]”(j )�”}”(hj¾h]”hŒconst”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjCubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjCubjf)�”}”(hŒint”h]”hŒint”…”�”}”(hj"Ch²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjCubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0Ch²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjCubjI)�”}”(hŒarg”h]”hŒarg”…”�”}”(hj>Ch²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjCubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj�Bubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjTBh²hh³jfBh´MWubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjPBh²hh³jfBh´MWubah}”(h]”jKBah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jfBh´MWhjMBh²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.”…”�”}”(hjhCh²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´MWhjeCh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjMBh²hh³jfBh´MWubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j€Cjšj€Cj›‰jœ‰j�‰uh1jh²hhj#h³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Š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[hj„Cubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ$``struct file *filp`` file to check ”h]”(jÊ)�”}”(hŒ``struct file *filp``”h]”jÐ)�”}”(hj©Ch]”hŒstruct file *filp”…”�”}”(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´MZhj£Cubjæ)�”}”(hhh]”hÌ)�”}”(hŒ file to check”h]”hŒ file to check”…”�”}”(hjÂCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¾Ch´MZhj¿Cubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj£Cubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¾Ch´MZhj CubjÄ)�”}”(hŒ=``const int arg`` type of lease that we're trying to acquire ”h]”(jÊ)�”}”(hŒ``const int arg``”h]”jÐ)�”}”(hjâCh]”hŒ const int arg”…”�”}”(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Œ*type of lease that we're trying to acquire”h]”hŒ,type of lease that we’re trying to acquire”…”�”}”(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 Cubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj„CubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjDh]”hŒ Description”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjDubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M]hj„CubhÌ)�”}”(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.”…”�”}”(hj3Dh²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„Cubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj#h²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ýhj#h²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjbDh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj^Dh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´Mºubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqDh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj^Dh²hh³jpDh´MºubjC)�”}”(hŒposix_lock_inode_wait”h]”jI)�”}”(hŒposix_lock_inode_wait”h]”hŒposix_lock_inode_wait”…”�”}”(hjƒDh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjDubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj^Dh²hh³jpDh´Mºubj=)�”}”(hŒ+(struct inode *inode, struct file_lock *fl)”h]”(jC)�”}”(hŒstruct inode *inode”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Œinode”h]”hŒinode”…”�”}”(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)�”}”jj…DsbŒc.posix_lock_inode_wait”†”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Œinode”h]”hŒinode”…”�”}”(hjøDh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj›Dubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj—DubjC)�”}”(hŒstruct file_lock *fl”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj Eubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj Eubh)�”}”(hhh]”jI)�”}”(hŒ file_lock”h]”hŒ file_lock”…”�”}”(hj/Eh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj,Eubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j1EŒmodname”NŒ classname”Njj )�”}”j ]”jÙDŒc.posix_lock_inode_wait”†”asbuh1hhj Eubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjMEh²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Œfl”h]”hŒfl”…”�”}”(hjhEh²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<hj^Dh²hh³jpDh´Mºubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjZDh²hh³jpDh´Mºubah}”(h]”jUDah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jpDh´MºhjWDh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ"Apply a POSIX-style lock to a file”h]”hŒ"Apply a POSIX-style lock to a file”…”�”}”(hj’Eh²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�Eh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjWDh²hh³jpDh´Mºubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jªEjšjªEj›‰jœ‰j�‰uh1jh²hhj#h³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´Eh]”hŒ Parameters”…”�”}”(hj¶Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj²Eubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M¾hj®Eubj¿)�”}”(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Ð)�”}”(hjÓEh]”hŒstruct inode *inode”…”�”}”(hjÕEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÑEubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M»hjÍEubjæ)�”}”(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”…”�”}”(hjìEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jèEh´M»hjéEubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÍEubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jèEh´M»hjÊEubjÄ)�”}”(hŒ0``struct file_lock *fl`` The lock to be applied ”h]”(jÊ)�”}”(hŒ``struct file_lock *fl``”h]”jÐ)�”}”(hj Fh]”hŒstruct file_lock *fl”…”�”}”(hjFh²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:47: ./fs/locks.c”h´M¼hjFubjæ)�”}”(hhh]”hÌ)�”}”(hŒThe lock to be applied”h]”hŒThe lock to be applied”…”�”}”(hj%Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j!Fh´M¼hj"Fubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjFubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j!Fh´M¼hjÊEubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj®EubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjGFh]”hŒ Description”…”�”}”(hjIFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjEFubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M¾hj®EubhÌ)�”}”(hŒ-Apply a POSIX style lock request to an inode.”h]”hŒ-Apply a POSIX style lock request to an inode.”…”�”}”(hj]Fh²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®Eubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj#h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ__fcntl_getlease (C function)”Œc.__fcntl_getlease”hNt”auh1hýhj#h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ=int __fcntl_getlease (struct file *filp, unsigned int flavor)”h]”j)�”}”(hŒah"]”h$]”h&]”uh1j1hjˆFh²hh³jšFh´M!ubjC)�”}”(hŒ__fcntl_getlease”h]”jI)�”}”(hŒ__fcntl_getlease”h]”hŒ__fcntl_getlease”…”�”}”(hj­Fh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj©Fubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjˆFh²hh³jšFh´M!ubj=)�”}”(hŒ((struct file *filp, unsigned int flavor)”h]”(jC)�”}”(hŒstruct file *filp”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÉFh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÅFubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖFh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÅFubh)�”}”(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 ]”j)�”}”jj¯FsbŒc.__fcntl_getlease”†”asbuh1hhjÅFubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGh²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Œfilp”h]”hŒfilp”…”�”}”(hj"Gh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÅFubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÁFubjC)�”}”(hŒunsigned int flavor”h]”(jf)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj;Gh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj7Gubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIGh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj7Gubjf)�”}”(hŒint”h]”hŒint”…”�”}”(hjWGh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj7Gubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeGh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj7GubjI)�”}”(hŒflavor”h]”hŒflavor”…”�”}”(hjsGh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj7Gubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÁFubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjˆFh²hh³jšFh´M!ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj„Fh²hh³jšFh´M!ubah}”(h]”jFah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jšFh´M!hj�Fh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ&Enquire what lease is currently active”h]”hŒ&Enquire what lease is currently active”…”�”}”(hj�Gh²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šGh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj�Fh²hh³jšFh´M!ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jµGjšjµGj›‰jœ‰j�‰uh1jh²hhj#h³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¿Gh]”hŒ Parameters”…”�”}”(hjÁGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj½Gubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M%hj¹Gubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ``struct file *filp`` the file ”h]”(jÊ)�”}”(hŒ``struct file *filp``”h]”jÐ)�”}”(hjÞGh]”hŒstruct file *filp”…”�”}”(hjàGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÜGubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M"hjØGubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe file”h]”hŒthe file”…”�”}”(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Œ5``unsigned int flavor`` type of lease flags to check ”h]”(jÊ)�”}”(hŒ``unsigned int flavor``”h]”jÐ)�”}”(hjHh]”hŒunsigned int flavor”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjHubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M#hjHubjæ)�”}”(hhh]”hÌ)�”}”(hŒtype of lease flags to check”h]”hŒtype of lease flags to check”…”�”}”(hj0Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j,Hh´M#hj-Hubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjHubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j,Hh´M#hjÕGubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj¹GubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjRHh]”hŒ Description”…”�”}”(hjTHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjPHubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M%hj¹Gubj��)�”}”(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):”…”�”}”(hjlHh²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$hjhHubhÌ)�”}”(hŒ/``F_RDLCK`` to indicate a shared lease is held.”h]”(jÐ)�”}”(hŒ ``F_RDLCK``”h]”hŒF_RDLCK”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj{HubhŒ$ to indicate a shared lease is held.”…”�”}”(hj{Hh²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'hjhHubhÌ)�”}”(hŒ3``F_WRLCK`` to indicate an exclusive lease is held.”h]”(jÐ)�”}”(hŒ ``F_WRLCK``”h]”hŒF_WRLCK”…”�”}”(hjœHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj˜HubhŒ( to indicate an exclusive lease is held.”…”�”}”(hj˜Hh²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)hjhHubhÌ)�”}”(hŒ)``F_UNLCK`` to indicate no lease is held.”h]”(jÐ)�”}”(hŒ ``F_UNLCK``”h]”hŒF_UNLCK”…”�”}”(hj¹Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjµHubhŒ to indicate no lease is held.”…”�”}”(hjµHh²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+hjhHubhÌ)�”}”(hŒ(if a lease break is pending):”h]”hŒ(if a lease break is pending):”…”�”}”(hjÒHh²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-hjhHubj¿)�”}”(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”…”�”}”(hjìHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjèHubhŒ+ to indicate an exclusive lease needs to be”…”�”}”(hjèHh²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´M0hjäHubjæ)�”}”(hhh]”hÌ)�”}”(hŒ'changed to a shared lease (or removed).”h]”hŒ'changed to a shared lease (or removed).”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jIh´M0hjIubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjäHubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jIh´M0hjáHubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjhHubhÌ)�”}”(hŒ6``F_UNLCK`` to indicate the lease needs to be removed.”h]”(jÐ)�”}”(hŒ ``F_UNLCK``”h]”hŒF_UNLCK”…”�”}”(hj,Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj(IubhŒ+ to indicate the lease needs to be removed.”…”�”}”(hj(Ih²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´M2hjhHubhÌ)�”}”(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.”…”�”}”(hjEIh²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´M4hjhHubeh}”(h]”h ]”h"]”h$]”h&]”uh1jœ�h³jzHh´M$hj¹Gubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj#h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œfcntl_setlease (C function)”Œc.fcntl_setlease”hNt”auh1hýhj#h²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjzIh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjvIh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰Ih²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjvIh²hh³jˆIh´M�ubjC)�”}”(hŒfcntl_setlease”h]”jI)�”}”(hŒfcntl_setlease”h]”hŒfcntl_setlease”…”�”}”(hj›Ih²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj—Iubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjvIh²hh³jˆIh´M�ubj=)�”}”(hŒ-(unsigned int fd, struct file *filp, int arg)”h]”(jC)�”}”(hŒunsigned int fd”h]”(jf)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj·Ih²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj³Iubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅIh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj³Iubjf)�”}”(hŒint”h]”hŒint”…”�”}”(hjÓIh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj³Iubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjáIh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj³IubjI)�”}”(hŒfd”h]”hŒfd”…”�”}”(hjïIh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj³Iubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¯IubjC)�”}”(hŒstruct file *filp”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjJubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjJubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(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�IsbŒc.fcntl_setlease”†”asbuh1hhjJubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFJh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjJubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjTJh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjJubjI)�”}”(hŒfilp”h]”hŒfilp”…”�”}”(hjaJh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjJubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¯IubjC)�”}”(hŒint arg”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjzJh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjvJubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆJh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjvJubjI)�”}”(hŒarg”h]”hŒarg”…”�”}”(hj–Jh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjvJubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¯Iubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjvIh²hh³jˆIh´M�ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjrIh²hh³jˆIh´M�ubah}”(h]”jmIah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jˆIh´M�hjoIh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒsets a lease on an open file”h]”hŒsets a lease on an open file”…”�”}”(hjÀJh²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½Jh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjoIh²hh³jˆIh´M�ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jØJjšjØJj›‰jœ‰j�‰uh1jh²hhj#h³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âJh]”hŒ Parameters”…”�”}”(hjäJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjàJubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M…hjÜJubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ)``unsigned int fd`` open file descriptor ”h]”(jÊ)�”}”(hŒ``unsigned int fd``”h]”jÐ)�”}”(hjKh]”hŒunsigned int fd”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÿJubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M‚hjûJubjæ)�”}”(hhh]”hÌ)�”}”(hŒopen file descriptor”h]”hŒopen file descriptor”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jKh´M‚hjKubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjûJubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jKh´M‚hjøJubjÄ)�”}”(hŒ#``struct file *filp`` file pointer ”h]”(jÊ)�”}”(hŒ``struct file *filp``”h]”jÐ)�”}”(hj:Kh]”hŒstruct file *filp”…”�”}”(hjah"]”h$]”h&]”uh1j1hj Lh²hh³jLh´M•ubjC)�”}”(hŒfcntl_setdeleg”h]”jI)�”}”(hŒfcntl_setdeleg”h]”hŒfcntl_setdeleg”…”�”}”(hj0Lh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj,Lubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj Lh²hh³jLh´M•ubj=)�”}”(hŒ>(unsigned int fd, struct file *filp, struct delegation *deleg)”h]”(jC)�”}”(hŒunsigned int fd”h]”(jf)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjLLh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjHLubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZLh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjHLubjf)�”}”(hŒint”h]”hŒint”…”�”}”(hjhLh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjHLubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvLh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjHLubjI)�”}”(hŒfd”h]”hŒfd”…”�”}”(hj„Lh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjHLubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjDLubjC)�”}”(hŒstruct file *filp”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 ]”j)�”}”jj2LsbŒc.fcntl_setdeleg”†”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Œfilp”h]”hŒfilp”…”�”}”(hjöLh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj™Lubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjDLubjC)�”}”(hŒstruct delegation *deleg”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj Mubh)�”}”(hhh]”jI)�”}”(hŒ delegation”h]”hŒ delegation”…”�”}”(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.fcntl_setdeleg”†”asbuh1hhj Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKMh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj Mubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjYMh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj MubjI)�”}”(hŒdeleg”h]”hŒdeleg”…”�”}”(hjfMh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj Mubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjDLubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj Lh²hh³jLh´M•ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjLh²hh³jLh´M•ubah}”(h]”jLah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jLh´M•hjLh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ!sets a delegation on an open file”h]”hŒ!sets a delegation on an open file”…”�”}”(hj�Mh²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�Mh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjLh²hh³jLh´M•ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j¨Mjšj¨Mj›‰jœ‰j�‰uh1jh²hhj#h³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²Mh]”hŒ Parameters”…”�”}”(hj´Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj°Mubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M™hj¬Mubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ)``unsigned int fd`` open file descriptor ”h]”(jÊ)�”}”(hŒ``unsigned int fd``”h]”jÐ)�”}”(hjÑMh]”hŒunsigned int fd”…”�”}”(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:47: ./fs/locks.c”h´M–hjËMubjæ)�”}”(hhh]”hÌ)�”}”(hŒopen file descriptor”h]”hŒopen file descriptor”…”�”}”(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–hjÈMubjÄ)�”}”(hŒ#``struct file *filp`` file pointer ”h]”(jÊ)�”}”(hŒ``struct file *filp``”h]”jÐ)�”}”(hj Nh]”hŒstruct file *filp”…”�”}”(hj Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjNubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M—hjNubjæ)�”}”(hhh]”hÌ)�”}”(hŒ file pointer”h]”hŒ file pointer”…”�”}”(hj#Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jNh´M—hj Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjNubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jNh´M—hjÈMubjÄ)�”}”(hŒ>``struct delegation *deleg`` delegation request from userland ”h]”(jÊ)�”}”(hŒ``struct delegation *deleg``”h]”jÐ)�”}”(hjCNh]”hŒstruct delegation *deleg”…”�”}”(hjENh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjANubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M˜hj=Nubjæ)�”}”(hhh]”hÌ)�”}”(hŒ delegation request from userland”h]”hŒ delegation request from userland”…”�”}”(hj\Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jXNh´M˜hjYNubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj=Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jXNh´M˜hjÈMubeh}”(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¨hj|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¬Mubj��)�”}”(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˜Nh²hh³Nh´NubjÐ)�”}”(hŒ ``F_SETSIG``”h]”hŒF_SETSIG”…”�”}”(hj Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj˜NubhŒ. to receive a signal when the lease is broken.”…”�”}”(hj˜Nh²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”Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jœ�h³j¸Nh´M™hj¬Mubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj#h²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ýhj#h²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjßNh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÛNh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.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Œflock_lock_inode_wait”h]”jI)�”}”(hŒflock_lock_inode_wait”h]”hŒflock_lock_inode_wait”…”�”}”(hjOh²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 inode *inode, struct file_lock *fl)”h]”(jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjOubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)Oh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjOubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj:Oh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj7Oubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jah"]”h$]”h&]”uh1j1hjOubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjhOh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjOubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjuOh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjOubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjOubjC)�”}”(hŒstruct file_lock *fl”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Œ file_lock”h]”hŒ file_lock”…”�”}”(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 ]”jVOŒc.flock_lock_inode_wait”†”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Œfl”h]”hŒfl”…”�”}”(hjåOh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjŠOubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjOubeh}”(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Œ"Apply a FLOCK-style lock to a file”h]”hŒ"Apply a FLOCK-style lock to a file”…”�”}”(hjPh²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 Ph²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÔNh²hh³jíNh´Mªubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j'Pjšj'Pj›‰jœ‰j�‰uh1jh²hhj#h³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©)�”}”(hj1Ph]”hŒ Parameters”…”�”}”(hj3Ph²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:47: ./fs/locks.c”h´M®hj+Pubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ6``struct inode *inode`` inode of the file to apply to ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hjPPh]”hŒstruct inode *inode”…”�”}”(hjRPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjNPubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M«hjJPubjæ)�”}”(hhh]”hÌ)�”}”(hŒinode of the file to apply to”h]”hŒinode of the file to apply to”…”�”}”(hjiPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jePh´M«hjfPubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjJPubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jePh´M«hjGPubjÄ)�”}”(hŒ0``struct file_lock *fl`` The lock to be applied ”h]”(jÊ)�”}”(hŒ``struct file_lock *fl``”h]”jÐ)�”}”(hj‰Ph]”hŒstruct file_lock *fl”…”�”}”(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:47: ./fs/locks.c”h´M¬hjƒPubjæ)�”}”(hhh]”hÌ)�”}”(hŒThe lock to be applied”h]”hŒThe lock to be applied”…”�”}”(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¬hjGPubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj+PubhÌ)�”}”(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³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M®hj+PubhÌ)�”}”(hŒ-Apply a FLOCK style lock request to an inode.”h]”hŒ-Apply a FLOCK style lock request to an inode.”…”�”}”(hjÚPh²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+Pubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj#h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œsys_flock (C function)”Œ c.sys_flock”hNt”auh1hýhj#h²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]”(jf)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj Qh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjQh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´MÚubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjQh²hh³jQh´MÚubjC)�”}”(hŒ sys_flock”h]”jI)�”}”(hŒ sys_flock”h]”hŒ sys_flock”…”�”}”(hj*Qh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj&Qubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjQh²hh³jQh´MÚubj=)�”}”(hŒ#(unsigned int fd, unsigned int cmd)”h]”(jC)�”}”(hŒunsigned int fd”h]”(jf)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjFQh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjBQubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTQh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjBQubjf)�”}”(hŒint”h]”hŒint”…”�”}”(hjbQh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjBQubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjpQh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjBQubjI)�”}”(hŒfd”h]”hŒfd”…”�”}”(hj~Qh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjBQubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj>QubjC)�”}”(hŒunsigned int cmd”h]”(jf)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj—Qh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj“Qubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥Qh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj“Qubjf)�”}”(hŒint”h]”hŒint”…”�”}”(hj³Qh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj“Qubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁQh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj“QubjI)�”}”(hŒcmd”h]”hŒcmd”…”�”}”(hjÏQh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj“Qubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj>Qubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjQh²hh³jQh´MÚubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjQh²hh³jQh´MÚubah}”(h]”jüPah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jQh´MÚhjþPh²hubjw)�”}”(hhh]”jžD)�”}”(hhh]”j£D)�”}”(hŒflock() system call.”h]”hÌ)�”}”(hjþQh]”hŒflock() system call.”…”�”}”(hjRh²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üQubah}”(h]”h ]”h"]”h$]”h&]”uh1j¢DhjùQh²hh³j Rh´Nubah}”(h]”h ]”h"]”h$]”h&]”jÜDjœ!uh1j�Dh³j Rh´MÚhjöQh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjþPh²hh³jQh´MÚubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j#Rjšj#Rj›‰jœ‰j�‰uh1jh²hhj#h³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-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:47: ./fs/locks.c”h´MÞhj'Rubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ1``unsigned int fd`` the file descriptor to lock. ”h]”(jÊ)�”}”(hŒ``unsigned int fd``”h]”jÐ)�”}”(hjLRh]”hŒunsigned int fd”…”�”}”(hjNRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjJRubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´MÛhjFRubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe file descriptor to lock.”h]”hŒthe file descriptor to lock.”…”�”}”(hjeRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jaRh´MÛhjbRubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjFRubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jaRh´MÛhjCRubjÄ)�”}”(hŒ0``unsigned int cmd`` the type of lock to apply. ”h]”(jÊ)�”}”(hŒ``unsigned int cmd``”h]”jÐ)�”}”(hj…Rh]”hŒunsigned int cmd”…”�”}”(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:47: ./fs/locks.c”h´MÜhjRubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe type of lock to apply.”h]”hŒthe type of lock to apply.”…”�”}”(hjžRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jšRh´MÜhj›Rubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjRubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jšRh´MÜhjCRubeh}”(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³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´MÞhj'Rubj��)�”}”(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ÚRh²hh³Nh´NubjÐ)�”}”(hŒ ``FL_FLOCK``”h]”hŒFL_FLOCK”…”�”}”(hjâRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÚRubhŒ, style lock to an open file descriptor. The ”…”�”}”(hjÚRh²hh³Nh´Nubj©)�”}”(hŒ**cmd**”h]”hŒcmd”…”�”}”(hjôRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÚRubhŒ can be one of:”…”�”}”(hjÚRh²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ÖRubjžD)�”}”(hhh]”(j£D)�”}”(hŒ``LOCK_SH`` -- a shared lock.”h]”hÌ)�”}”(hjSh]”(jÐ)�”}”(hŒ ``LOCK_SH``”h]”hŒLOCK_SH”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjSubhŒ -- a shared lock.”…”�”}”(hjSh²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àhjSubah}”(h]”h ]”h"]”h$]”h&]”uh1j¢Dhj Subj£D)�”}”(hŒ!``LOCK_EX`` -- an exclusive lock.”h]”hÌ)�”}”(hj8Sh]”(jÐ)�”}”(hŒ ``LOCK_EX``”h]”hŒLOCK_EX”…”�”}”(hj=Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj:SubhŒ -- an exclusive lock.”…”�”}”(hj:Sh²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áhj6Subah}”(h]”h ]”h"]”h$]”h&]”uh1j¢Dhj Subj£D)�”}”(hŒ'``LOCK_UN`` -- remove an existing lock.”h]”hÌ)�”}”(hj^Sh]”(jÐ)�”}”(hŒ ``LOCK_UN``”h]”hŒLOCK_UN”…”�”}”(hjcSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj`SubhŒ -- remove an existing lock.”…”�”}”(hj`Sh²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\Subah}”(h]”h ]”h"]”h$]”h&]”uh1j¢Dhj Subj£D)�”}”(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ŠSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj†SubhŒ) -- a ‘mandatory’ flock. (DEPRECATED)”…”�”}”(hj†Sh²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‚Subah}”(h]”h ]”h"]”h$]”h&]”uh1j¢Dhj Subeh}”(h]”h ]”h"]”h$]”h&]”jÜDjœ!uh1j�Dh³j/Sh´MàhjÖRubhÌ)�”}”(hŒ7``LOCK_MAND`` support has been removed from the kernel.”h]”(jÐ)�”}”(hŒ ``LOCK_MAND``”h]”hŒ LOCK_MAND”…”�”}”(hj³Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¯SubhŒ* support has been removed from the kernel.”…”�”}”(hj¯Sh²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ÖRubeh}”(h]”h ]”h"]”h$]”h&]”uh1jœ�h³j Sh´MÝhj'Rubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj#h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ locks_translate_pid (C function)”Œc.locks_translate_pid”hNt”auh1hýhj#h²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õ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Œlocks_translate_pid”sbŒc.locks_translate_pid”†”asbuh1hhjîSh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:47: ./fs/locks.c”h´M@ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjîSh²hh³jTh´M@ ubjC)�”}”(hŒlocks_translate_pid”h]”jI)�”}”(hjTh]”hŒlocks_translate_pid”…”�”}”(hj)Th²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj%Tubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjîSh²hh³jTh´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”…”�”}”(hjDTh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj@Tubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQTh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj@Tubh)�”}”(hhh]”jI)�”}”(hŒfile_lock_core”h]”hŒfile_lock_core”…”�”}”(hjbTh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj_Tubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jdTŒmodname”NŒ classname”Njj )�”}”j ]”jTŒc.locks_translate_pid”†”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Œfl”h]”hŒfl”…”�”}”(hj›Th²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj@Tubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjah"]”h$]”h&]”uh1j1hj°Tubh)�”}”(hhh]”jI)�”}”(hŒ pid_namespace”h]”hŒ pid_namespace”…”�”}”(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 ]”jTŒc.locks_translate_pid”†”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Œns”h]”hŒns”…”�”}”(hj Uh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj°Tubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjUsed 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”…”�”}”(hjVh²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 hjQUubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj#h²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”…”�”}”(hj!Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjVh²hh³hÊh´K3ubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œmpage_readahead (C function)”Œc.mpage_readahead”hNt”auh1hýhjVh²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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjHVh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjDVh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:53: ./fs/mpage.c”h´M@ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWVh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjDVh²hh³jVVh´M@ubjC)�”}”(hŒmpage_readahead”h]”jI)�”}”(hŒmpage_readahead”h]”hŒmpage_readahead”…”�”}”(hjiVh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjeVubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjDVh²hh³jVVh´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…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Œreadahead_control”h]”hŒreadahead_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)�”}”jjkVsbŒc.mpage_readahead”†”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Œrac”h]”hŒrac”…”�”}”(hjÞVh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj�Vubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj}VubjC)�”}”(hŒget_block_t get_block”h]”(h)�”}”(hhh]”jI)�”}”(hŒ get_block_t”h]”hŒ get_block_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¿VŒc.mpage_readahead”†”asbuh1hhjóVubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjóVubjI)�”}”(hŒ get_block”h]”hŒ get_block”…”�”}”(hj&Wh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjóVubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj}Vubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjDVh²hh³jVVh´M@ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj@Vh²hh³jVVh´M@ubah}”(h]”j;Vah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jVVh´M@hj=Vh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒstart reads against pages”h]”hŒstart reads against pages”…”�”}”(hjPWh²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@hjMWh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj=Vh²hh³jVVh´M@ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jhWjšjhWj›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(hjrWh]”hŒ Parameters”…”�”}”(hjtWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjpWubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:53: ./fs/mpage.c”h´MDhjlWubj¿)�”}”(hhh]”(jÄ)�”}”(hŒA``struct readahead_control *rac`` Describes which pages to read. ”h]”(jÊ)�”}”(hŒ!``struct readahead_control *rac``”h]”jÐ)�”}”(hj‘Wh]”hŒstruct readahead_control *rac”…”�”}”(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:53: ./fs/mpage.c”h´MAhj‹Wubjæ)�”}”(hhh]”hÌ)�”}”(hŒDescribes which pages to read.”h]”hŒDescribes which pages to read.”…”�”}”(hjªWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¦Wh´MAhj§Wubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj‹Wubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¦Wh´MAhjˆWubjÄ)�”}”(hŒB``get_block_t get_block`` The filesystem's block mapper function. ”h]”(jÊ)�”}”(hŒ``get_block_t get_block``”h]”jÐ)�”}”(hjÊWh]”hŒget_block_t get_block”…”�”}”(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:53: ./fs/mpage.c”h´MBhjÄWubjæ)�”}”(hhh]”hÌ)�”}”(hŒ'The filesystem's block mapper function.”h]”hŒ)The filesystem’s block mapper function.”…”�”}”(hjãWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jßWh´MBhjàWubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÄWubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jßWh´MBhjˆWubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjlWubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjXh]”hŒ Description”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjXubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:53: ./fs/mpage.c”h´MDhjlWubhÌ)�”}”(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.”…”�”}”(hjXh²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´MChjlWubhÌ)�”}”(hŒ%If anything unusual happens, such as:”h]”hŒ%If anything unusual happens, such as:”…”�”}”(hj*Xh²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´MFhjlWubjžD)�”}”(hhh]”(j£D)�”}”(hŒ%encountering a page which has buffers”h]”hÌ)�”}”(hj>Xh]”hŒ%encountering a page which has buffers”…”�”}”(hj@Xh²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´MHhjah"]”h$]”h&]”uh1j1hj)Yh²hh³j;Yh´MˆubjC)�”}”(hŒ__mpage_writepages”h]”jI)�”}”(hŒ__mpage_writepages”h]”hŒ__mpage_writepages”…”�”}”(hjNYh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjJYubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj)Yh²hh³j;Yh´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”…”�”}”(hjjYh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjfYubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwYh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjfYubh)�”}”(hhh]”jI)�”}”(hŒ address_space”h]”hŒ address_space”…”�”}”(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)�”}”jjPYsbŒc.__mpage_writepages”†”asbuh1hhjfYubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨Yh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjfYubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj¶Yh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjfYubjI)�”}”(hŒmapping”h]”hŒmapping”…”�”}”(hjÃYh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjfYubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjbYubjC)�”}”(hŒstruct writeback_control *wbc”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Œwriteback_control”h]”hŒwriteback_control”…”�”}”(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¤YŒc.__mpage_writepages”†”asbuh1hhjØYubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjØYubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj&Zh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjØYubjI)�”}”(hŒwbc”h]”hŒwbc”…”�”}”(hj3Zh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjØYubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjbYubjC)�”}”(hŒget_block_t get_block”h]”(h)�”}”(hhh]”jI)�”}”(hŒ get_block_t”h]”hŒ get_block_t”…”�”}”(hjOZh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjLZubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jQZŒmodname”NŒ classname”Njj )�”}”j ]”j¤YŒc.__mpage_writepages”†”asbuh1hhjHZubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjmZh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjHZubjI)�”}”(hŒ get_block”h]”hŒ get_block”…”�”}”(hj{Zh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjHZubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjbYubjC)�”}”(hŒFint (*write_folio)(struct folio *folio, struct writeback_control *wbc)”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj”Zh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj�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�Zubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj½Zh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj�ZubjI)�”}”(hŒ write_folio”h]”hŒ write_folio”…”�”}”(hjÊZh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj�Zubj“)�”}”(hjÏ™h]”hŒ)”…”�”}”(hjØZh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj�Zubj“)�”}”(hj¦™h]”hŒ(”…”�”}”(hjåZh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj�Zubj )�”}”(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Œ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¤YŒc.__mpage_writepages”†”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Œfolio”h]”hŒfolio”…”�”}”(hjI[h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj�Zubj“)�”}”(hj3šh]”hŒ,”…”�”}”(hjW[h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj�Zubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjd[h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj�Zubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjr[h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj�Zubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj�Zubh)�”}”(hhh]”jI)�”}”(hŒwriteback_control”h]”hŒwriteback_control”…”�”}”(hj�[h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj�[ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j’[Œmodname”NŒ classname”Njj )�”}”j ]”j¤YŒc.__mpage_writepages”†”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Œwbc”h]”hŒwbc”…”�”}”(hjÉ[h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj�Zubj“)�”}”(hjÏ™h]”hŒ)”…”�”}”(hj×[h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj�Zubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjbYubeh}”(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Œ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”…”�”}”(hj\h²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ý[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²hhjVh³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©)�”}”(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:53: ./fs/mpage.c”h´MŒhj\ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒC``struct address_space *mapping`` address space structure to write ”h]”(jÊ)�”}”(hŒ!``struct address_space *mapping``”h]”jÐ)�”}”(hjA\h]”hŒstruct address_space *mapping”…”�”}”(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:53: ./fs/mpage.c”h´MŠhj;\ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ address space structure to write”h]”hŒ address space structure to write”…”�”}”(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Œ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Ð)�”}”(hjz\h]”hŒstruct writeback_control *wbc”…”�”}”(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:53: ./fs/mpage.c”h´M‹hjt\ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ?subtract the number of written pages from ***wbc->nr_to_write**”h]”(hŒ*subtract the number of written pages from ”…”�”}”(hj“\h²hh³Nh´Nubj©)�”}”(hŒ***wbc->nr_to_write**”h]”hŒ*wbc->nr_to_write”…”�”}”(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ŒB``get_block_t get_block`` the filesystem's block mapper function. ”h]”(jÊ)�”}”(hŒ``get_block_t get_block``”h]”jÐ)�”}”(hjÁ\h]”hŒget_block_t get_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:53: ./fs/mpage.c”h´MŒhj»\ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ'the filesystem's block mapper function.”h]”hŒ)the filesystem’s block mapper function.”…”�”}”(hjÚ\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hË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Œ�``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ú\h]”hŒFint (*write_folio)(struct folio *folio, struct writeback_control *wbc)”…”�”}”(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:53: ./fs/mpage.c”h´MŽhjô\ubjæ)�”}”(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()”…”�”}”(hj]h²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]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©)�”}”(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:53: ./fs/mpage.c”h´M�hj\ubhÌ)�”}”(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 ”…”�”}”(hjL]h²hh³Nh´Nubj©)�”}”(hŒ**write_folio**”h]”hŒ write_folio”…”�”}”(hjT]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjL]ubhŒr handler for each folio. If the handler returns value > 0, it calls mpage_write_folio() to do the folio writeback.”…”�”}”(hjL]h²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�hj\ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œgeneric_permission (C function)”Œc.generic_permission”hNt”auh1hýhjVh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒOint generic_permission (struct mnt_idmap *idmap, struct inode *inode, int mask)”h]”j)�”}”(hŒNint generic_permission(struct mnt_idmap *idmap, struct inode *inode, int mask)”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj�]h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj‰]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Œgeneric_permission”h]”jI)�”}”(hŒgeneric_permission”h]”hŒgeneric_permission”…”�”}”(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Œ8(struct mnt_idmap *idmap, struct inode *inode, int mask)”h]”(jC)�”}”(hŒstruct mnt_idmap *idmap”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Œ 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.generic_permission”†”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 *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(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^ubh)�”}”(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^Œc.generic_permission”†”asbuh1hhj8^ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjx^h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj8^ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj†^h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj8^ubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj“^h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj8^ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÂ]ubjC)�”}”(hŒint mask”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj¬^h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj¨^ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjº^h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¨^ubjI)�”}”(hŒmask”h]”hŒmask”…”�”}”(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Œ2check for access rights on a Posix-like filesystem”h]”hŒ2check for access rights on a Posix-like filesystem”…”�”}”(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²hhjVh³Nh´NubjŸ)�”}”(hXû**Parameters** ``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_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ŒH``struct mnt_idmap *idmap`` idmap of the mount the inode was found from ”h]”(jÊ)�”}”(hŒ``struct mnt_idmap *idmap``”h]”jÐ)�”}”(hj3_h]”hŒ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 the inode was found from”h]”hŒ+idmap of the mount the inode was found from”…”�”}”(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Œ9``struct inode *inode`` inode to check access rights for ”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:56: ./fs/namei.c”h´Möhjf_ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ inode to check access rights for”h]”hŒ inode to check access rights for”…”�”}”(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Œc``int mask`` right to check for (``MAY_READ``, ``MAY_WRITE``, ``MAY_EXEC``, ``MAY_NOT_BLOCK`` ...) ”h]”(jÊ)�”}”(hŒ ``int mask``”h]”jÐ)�”}”(hj¥_h]”hŒint mask”…”�”}”(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ŒUright to check for (``MAY_READ``, ``MAY_WRITE``, ``MAY_EXEC``, ``MAY_NOT_BLOCK`` ...)”h]”(hŒright to check for (”…”�”}”(hj¾_h²hh³Nh´NubjÐ)�”}”(hŒ ``MAY_READ``”h]”hŒMAY_READ”…”�”}”(hjÆ_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¾_ubhŒ, ”…”�”}”(hj¾_h²hh³Nh´NubjÐ)�”}”(hŒ ``MAY_WRITE``”h]”hŒ MAY_WRITE”…”�”}”(hjØ_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¾_ubhŒ, ”…”�”}”hj¾_sbjÐ)�”}”(hŒ ``MAY_EXEC``”h]”hŒMAY_EXEC”…”�”}”(hjê_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¾_ubhŒ, ”…”�”}”(hj¾_h²hh³Nh´NubjÐ)�”}”(hŒ``MAY_NOT_BLOCK``”h]”hŒ MAY_NOT_BLOCK”…”�”}”(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»_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ŒÓ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?`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ŒÈ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.”…”�”}”(hjN`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”…”�”}”(hje`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”…”�”}”(hjw`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žhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œinode_permission (C function)”Œc.inode_permission”hNt”auh1hýhjVh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒMint inode_permission (struct mnt_idmap *idmap, struct inode *inode, int mask)”h]”j)�”}”(hŒLint inode_permission(struct mnt_idmap *idmap, struct inode *inode, int mask)”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjÂ`h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj¾`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Œinode_permission”h]”jI)�”}”(hŒinode_permission”h]”hŒinode_permission”…”�”}”(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Œ8(struct mnt_idmap *idmap, struct inode *inode, int mask)”h]”(jC)�”}”(hŒstruct mnt_idmap *idmap”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÿ`h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjû`ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ah²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjû`ubh)�”}”(hhh]”jI)�”}”(hŒ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjaubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jaŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjå`sbŒc.inode_permission”†”asbuh1hhjû`ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=ah²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjû`ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjKah²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjû`ubjI)�”}”(hŒidmap”h]”hŒidmap”…”�”}”(hjXah²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”…”�”}”(hjqah²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjmaubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~ah²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjmaubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(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 ]”j9aŒc.inode_permission”†”asbuh1hhjmaubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­ah²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjmaubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj»ah²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjmaubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjÈah²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjmaubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj÷`ubjC)�”}”(hŒint mask”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjáah²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÝaubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïah²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÝaubjI)�”}”(hŒmask”h]”hŒmask”…”�”}”(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´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Œ(Check for access rights to a given inode”h]”hŒ(Check for access rights to a given inode”…”�”}”(hj'bh²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$bh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj·`h²hh³jÐ`h´Miubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j?bjšj?bj›‰jœ‰j�‰uh1jh²hhjVh³Nh´NubjŸ)�”}”(hX **Parameters** ``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©)�”}”(hjIbh]”hŒ Parameters”…”�”}”(hjKbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjGbubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MmhjCbubj¿)�”}”(hhh]”(jÄ)�”}”(hŒH``struct mnt_idmap *idmap`` idmap of the mount the inode was found from ”h]”(jÊ)�”}”(hŒ``struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjhbh]”hŒstruct mnt_idmap *idmap”…”�”}”(hjjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjfbubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mjhjbbubjæ)�”}”(hhh]”hÌ)�”}”(hŒ+idmap of the mount the inode was found from”h]”hŒ+idmap of the mount the inode was found from”…”�”}”(hj�bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j}bh´Mjhj~bubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjbbubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j}bh´Mjhj_bubjÄ)�”}”(hŒ5``struct inode *inode`` Inode to check permission 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³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mkhj›bubjæ)�”}”(hhh]”hÌ)�”}”(hŒInode to check permission on”h]”hŒInode to check permission on”…”�”}”(hjºbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¶bh´Mkhj·bubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj›bubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¶bh´Mkhj_bubjÄ)�”}”(hŒL``int mask`` Right to check for (``MAY_READ``, ``MAY_WRITE``, ``MAY_EXEC``) ”h]”(jÊ)�”}”(hŒ ``int mask``”h]”jÐ)�”}”(hjÚbh]”hŒint mask”…”�”}”(hjÜbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjØbubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MlhjÔbubjæ)�”}”(hhh]”hÌ)�”}”(hŒ>Right to check for (``MAY_READ``, ``MAY_WRITE``, ``MAY_EXEC``)”h]”(hŒRight to check for (”…”�”}”(hjóbh²hh³Nh´NubjÐ)�”}”(hŒ ``MAY_READ``”h]”hŒMAY_READ”…”�”}”(hjûbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjóbubhŒ, ”…”�”}”(hjóbh²hh³Nh´NubjÐ)�”}”(hŒ ``MAY_WRITE``”h]”hŒ MAY_WRITE”…”�”}”(hj ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjóbubhŒ, ”…”�”}”hjóbsbjÐ)�”}”(hŒ ``MAY_EXEC``”h]”hŒMAY_EXEC”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjóbubhŒ)”…”�”}”(hjóbh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jïbh´Mlhjðbubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÔbubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jïbh´Mlhj_bubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjCbubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjKch]”hŒ Description”…”�”}”(hjMch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjIcubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MnhjCbubhÌ)�”}”(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.”…”�”}”(hjach²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´MmhjCbubhÌ)�”}”(hŒEWhen checking for MAY_APPEND, MAY_WRITE must also be set in **mask**.”h]”(hŒah"]”h$]”h&]”uh1j1hj­ch²hh³j¿ch´M¾ubjC)�”}”(hŒpath_get”h]”jI)�”}”(hŒpath_get”h]”hŒpath_get”…”�”}”(hjÒch²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÎcubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj­ch²hh³j¿ch´M¾ubj=)�”}”(hŒ(const struct path *path)”h]”jC)�”}”(hŒconst struct path *path”h]”(j )�”}”(hj¾h]”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 dh²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êcubh)�”}”(hhh]”jI)�”}”(hŒpath”h]”hŒpath”…”�”}”(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)�”}”jjÔcsbŒ c.path_get”†”asbuh1hhjêcubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGdh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjêcubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjUdh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjêcubjI)�”}”(hŒpath”h]”hŒpath”…”�”}”(hjbdh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjêcubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjæcubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj­ch²hh³j¿ch´M¾ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj©ch²hh³j¿ch´M¾ubah}”(h]”j¤cah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j¿ch´M¾hj¦ch²hubjw)�”}”(hhh]”hÌ)�”}”(hŒget a reference to a path”h]”hŒget a reference to a path”…”�”}”(hjŒdh²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‰dh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj¦ch²hh³j¿ch´M¾ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j¤djšj¤dj›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(hj®dh]”hŒ Parameters”…”�”}”(hj°dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¬dubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MÂhj¨dubj¿)�”}”(hhh]”jÄ)�”}”(hŒ9``const struct path *path`` path to get the reference to ”h]”(jÊ)�”}”(hŒ``const struct path *path``”h]”jÐ)�”}”(hjÍdh]”hŒconst struct path *path”…”�”}”(hjÏdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjËdubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M¿hjÇdubjæ)�”}”(hhh]”hÌ)�”}”(hŒpath to get the reference to”h]”hŒpath to get the reference to”…”�”}”(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Ädubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj¨dubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjeh]”hŒ Description”…”�”}”(hj eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjeubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MÁhj¨dubhÌ)�”}”(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.”…”�”}”(hjeh²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¨dubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œpath_put (C function)”Œ c.path_put”hNt”auh1hýhjVh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ'void path_put (const struct path *path)”h]”j)�”}”(hŒ&void path_put(const struct path *path)”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjMeh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjIeh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MËubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\eh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjIeh²hh³j[eh´MËubjC)�”}”(hŒpath_put”h]”jI)�”}”(hŒpath_put”h]”hŒpath_put”…”�”}”(hjneh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjjeubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjIeh²hh³j[eh´MËubj=)�”}”(hŒ(const struct path *path)”h]”jC)�”}”(hŒconst struct path *path”h]”(j )�”}”(hj¾h]”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Œpath”h]”hŒpath”…”�”}”(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)�”}”jjpesbŒ c.path_put”†”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Œpath”h]”hŒpath”…”�”}”(hjþeh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj†eubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj‚eubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjIeh²hh³j[eh´MËubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjEeh²hh³j[eh´MËubah}”(h]”j@eah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j[eh´MËhjBeh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒput a reference to a path”h]”hŒput a reference to a path”…”�”}”(hj(fh²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%fh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjBeh²hh³j[eh´MËubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j@fjšj@fj›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(hjJfh]”hŒ Parameters”…”�”}”(hjLfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjHfubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MÏhjDfubj¿)�”}”(hhh]”jÄ)�”}”(hŒ9``const struct path *path`` path to put the reference to ”h]”(jÊ)�”}”(hŒ``const struct path *path``”h]”jÐ)�”}”(hjifh]”hŒconst struct path *path”…”�”}”(hjkfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjgfubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MÌhjcfubjæ)�”}”(hhh]”hÌ)�”}”(hŒpath to put the reference to”h]”hŒpath to put the reference to”…”�”}”(hj‚fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j~fh´MÌhjfubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjcfubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j~fh´MÌhj`fubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjDfubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj¤fh]”hŒ Description”…”�”}”(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:56: ./fs/namei.c”h´MÎhjDfubhÌ)�”}”(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ºfh²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ÍhjDfubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œend_dirop (C function)”Œ c.end_dirop”hNt”auh1hýhjVh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ"void end_dirop (struct dentry *de)”h]”j)�”}”(hŒ!void end_dirop(struct dentry *de)”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjéfh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjåfh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MŸ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjøfh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjåfh²hh³j÷fh´MŸ ubjC)�”}”(hŒ end_dirop”h]”jI)�”}”(hŒ end_dirop”h]”hŒ end_dirop”…”�”}”(hj gh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjgubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjåfh²hh³j÷fh´MŸ ubj=)�”}”(hŒ(struct dentry *de)”h]”jC)�”}”(hŒstruct dentry *de”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj&gh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj"gubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3gh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj"gubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjDgh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjAgubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jFgŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj gsbŒ c.end_dirop”†”asbuh1hhj"gubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdgh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj"gubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjrgh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj"gubjI)�”}”(hŒde”h]”hŒde”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj"gubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjgubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjåfh²hh³j÷fh´MŸ ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjáfh²hh³j÷fh´MŸ ubah}”(h]”jÜfah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j÷fh´MŸ hjÞfh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒsignal completion of a dirop”h]”hŒsignal completion of a dirop”…”�”}”(hj©gh²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¦gh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÞfh²hh³j÷fh´MŸ ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÁgjšjÁgj›‰jœ‰j�‰uh1jh²hhjVh³Nh´NubjŸ)�”}”(hŒÿ**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 release (dput()).”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³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M£ hjÅgubj¿)�”}”(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Ð)�”}”(hjêgh]”hŒstruct dentry *de”…”�”}”(hjìgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjègubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M  hjägubjæ)�”}”(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.”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÿgh´M  hjhubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjägubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÿgh´M  hjágubah}”(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³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M¢ hjÅgubhÌ)�”}”(hŒŒIf the de is an error, nothing happens. Otherwise any lock taken to protect the dentry is dropped and the dentry itself is release (dput()).”h]”hŒŒIf the de is an error, nothing happens. Otherwise any lock taken to protect the dentry is dropped and the dentry itself is release (dput()).”…”�”}”(hj;hh²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Ågubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²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ýhjVh²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjjhh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjfhh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mþ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyhh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjfhh²hh³jxhh´Mþ ubjC)�”}”(hŒvfs_path_parent_lookup”h]”jI)�”}”(hŒvfs_path_parent_lookup”h]”hŒvfs_path_parent_lookup”…”�”}”(hj‹hh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‡hubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjfhh²hh³jxhh´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§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Œfilename”h]”hŒfilename”…”�”}”(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)�”}”jj�hsbŒc.vfs_path_parent_lookup”†”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Œfilename”h]”hŒfilename”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj£hubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjŸhubjC)�”}”(hŒunsigned int flags”h]”(jf)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjiubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'ih²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjiubjf)�”}”(hŒint”h]”hŒint”…”�”}”(hj5ih²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjiubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCih²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjiubjI)�”}”(hŒflags”h]”hŒflags”…”�”}”(hjQih²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjiubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjŸhubjC)�”}”(hŒstruct path *parent”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjjih²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjfiubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwih²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjfiubh)�”}”(hhh]”jI)�”}”(hŒpath”h]”hŒpath”…”�”}”(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áhŒc.vfs_path_parent_lookup”†”asbuh1hhjfiubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦ih²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjfiubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj´ih²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjfiubjI)�”}”(hŒparent”h]”hŒparent”…”�”}”(hjÁih²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjfiubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjŸhubjC)�”}”(hŒstruct qstr *last”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Œqstr”h]”hŒqstr”…”�”}”(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áhŒc.vfs_path_parent_lookup”†”asbuh1hhjÖiubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjjh²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Œlast”h]”hŒlast”…”�”}”(hj1jh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÖiubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjŸhubjC)�”}”(hŒconst struct path *root”h]”(j )�”}”(hj¾h]”hŒconst”…”�”}”(hjJjh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjFjubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWjh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjFjubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjejh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjFjubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrjh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjFjubh)�”}”(hhh]”jI)�”}”(hŒpath”h]”hŒpath”…”�”}”(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áhŒc.vfs_path_parent_lookup”†”asbuh1hhjFjubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡jh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjFjubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj¯jh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjFjubjI)�”}”(hŒroot”h]”hŒroot”…”�”}”(hj¼jh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjFjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjŸhubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjfhh²hh³jxhh´Mþ ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjbhh²hh³jxhh´Mþ ubah}”(h]”j]hah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jxhh´Mþ hj_hh²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æjh²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ãjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj_hh²hh³jxhh´Mþ ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jþjjšjþjj›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(hjkh]”hŒ Parameters”…”�”}”(hj kh²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:56: ./fs/namei.c”h´M hjkubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ1``struct filename *filename`` filename structure ”h]”(jÊ)�”}”(hŒ``struct filename *filename``”h]”jÐ)�”}”(hj'kh]”hŒstruct filename *filename”…”�”}”(hj)kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj%kubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mÿ hj!kubjæ)�”}”(hhh]”hÌ)�”}”(hŒfilename structure”h]”hŒfilename structure”…”�”}”(hj@kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jah"]”h$]”h&]”uh1j1hjalh²hh³jslh´M ubjC)�”}”(hŒvfs_path_lookup”h]”jI)�”}”(hŒvfs_path_lookup”h]”hŒvfs_path_lookup”…”�”}”(hj†lh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‚lubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjalh²hh³jslh´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¢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Œ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)�”}”jjˆlsbŒc.vfs_path_lookup”†”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Œdentry”h]”hŒdentry”…”�”}”(hjûlh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjžlubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjšlubjC)�”}”(hŒstruct vfsmount *mnt”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Œvfsmount”h]”hŒvfsmount”…”�”}”(hj2mh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj/mubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j4mŒmodname”NŒ classname”Njj )�”}”j ]”jÜlŒc.vfs_path_lookup”†”asbuh1hhjmubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPmh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjmubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj^mh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjmubjI)�”}”(hŒmnt”h]”hŒmnt”…”�”}”(hjkmh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjmubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjšlubjC)�”}”(hŒconst char *name”h]”(j )�”}”(hj¾h]”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€mubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjŸmh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj€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Œname”h]”hŒname”…”�”}”(hjÈmh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj€mubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjšlubjC)�”}”(hŒunsigned int flags”h]”(jf)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjámh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÝmubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïmh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÝmubjf)�”}”(hŒint”h]”hŒint”…”�”}”(hjýmh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÝmubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj nh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÝmubjI)�”}”(hŒflags”h]”hŒflags”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÝmubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjšlubjC)�”}”(hŒstruct path *path”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj2nh²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Œpath”h]”hŒpath”…”�”}”(hjPnh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjMnubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jRnŒmodname”NŒ classname”Njj )�”}”j ]”jÜlŒc.vfs_path_lookup”†”asbuh1hhj.nubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnnh²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Œpath”h]”hŒpath”…”�”}”(hj‰nh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj.nubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjšlubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjalh²hh³jslh´M ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj]lh²hh³jslh´M ubah}”(h]”jXlah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jslh´M hjZlh²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³nh²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°nh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjZlh²hh³jslh´M ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jËnjšjËnj›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(hjÕnh]”hŒ Parameters”…”�”}”(hj×nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÓ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Ïnubj¿)�”}”(hhh]”(jÄ)�”}”(hŒB``struct dentry *dentry`` pointer to dentry of the base directory ”h]”(jÊ)�”}”(hŒ``struct dentry *dentry``”h]”jÐ)�”}”(hjônh]”hŒstruct dentry *dentry”…”�”}”(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:56: ./fs/namei.c”h´M hjînubjæ)�”}”(hhh]”hÌ)�”}”(hŒ'pointer to dentry of the base directory”h]”hŒ'pointer to dentry of the base directory”…”�”}”(hj oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j oh´M hj oubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjînubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j oh´M hjënubjÄ)�”}”(hŒD``struct vfsmount *mnt`` pointer to vfs mount of the base directory ”h]”(jÊ)�”}”(hŒ``struct vfsmount *mnt``”h]”jÐ)�”}”(hj-oh]”hŒstruct vfsmount *mnt”…”�”}”(hj/oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj+oubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M hj'oubjæ)�”}”(hhh]”hÌ)�”}”(hŒ*pointer to vfs mount of the base directory”h]”hŒ*pointer to vfs mount of the base directory”…”�”}”(hjFoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jBoh´M hjCoubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj'oubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jBoh´M hjënubjÄ)�”}”(hŒ*``const char *name`` pointer to file name ”h]”(jÊ)�”}”(hŒ``const char *name``”h]”jÐ)�”}”(hjfoh]”hŒconst char *name”…”�”}”(hjhoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjdoubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M hj`oubjæ)�”}”(hhh]”hÌ)�”}”(hŒpointer to file name”h]”hŒpointer to file name”…”�”}”(hjoh²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ënubjÄ)�”}”(hŒ$``unsigned int flags`` lookup flags ”h]”(jÊ)�”}”(hŒ``unsigned int flags``”h]”jÐ)�”}”(hjŸoh]”hŒunsigned int flags”…”�”}”(hj¡oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj�oubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M hj™oubjæ)�”}”(hhh]”hÌ)�”}”(hŒ lookup flags”h]”hŒ lookup flags”…”�”}”(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ënubjÄ)�”}”(hŒ4``struct path *path`` pointer to struct path to fill”h]”(jÊ)�”}”(hŒ``struct path *path``”h]”jÐ)�”}”(hjØoh]”hŒstruct path *path”…”�”}”(hjÚoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÖoubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M hjÒoubjæ)�”}”(hhh]”hÌ)�”}”(hŒpointer to struct path to fill”h]”hŒpointer to struct path to fill”…”�”}”(hjñoh²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îoubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÒoubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jíoh´M hjënubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÏnubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œtry_lookup_noperm (C function)”Œc.try_lookup_noperm”hNt”auh1hýhjVh²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”…”�”}”(hj2ph²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj.ph²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MR ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@ph²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj.ph²hh³j?ph´MR ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjQph²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjNpubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jSpŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒtry_lookup_noperm”sbŒc.try_lookup_noperm”†”asbuh1hhj.ph²hh³j?ph´MR ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrph²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj.ph²hh³j?ph´MR ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj€ph²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj.ph²hh³j?ph´MR ubjC)�”}”(hŒtry_lookup_noperm”h]”jI)�”}”(hjoph]”hŒtry_lookup_noperm”…”�”}”(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´MR ubj=)�”}”(hŒ((struct qstr *name, struct dentry *base)”h]”(jC)�”}”(hŒstruct qstr *name”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Œqstr”h]”hŒqstr”…”�”}”(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 ]”jmpŒc.try_lookup_noperm”†”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Œname”h]”hŒname”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¨pubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¤pubjC)�”}”(hŒstruct dentry *base”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjqubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)qh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjqubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj:qh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj7qubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jah"]”h$]”h&]”uh1j1hjqubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjfqh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjqubjI)�”}”(hŒbase”h]”hŒbase”…”�”}”(hjsqh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjqubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¤pubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj.ph²hh³j?ph´MR ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj*ph²hh³j?ph´MR ubah}”(h]”j%pah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j?ph´MR hj'ph²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ5filesystem helper to lookup single pathname component”h]”hŒ5filesystem helper to lookup single pathname component”…”�”}”(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´MR hjšqh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj'ph²hh³j?ph´MR ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jµqjšjµqj›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(hj¿qh]”hŒ Parameters”…”�”}”(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:56: ./fs/namei.c”h´MV hj¹qubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ@``struct qstr *name`` qstr storing pathname component to lookup ”h]”(jÊ)�”}”(hŒ``struct qstr *name``”h]”jÐ)�”}”(hjÞqh]”hŒstruct qstr *name”…”�”}”(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:56: ./fs/namei.c”h´MS hjØqubjæ)�”}”(hhh]”hÌ)�”}”(hŒ)qstr storing pathname component to lookup”h]”hŒ)qstr storing pathname component to lookup”…”�”}”(hj÷qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jóqh´MS hjôqubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjØqubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jóqh´MS hjÕqubjÄ)�”}”(hŒ6``struct dentry *base`` base directory to lookup from ”h]”(jÊ)�”}”(hŒ``struct dentry *base``”h]”jÐ)�”}”(hjrh]”hŒstruct dentry *base”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjrubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MT hjrubjæ)�”}”(hhh]”hÌ)�”}”(hŒbase directory to lookup from”h]”hŒbase directory to lookup from”…”�”}”(hj0rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j,rh´MT hj-rubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjrubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j,rh´MT hjÕqubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj¹qubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjRrh]”hŒ Description”…”�”}”(hjTrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjPrubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MV hj¹qubhÌ)�”}”(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.”…”�”}”(hjhrh²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´MU hj¹qubhÌ)�”}”(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.”…”�”}”(hjwrh²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 hj¹qubhÌ)�”}”(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†rh²hh³Nh´Nubj©)�”}”(hŒ**base**”h]”hŒbase”…”�”}”(hjŽrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj†rubhŒ is needed.”…”�”}”(hj†rh²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¹qubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hj©rh]”hŒReturn”…”�”}”(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:56: ./fs/namei.c”h´M_ hj¹qubjžD)�”}”(hhh]”(j£D)�”}”(hŒ!ref-counted dentry on success, or”h]”hÌ)�”}”(hjÄrh]”hŒ!ref-counted dentry on success, or”…”�”}”(hjÆrh²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Ârubah}”(h]”h ]”h"]”h$]”h&]”uh1j¢Dhj¿rubj£D)�”}”(hŒ'``NULL`` if name could not be found, or”h]”hÌ)�”}”(hjÜrh]”(jÐ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjárh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÞrubhŒ if name could not be found, or”…”�”}”(hjÞrh²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´Ma hjÚrubah}”(h]”h ]”h"]”h$]”h&]”uh1j¢Dhj¿rubj£D)�”}”(hŒHERR_PTR(-EACCES) if name is dot or dotdot or contains a slash or nul, or”h]”hÌ)�”}”(hjsh]”hŒHERR_PTR(-EACCES) if name is dot or dotdot or contains a slash or nul, or”…”�”}”(hjsh²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 hjsubah}”(h]”h ]”h"]”h$]”h&]”uh1j¢Dhj¿rubj£D)�”}”(hŒ=ERR_PTR() if fs provide ->d_hash, and this returned an error.”h]”hÌ)�”}”(hjsh]”hŒ=ERR_PTR() if fs provide ->d_hash, and this returned an error.”…”�”}”(hjsh²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 hjsubah}”(h]”h ]”h"]”h$]”h&]”uh1j¢Dhj¿rubeh}”(h]”h ]”h"]”h$]”h&]”jÜDjœ!uh1j�Dh³jÓrh´M` hj¹qubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œlookup_noperm (C function)”Œc.lookup_noperm”hNt”auh1hýhjVh²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”…”�”}”(hjVsh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjRsh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Ms ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdsh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjRsh²hh³jcsh´Ms ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjush²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjrsubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jwsŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒ lookup_noperm”sbŒc.lookup_noperm”†”asbuh1hhjRsh²hh³jcsh´Ms ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–sh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjRsh²hh³jcsh´Ms ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj¤sh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjRsh²hh³jcsh´Ms ubjC)�”}”(hŒ lookup_noperm”h]”jI)�”}”(hj“sh]”hŒ lookup_noperm”…”�”}”(hjµsh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj±subah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjRsh²hh³jcsh´Ms ubj=)�”}”(hŒ((struct qstr *name, struct dentry *base)”h]”(jC)�”}”(hŒstruct qstr *name”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Œqstr”h]”hŒqstr”…”�”}”(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‘sŒc.lookup_noperm”†”asbuh1hhjÌsubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj th²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Œname”h]”hŒname”…”�”}”(hj'th²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÌsubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÈsubjC)�”}”(hŒstruct dentry *base”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj@th²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjah"]”h$]”h&]”uh1j1hjah"]”h$]”h&]”uh1j1hji_rwsem.”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:56: ./fs/namei.c”h´Mw hjÝtubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ@``struct qstr *name`` qstr storing pathname component to lookup ”h]”(jÊ)�”}”(hŒ``struct qstr *name``”h]”jÐ)�”}”(hjuh]”hŒstruct qstr *name”…”�”}”(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:56: ./fs/namei.c”h´Mt hjütubjæ)�”}”(hhh]”hÌ)�”}”(hŒ)qstr storing pathname component to lookup”h]”hŒ)qstr storing pathname component to lookup”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³juh´Mt hjuubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjütubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³juh´Mt hjùtubjÄ)�”}”(hŒ6``struct dentry *base`` base directory to lookup from ”h]”(jÊ)�”}”(hŒ``struct dentry *base``”h]”jÐ)�”}”(hj;uh]”hŒstruct dentry *base”…”�”}”(hj=uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj9uubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mu hj5uubjæ)�”}”(hhh]”hÌ)�”}”(hŒbase directory to lookup from”h]”hŒbase directory to lookup from”…”�”}”(hjTuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jPuh´Mu hjQuubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj5uubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jPuh´Mu hjùtubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÝtubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjvuh]”hŒ Description”…”�”}”(hjxuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjtuubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mw hjÝtubhÌ)�”}”(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Œ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´Mv hjÝtubhÌ)�”}”(hŒ#The caller must hold base->i_rwsem.”h]”hŒ#The caller must hold base->i_rwsem.”…”�”}”(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´My hjÝtubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œlookup_one (C function)”Œ c.lookup_one”hNt”auh1hýhjVh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ\struct dentry * lookup_one (struct mnt_idmap *idmap, struct qstr *name, struct dentry *base)”h]”j)�”}”(hŒZstruct dentry *lookup_one(struct mnt_idmap *idmap, struct qstr *name, struct dentry *base)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÊuh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÆuh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M� ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØuh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÆuh²hh³j×uh´M� ubh)�”}”(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Œ lookup_one”sbŒ c.lookup_one”†”asbuh1hhjÆuh²hh³j×uh´M� ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj vh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÆuh²hh³j×uh´M� ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjÆuh²hh³j×uh´M� ubjC)�”}”(hŒ lookup_one”h]”jI)�”}”(hjvh]”hŒ lookup_one”…”�”}”(hj)vh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj%vubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjÆuh²hh³j×uh´M� ubj=)�”}”(hŒA(struct mnt_idmap *idmap, struct qstr *name, struct dentry *base)”h]”(jC)�”}”(hŒstruct mnt_idmap *idmap”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjDvh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj@vubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQvh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj@vubh)�”}”(hhh]”jI)�”}”(hŒ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(hjbvh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj_vubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jdvŒmodname”NŒ classname”Njj )�”}”j ]”jvŒ c.lookup_one”†”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Œidmap”h]”hŒidmap”…”�”}”(hj›vh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj@vubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjah"]”h$]”h&]”uh1j1hj°vubh)�”}”(hhh]”jI)�”}”(hŒqstr”h]”hŒqstr”…”�”}”(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 ]”jvŒ c.lookup_one”†”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Œname”h]”hŒname”…”�”}”(hj wh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj°vubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjah"]”h$]”h&]”uh1j1hj wubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjBwh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj?wubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jDwŒmodname”NŒ classname”Njj )�”}”j ]”jvŒ c.lookup_one”†”asbuh1hhj wubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`wh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj wubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjnwh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj wubjI)�”}”(hŒbase”h]”hŒbase”…”�”}”(hj{wh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj wubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhji_rwsem.”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ŒL``struct mnt_idmap *idmap`` idmap of the mount the lookup is performed from ”h]”(jÊ)�”}”(hŒ``struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjæwh]”hŒstruct mnt_idmap *idmap”…”�”}”(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Œ/idmap of the mount the lookup is performed from”h]”hŒ/idmap of the mount the lookup is performed from”…”�”}”(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ÝwubjÄ)�”}”(hŒ@``struct qstr *name`` qstr holding pathname component to lookup ”h]”(jÊ)�”}”(hŒ``struct qstr *name``”h]”jÐ)�”}”(hjxh]”hŒstruct qstr *name”…”�”}”(hj!xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjxubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M� hjxubjæ)�”}”(hhh]”hÌ)�”}”(hŒ)qstr holding pathname component to lookup”h]”hŒ)qstr holding pathname component to lookup”…”�”}”(hj8xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j4xh´M� hj5xubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjxubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j4xh´M� hjÝwubjÄ)�”}”(hŒ6``struct dentry *base`` base directory to lookup from ”h]”(jÊ)�”}”(hŒ``struct dentry *base``”h]”jÐ)�”}”(hjXxh]”hŒstruct dentry *base”…”�”}”(hjZxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjVxubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M� hjRxubjæ)�”}”(hhh]”hÌ)�”}”(hŒbase directory to lookup from”h]”hŒbase directory to lookup from”…”�”}”(hjqxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jmxh´M� hjnxubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjRxubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jmxh´M� hjÝwubeh}”(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Œ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©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ÁwubhÌ)�”}”(hŒ#The caller must hold base->i_rwsem.”h]”hŒ#The caller must hold base->i_rwsem.”…”�”}”(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žhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ lookup_one_unlocked (C function)”Œc.lookup_one_unlocked”hNt”auh1hýhjVh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒestruct dentry * lookup_one_unlocked (struct mnt_idmap *idmap, struct qstr *name, struct dentry *base)”h]”j)�”}”(hŒcstruct dentry *lookup_one_unlocked(struct mnt_idmap *idmap, struct qstr *name, struct dentry *base)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjçxh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjãxh²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&]”uh1j1hjãxh²hh³jôxh´M¨ ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjyubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jyŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒlookup_one_unlocked”sbŒc.lookup_one_unlocked”†”asbuh1hhjãxh²hh³jôxh´M¨ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'yh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjãxh²hh³jôxh´M¨ ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj5yh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjãxh²hh³jôxh´M¨ ubjC)�”}”(hŒlookup_one_unlocked”h]”jI)�”}”(hj$yh]”hŒlookup_one_unlocked”…”�”}”(hjFyh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjByubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjãxh²hh³jôxh´M¨ ubj=)�”}”(hŒA(struct mnt_idmap *idmap, struct qstr *name, struct dentry *base)”h]”(jC)�”}”(hŒstruct mnt_idmap *idmap”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjayh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj]yubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnyh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj]yubh)�”}”(hhh]”jI)�”}”(hŒ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(hjyh²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"yŒc.lookup_one_unlocked”†”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Œidmap”h]”hŒidmap”…”�”}”(hj¸yh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj]yubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjYyubjC)�”}”(hŒstruct qstr *name”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Œqstr”h]”hŒqstr”…”�”}”(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"yŒc.lookup_one_unlocked”†”asbuh1hhjÍyubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj zh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÍyubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjÍyubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hj(zh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÍyubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjYyubjC)�”}”(hŒstruct dentry *base”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjAzh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj=zubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNzh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj=zubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj_zh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj\zubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jazŒmodname”NŒ classname”Njj )�”}”j ]”j"yŒc.lookup_one_unlocked”†”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Œbase”h]”hŒbase”…”�”}”(hj˜zh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj=zubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjYyubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjãxh²hh³jôxh´M¨ ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjßxh²hh³jôxh´M¨ ubah}”(h]”jÚxah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jôxh´M¨ hjÜxh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ lookup single pathname component”h]”hŒ lookup single pathname component”…”�”}”(hjÂzh²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¿zh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÜxh²hh³jôxh´M¨ ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÚzjšjÚzj›‰jœ‰j�‰uh1jh²hhjVh³Nh´NubjŸ)�”}”(hXm**Parameters** ``struct mnt_idmap *idmap`` idmap of the mount the lookup is performed from ``struct qstr *name`` qstr olding 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äzh]”hŒ Parameters”…”�”}”(hjæzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjâzubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M¬ hjÞzubj¿)�”}”(hhh]”(jÄ)�”}”(hŒL``struct mnt_idmap *idmap`` idmap of the mount the lookup is performed from ”h]”(jÊ)�”}”(hŒ``struct mnt_idmap *idmap``”h]”jÐ)�”}”(hj{h]”hŒ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ýzubjæ)�”}”(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ýzubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j{h´M© hjúzubjÄ)�”}”(hŒ?``struct qstr *name`` qstr olding 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ª hj6{ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ(qstr olding pathname component to lookup”h]”hŒ(qstr olding pathname component to lookup”…”�”}”(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úzubjÄ)�”}”(hŒ6``struct dentry *base`` base directory to lookup from ”h]”(jÊ)�”}”(hŒ``struct dentry *base``”h]”jÐ)�”}”(hju{h]”hŒstruct dentry *base”…”�”}”(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:56: ./fs/namei.c”h´M« hjo{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åhjo{ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jŠ{h´M« hjúzubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÞzubhÌ)�”}”(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ÞzubhÌ)�”}”(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ÞzubhÌ)�”}”(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Þ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³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M± hjÞzubjžD)�”}”(hhh]”(j£D)�”}”(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¢Dhjü{ubj£D)�”}”(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¢Dhjü{ubj£D)�”}”(hŒ/ERR_PTR(-ENOENT) if parent has been removed, or”h]”hÌ)�”}”(hj1|h]”hŒ/ERR_PTR(-ENOENT) if parent has been removed, or”…”�”}”(hj3|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¢Dhjü{ubj£D)�”}”(hŒ7ERR_PTR(-EACCES) if parent directory is not searchable.”h]”hÌ)�”}”(hjI|h]”hŒ7ERR_PTR(-EACCES) if parent directory is not searchable.”…”�”}”(hjK|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¢Dhjü{ubeh}”(h]”h ]”h"]”h$]”h&]”jÜDjœ!uh1j�Dh³j|h´M² hjÞzubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²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ýhjVh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒnstruct dentry * lookup_one_positive_killable (struct mnt_idmap *idmap, struct qstr *name, struct dentry *base)”h]”j)�”}”(hŒlstruct dentry *lookup_one_positive_killable(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_killable”sbŒc.lookup_one_positive_killable”†”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_killable”h]”jI)�”}”(hjÂ|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`jauh1jBhj�|h²hh³j’|h´MÉ ubj=)�”}”(hŒA(struct mnt_idmap *idmap, struct qstr *name, struct dentry *base)”h]”(jC)�”}”(hŒstruct mnt_idmap *idmap”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Œ 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_positive_killable”†”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Œidmap”h]”hŒidmap”…”�”}”(hjV}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”…”�”}”(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Œ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_killable”†”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Œname”h]”hŒname”…”�”}”(hjÆ}h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjk}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_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”…”�”}”(hj6~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Œ 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&]”uh1jvhjz|h²hh³j’|h´MÉ ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jx~jšjx~j›‰jœ‰j�‰uh1jh²hhjVh³Nh´NubjŸ)�”}”(hXà**Parameters** ``struct mnt_idmap *idmap`` idmap of the mount the lookup is performed from ``struct qstr *name`` qstr olding 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 dentry, possibly negative, or - same errors as lookup_one_unlocked() or - ERR_PTR(-EINTR) if a fatal signal is pending.”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ŒL``struct mnt_idmap *idmap`` idmap of the mount the lookup is performed from ”h]”(jÊ)�”}”(hŒ``struct mnt_idmap *idmap``”h]”jÐ)�”}”(hj¡~h]”hŒ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 olding 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 olding pathname component to lookup”h]”hŒ(qstr olding 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Ð)�”}”(hjh]”hŒstruct dentry *base”…”�”}”(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: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©)�”}”(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: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.”…”�”}”(hjdh²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.”…”�”}”(hjsh²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ŒÀ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”…”�”}”(hj™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Ö 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ŒyA dentry, possibly negative, or - same errors as lookup_one_unlocked() or - ERR_PTR(-EINTR) if a fatal signal is pending.”h]”hŒyA dentry, possibly negative, 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Û hj|~ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²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ýhjVh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒnstruct dentry * lookup_one_positive_unlocked (struct mnt_idmap *idmap, struct qstr *name, struct dentry *base)”h]”j)�”}”(hŒlstruct dentry *lookup_one_positive_unlocked(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Œ ”…”�”}”(hj9€h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjõh²hh³j€h´Mö ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjG€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)�”}”(hj6€h]”hŒlookup_one_positive_unlocked”…”�”}”(hjX€h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjT€ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjõh²hh³j€h´Mö ubj=)�”}”(hŒA(struct mnt_idmap *idmap, struct qstr *name, struct dentry *base)”h]”(jC)�”}”(hŒstruct mnt_idmap *idmap”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Œ 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 ]”j4€Œc.lookup_one_positive_unlocked”†”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Œidmap”h]”hŒidmap”…”�”}”(hjÊ€h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjo€ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjk€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 ]”j4€Œ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`jauh1jBhjk€ubjC)�”}”(hŒstruct dentry *base”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Œ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 ]”j4€Œc.lookup_one_positive_unlocked”†”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Œbase”h]”hŒbase”…”�”}”(hjª�h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjO�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjk€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²hhjVh³Nh´NubjŸ)�”}”(hXL**Parameters** ``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ŒL``struct mnt_idmap *idmap`` idmap of the mount the lookup is performed from ”h]”(jÊ)�”}”(hŒ``struct mnt_idmap *idmap``”h]”jÐ)�”}”(hj‚h]”hŒ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Ð)�”}”(hjN‚h]”hŒstruct qstr *name”…”�”}”(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´Mø hjH‚ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ)qstr holding pathname component to lookup”h]”hŒ)qstr holding pathname component to lookup”…”�”}”(hjg‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jc‚h´Mø hjd‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjH‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jc‚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”…”�”}”(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žhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ#lookup_noperm_unlocked (C function)”Œc.lookup_noperm_unlocked”hNt”auh1hýhjVh²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&]”uh1jhjWƒh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjiƒh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjWƒ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Œlookup_noperm_unlocked”sbŒc.lookup_noperm_unlocked”†”asbuh1hhjWƒh²hh³jhƒh´M ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›ƒh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjWƒh²hh³jhƒh´M ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj©ƒh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjWƒh²hh³jhƒ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`jauh1jBhjWƒh²hh³jhƒ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”…”�”}”(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”…”�”}”(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.lookup_noperm_unlocked”†”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Œbase”h]”hŒbase”…”�”}”(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<hjWƒh²hh³jhƒh´M ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjSƒh²hh³jhƒh´M ubah}”(h]”jNƒah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jhƒh´M hjPƒ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&]”uh1jvhjPƒh²hh³jhƒh´M ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÞ„jšjÞ„j›‰jœ‰j�‰uh1jh²hhjVh³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”…”�”}”(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:56: ./fs/namei.c”h´M hj:…ubjæ)�”}”(hhh]”hÌ)�”}”(hŒbase directory to lookup from”h]”hŒbase directory to lookup from”…”�”}”(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³Œ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.”…”�”}”(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Œ{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žhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œstart_creating (C function)”Œc.start_creating”hNt”auh1hýhjVh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒbstruct dentry * start_creating (struct mnt_idmap *idmap, struct dentry *parent, struct qstr *name)”h]”j)�”}”(hŒ`struct dentry *start_creating(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´MU ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%†h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj†h²hh³j$†h´MU 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)�”}”jŒstart_creating”sbŒc.start_creating”†”asbuh1hhj†h²hh³j$†h´MU ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjW†h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj†h²hh³j$†h´MU ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hje†h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj†h²hh³j$†h´MU ubjC)�”}”(hŒstart_creating”h]”jI)�”}”(hjT†h]”hŒstart_creating”…”�”}”(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´MU ubj=)�”}”(hŒC(struct mnt_idmap *idmap, struct dentry *parent, struct qstr *name)”h]”(jC)�”}”(hŒstruct mnt_idmap *idmap”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Œ 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 ]”jR†Œc.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Œ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 *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 ]”jR†Œ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`jauh1jBhj‰†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 ]”jR†Œ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`jauh1jBhj‰†ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj†h²hh³j$†h´MU ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj†h²hh³j$†h´MU ubah}”(h]”j †ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j$†h´MU 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´MU hjï‡h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj †h²hh³j$†h´MU ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j ˆjšj ˆj›‰jœ‰j�‰uh1jh²hhjVh³Nh´NubjŸ)�”}”(hX/**Parameters** ``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´MY hjˆubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ/``struct mnt_idmap *idmap`` idmap of the mount ”h]”(jÊ)�”}”(hŒ``struct mnt_idmap *idmap``”h]”jÐ)�”}”(hj3ˆh]”hŒ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´MV 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´MV hjIˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj-ˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jHˆh´MV 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´MW 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´MW hj‚ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjfˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j�ˆh´MW 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´MX 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´MX hj»ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjŸˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jºˆh´MX 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´MZ 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´MY 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´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´Ma 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´Mb hjˆubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œstart_removing (C function)”Œc.start_removing”hNt”auh1hýhjVh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒbstruct dentry * start_removing (struct mnt_idmap *idmap, struct dentry *parent, struct qstr *name)”h]”j)�”}”(hŒ`struct dentry *start_removing(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´Mp ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{‰h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hji‰h²hh³jz‰h´Mp 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´Mp ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­‰h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hji‰h²hh³jz‰h´Mp ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj»‰h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hji‰h²hh³jz‰h´Mp 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´Mp ubj=)�”}”(hŒC(struct mnt_idmap *idmap, struct dentry *parent, struct qstr *name)”h]”(jC)�”}”(hŒstruct mnt_idmap *idmap”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Œ 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Œ*”…”�”}”(hj1Š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 *parent”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjWŠh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjSŠubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdŠh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjSŠ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¨‰Œc.start_removing”†”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Œ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”…”�”}”(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´Mp ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhje‰h²hh³jz‰h´Mp ubah}”(h]”j`‰ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jz‰h´Mp 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”…”�”}”(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´Mp hjE‹h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjb‰h²hh³jz‰h´Mp ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j`‹jšj`‹j›‰jœ‰j�‰uh1jh²hhjVh³Nh´NubjŸ)�”}”(hX**Parameters** ``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 in 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©)�”}”(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:56: ./fs/namei.c”h´Mt hjd‹ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ/``struct mnt_idmap *idmap`` idmap of the mount ”h]”(jÊ)�”}”(hŒ``struct mnt_idmap *idmap``”h]”jÐ)�”}”(hj‰‹h]”hŒ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´Mq 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´Mq hjŸ‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjƒ‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jž‹h´Mq 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´Mr 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´Mr hjØ‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¼‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j׋h´Mr 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´Ms 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´Ms hjŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjõ‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jŒh´Ms hj€‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjd‹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:56: ./fs/namei.c”h´Mu hjd‹ubhÌ)�”}”(hŒ—Locks are taken and a lookup in 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 in performed prior to removing an object from a directory. Permission checking (MAY_EXEC) is performed against ”…”�”}”(hjLŒh²hh³Nh´Nubj©)�”}”(hŒ **idmap**”h]”hŒidmap”…”�”}”(hjTŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjLŒubhŒ.”…”�”}”(hjLŒ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´Mt hjd‹ubhÌ)�”}”(hŒ0If the name doesn't exist, an error is returned.”h]”hŒ2If the name doesn’t exist, an error is returned.”…”�”}”(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´Mx hjd‹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´Mz 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:56: ./fs/namei.c”h´M| hjd‹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} hjd‹ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ$start_creating_killable (C function)”Œc.start_creating_killable”hNt”auh1hýhjVh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒkstruct dentry * start_creating_killable (struct mnt_idmap *idmap, struct dentry *parent, struct qstr *name)”h]”j)�”}”(hŒistruct dentry *start_creating_killable(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_killable”sbŒc.start_creating_killable”†”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_creating_killable”h]”jI)�”}”(hj�h]”hŒstart_creating_killable”…”�”}”(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ŒC(struct mnt_idmap *idmap, struct dentry *parent, struct qstr *name)”h]”(jC)�”}”(hŒstruct mnt_idmap *idmap”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Œ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(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 �Œc.start_creating_killable”†”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Œidmap”h]”hŒidmap”…”�”}”(hj£�h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjH�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjD�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”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¸�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjD�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Œ ”…”�”}”(hj9Žh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj(Žubh)�”}”(hhh]”jI)�”}”(hŒqstr”h]”hŒqstr”…”�”}”(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 �Œc.start_creating_killable”†”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Œname”h]”hŒname”…”�”}”(hjƒŽh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj(Žubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjD�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Œ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´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²hhjVh³Nh´NubjŸ)�”}”(hX-**Parameters** ``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 in 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´M� hjÉŽubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ/``struct mnt_idmap *idmap`` idmap of the mount ”h]”(jÊ)�”}”(hŒ``struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjîŽh]”hŒ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Œ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”…”�”}”(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:56: ./fs/namei.c”h´MŽ hjZ�ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe name to be created”h]”hŒthe name to be created”…”�”}”(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åŽ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Œ•Locks are taken and a lookup in 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 in 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´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.”…”�”}”(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žhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ$start_removing_killable (C function)”Œc.start_removing_killable”hNt”auh1hýhjVh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒkstruct dentry * start_removing_killable (struct mnt_idmap *idmap, struct dentry *parent, struct qstr *name)”h]”j)�”}”(hŒistruct dentry *start_removing_killable(struct mnt_idmap *idmap, struct dentry *parent, struct qstr *name)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj7�h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj3�h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M¨ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjE�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj3�h²hh³jD�h´M¨ 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)�”}”jŒstart_removing_killable”sbŒc.start_removing_killable”†”asbuh1hhj3�h²hh³jD�h´M¨ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjw�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj3�h²hh³jD�h´M¨ ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj…�h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj3�h²hh³jD�h´M¨ ubjC)�”}”(hŒstart_removing_killable”h]”jI)�”}”(hjt�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`jauh1jBhj3�h²hh³jD�h´M¨ ubj=)�”}”(hŒC(struct mnt_idmap *idmap, struct dentry *parent, struct qstr *name)”h]”(jC)�”}”(hŒstruct mnt_idmap *idmap”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Œ 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 ]”jr�Œ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Œ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 *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”jA‘Œmodname”NŒ classname”Njj )�”}”j ]”jr�Œ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Œ*”…”�”}”(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`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 ]”jr�Œ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”…”�”}”(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<hj3�h²hh³jD�h´M¨ ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj/�h²hh³jD�h´M¨ ubah}”(h]”j*�ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jD�h´M¨ hj,�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”…”�”}”(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³jD�h´M¨ ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j*’jšj*’j›‰jœ‰j�‰uh1jh²hhjVh³Nh´NubjŸ)�”}”(hXS**Parameters** ``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 in 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©)�”}”(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:56: ./fs/namei.c”h´M¬ hj.’ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ/``struct mnt_idmap *idmap`` idmap of the mount ”h]”(jÊ)�”}”(hŒ``struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjS’h]”hŒstruct mnt_idmap *idmap”…”�”}”(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:56: ./fs/namei.c”h´M© hjM’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åhjM’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jh’h´M© hjJ’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ª hjJ’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« 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³Œ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 in 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 in performed prior to removing an object from 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´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.”…”�”}”(hj7“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.”…”�”}”(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Ì)�”}”(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;”…”�”}”(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Œ **Return**”h]”j©)�”}”(hjf“h]”hŒReturn”…”�”}”(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: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žhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ"start_creating_noperm (C function)”Œc.start_creating_noperm”hNt”auh1hýhjVh²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Œ*”…”�”}”(hjù“h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj§“h²hh³j¸“h´MÇ ubjC)�”}”(hŒstart_creating_noperm”h]”jI)�”}”(hjè“h]”hŒstart_creating_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Œ ”…”�”}”(hj2”h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj!”ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(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.start_creating_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Œ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 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_creating_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 create a given name without permission checking”h]”hŒ:prepare to create 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²hhjVh³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 in 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©)�”}”(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ŒK``struct dentry *parent`` directory in which to prepare to create the name ”h]”(jÊ)�”}”(hŒ``struct dentry *parent``”h]”jÐ)�”}”(hjW•h]”hŒstruct dentry *parent”…”�”}”(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Œ0directory in which to prepare to create the name”h]”hŒ0directory in which to prepare to create the name”…”�”}”(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Œ-``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É 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ŒULocks are taken and a lookup in performed prior to creating an object in a directory.”h]”hŒULocks are taken and a lookup in performed prior to creating an object in 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Ê hj2•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Í 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´MÏ hj2•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Ð hj2•ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ"start_removing_noperm (C function)”Œc.start_removing_noperm”hNt”auh1hýhjVh²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”…”�”}”(hjF–h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjB–h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MÞ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjT–h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjB–h²hh³jS–h´MÞ 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Œstart_removing_noperm”sbŒc.start_removing_noperm”†”asbuh1hhjB–h²hh³jS–h´MÞ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†–h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjB–h²hh³jS–h´MÞ ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj”–h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjB–h²hh³jS–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`jauh1jBhjB–h²hh³jS–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”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Œ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 qstr *name”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Œqstr”h]”hŒqstr”…”�”}”(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�–Œc.start_removing_noperm”†”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Œ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<hjB–h²hh³jS–h´MÞ ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj>–h²hh³jS–h´MÞ ubah}”(h]”j9–ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jS–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³jS–h´MÞ ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÉ—jšjÉ—j›‰jœ‰j�‰uh1jh²hhjVh³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 in 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Ð)�”}”(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”…”�”}”(hjD˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j@˜h´Mà hjA˜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:56: ./fs/namei.c”h´Mâ hjÍ—ubhÌ)�”}”(hŒWLocks are taken and a lookup in performed prior to removing an object from a directory.”h]”hŒWLocks are taken and a lookup in 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žhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ"start_creating_dentry (C function)”Œc.start_creating_dentry”hNt”auh1hýhjVh²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”…”�”}”(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_dentry”sbŒc.start_creating_dentry”†”asbuh1hhjì˜h²hh³jý˜h´M÷ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0™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_creating_dentry”h]”jI)�”}”(hj-™h]”hŒstart_creating_dentry”…”�”}”(hjO™h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjK™ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjì˜h²hh³jý˜h´M÷ ubj=)�”}”(hŒ-(struct dentry *parent, struct dentry *child)”h]”(jC)�”}”(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”…”�”}”(hjˆ™h²hh³Nh´Nubah}”(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”†”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`jauh1jBhjb™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_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Œchild”h]”hŒchild”…”�”}”(hj1šh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÖ™ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjb™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 dentry”h]”hŒ prepare to 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÷ hjXšh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjå˜h²hh³jý˜h´M÷ ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jsšjšjsšj›‰jœ‰j�‰uh1jh²hhjVh³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 again 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û hjwš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´Mø hj–š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´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``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´Mù hjÏš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´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¾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³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mû hjwšubhÌ)�”}”(hŒ„A lock is taken to protect the dentry again 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 again 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´Mú hjwš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.”…”�”}”(hj5›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ý hjwš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.”…”�”}”(hjD›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´MhjwšubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hjU›h]”hŒReturn”…”�”}”(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:56: ./fs/namei.c”h´MhjwšubhÌ)�”}”(hŒthe valid dentry, or an error.”h]”hŒthe valid dentry, or an error.”…”�”}”(hjk›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´Mhjwšubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ"start_removing_dentry (C function)”Œc.start_removing_dentry”hNt”auh1hýhjVh²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Œ*”…”�”}”(hjè›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”…”�”}”(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 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”…”�”}”(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.start_removing_dentry”†”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Œparent”h]”hŒparent”…”�”}”(hjkœ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Œ ”…”�”}”(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”…”�”}”(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²hhjVh³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 again 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©)�”}”(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ŒH``struct dentry *parent`` directory from which dentry should be removed ”h]”(jÊ)�”}”(hŒ``struct dentry *parent``”h]”jÐ)�”}”(hjF�h]”hŒstruct dentry *parent”…”�”}”(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´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´Mhjy�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åhjy�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´Mhj!�ubhÌ)�”}”(hŒ„A lock is taken to protect the dentry again 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 again 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´Mhj!�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.”…”�”}”(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Œ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Œ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žhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œstart_renaming (C function)”Œc.start_renaming”hNt”auh1hýhjVh²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjDžh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj@žh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mqubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSžh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj@žh²hh³jRžh´MqubjC)�”}”(hŒstart_renaming”h]”jI)�”}”(hŒstart_renaming”h]”hŒstart_renaming”…”�”}”(hježh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjažubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj@žh²hh³jRžh´Mqubj=)�”}”(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)�”}”jjgž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`jauh1jBhjyžubjC)�”}”(hŒint lookup_flags”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjóžh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjïžubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸ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`jauh1jBhjyžubjC)�”}”(hŒstruct qstr *old_last”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Œ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.start_renaming”†”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Œold_last”h]”hŒold_last”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj$Ÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjyž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Œ*”…”�”}”(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`jauh1jBhjyžubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj@žh²hh³jRžh´Mqubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj<žh²hh³jRžh´Mqubah}”(h]”j7žah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jRžh´Mqhj9ž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”…”�”}”(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 h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj9žh²hh³jRžh´Mqubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j1 jšj1 j›‰jœ‰j�‰uh1jh²hhjVh³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¨hj9 ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Muhj5 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Ð)�”}”(hjZ h]”hŒstruct renamedata *rd”…”�”}”(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´MshjT 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”…”�”}”(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´Mrhjp ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjT ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jo h´MshjQ 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´MuhjŽ 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´Mthjª ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjŽ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j© h´MuhjQ 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´MvhjÈ ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ#name of object in **rd.old_parent**”h]”(hŒname of object in ”…”�”}”(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ç ubeh}”(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´MvhjQ ubjÄ)�”}”(hŒ>``struct qstr *new_last`` name of object in **rd.new_parent** ”h]”(jÊ)�”}”(hŒ``struct qstr *new_last``”h]”jÐ)�”}”(hj¡h]”hŒstruct qstr *new_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´Mwhj¡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”…”�”}”(hj6¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj.¡ubeh}”(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´MwhjQ 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:56: ./fs/namei.c”h´Myhj5 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.”…”�”}”(hjt¡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´Mxhj5 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´M{hj5 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´Mhj5 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‚hj5 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ƒhj5 ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ"start_renaming_dentry (C function)”Œc.start_renaming_dentry”hNt”auh1hýhjVh²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj0¢h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj,¢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”…”�”}”(hjQ¢h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjM¢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”…”�”}”(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Œ 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)�”}”jjS¢sbŒc.start_renaming_dentry”†”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Œrd”h]”hŒrd”…”�”}”(hjÆ¢h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhji¢ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhje¢ubjC)�”}”(hŒint lookup_flags”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjߢh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÛ¢ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjí¢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`jauh1jBhje¢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”…”�”}”(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.start_renaming_dentry”†”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Œ old_dentry”h]”hŒ old_dentry”…”�”}”(hjk£h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj£ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhje¢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`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Œ8lookup and lock name for rename with permission checking”h]”hŒ8lookup and lock name for rename 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²hhjVh³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©)�”}”(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Ð)�”}”(hjF¤h]”hŒstruct renamedata *rd”…”�”}”(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Œ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Óhjz¤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åhjz¤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Ð)�”}”(hjó¤h]”hŒstruct qstr *new_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 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”…”�”}”(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´M×hj!¤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.”…”�”}”(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´MÖhj!¤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 ”…”�”}”(hja¥h²hh³Nh´Nubj©)�”}”(hŒ**rd.new_dentry**”h]”hŒ rd.new_dentry”…”�”}”(hji¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hja¥ubhŒ and ”…”�”}”(hja¥h²hh³Nh´Nubj©)�”}”(hŒ**rd.old_parent**”h]”hŒ rd.old_parent”…”�”}”(hj{¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hja¥ubhŒ" is confirmed to be the parent of ”…”�”}”(hja¥h²hh³Nh´Nubj©)�”}”(hŒ**old_dentry**”h]”hŒ old_dentry”…”�”}”(hj�¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hja¥ubhŒ. If it was originally ”…”�”}”(hja¥h²hh³Nh´NubjÐ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjŸ¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhja¥ubhŒo, it is set. In either case a reference is taken so that end_renaming() can have a stable reference to unlock.”…”�”}”(hja¥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Œ‚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à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žhjVh²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ýhjVh²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj/¦h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj+¦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”…”�”}”(hjP¦h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjL¦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”…”�”}”(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Œ 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)�”}”jjR¦sbŒc.start_renaming_two_dentries”†”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Œrd”h]”hŒrd”…”�”}”(hjŦh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjh¦ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjd¦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”…”�”}”(hjü¦h²hh³Nh´Nubah}”(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Œ old_dentry”h]”hŒ old_dentry”…”�”}”(hj5§h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÚ¦ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjd¦ubjC)�”}”(hŒstruct dentry *new_dentry”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Œdentry”h]”hŒdentry”…”�”}”(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.start_renaming_two_dentries”†”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Œ new_dentry”h]”hŒ new_dentry”…”�”}”(hj¥§h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjJ§ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjd¦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Œ,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&]”uh1jvhj$¦h²hh³j=¦h´Móubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jç§jšjç§j›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(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Œ8``struct renamedata *rd`` rename data containing parent ”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Œrename data containing parent”h]”hŒrename data containing parent”…”�”}”(hj)¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hË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``struct dentry *old_dentry`` dentry of name to move ”h]”(jÊ)�”}”(hŒ``struct dentry *old_dentry``”h]”jÐ)�”}”(hjI¨h]”hŒstruct dentry *old_dentry”…”�”}”(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:56: ./fs/namei.c”h´MõhjC¨ubjæ)�”}”(hhh]”hÌ)�”}”(hŒdentry of name to move”h]”hŒdentry of name to move”…”�”}”(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Œ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ö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Œ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 ”…”�”}”(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Œ and ”…”�”}”(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Œ and ”…”�”}”hjâ¨sbj©)�”}”(hŒ**rd.new_parent**”h]”hŒ rd.new_parent”…”�”}”(hj ©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjâ¨ubhŒ1 are confirmed to be the parents of the dentries.”…”�”}”(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Œ:References and the lock can be dropped with end_renaming()”h]”hŒ:References and the lock can be dropped with end_renaming()”…”�”}”(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´Mýhjë§ubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hjJ©h]”hŒReturn”…”�”}”(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: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´Mhjë§ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œvfs_create (C function)”Œ c.vfs_create”hNt”auh1hýhjVh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒiint vfs_create (struct mnt_idmap *idmap, struct dentry *dentry, umode_t mode, struct delegated_inode *di)”h]”j)�”}”(hŒhint vfs_create(struct mnt_idmap *idmap, struct dentry *dentry, umode_t mode, struct delegated_inode *di)”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj�©h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj‹©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_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´M`ubj=)�”}”(hŒZ(struct mnt_idmap *idmap, struct dentry *dentry, umode_t mode, struct delegated_inode *di)”h]”(jC)�”}”(hŒstruct mnt_idmap *idmap”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Œ 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_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Œ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Œ ”…”�”}”(hjKª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&]”uh1jHhjYªubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j^ªŒmodname”NŒ classname”Njj )�”}”j ]”jªŒ c.vfs_create”†”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Œ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 ]”jªŒ 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”…”�”}”(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 *di”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_create”†”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Œdi”h]”hŒdi”…”�”}”(hjM«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 new file”h]”hŒcreate new file”…”�”}”(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`hjt«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²hhjVh³Nh´NubjŸ)�”}”(hX€**Parameters** ``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´Mdhj“«ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒH``struct mnt_idmap *idmap`` idmap of the mount the inode was found from ”h]”(jÊ)�”}”(hŒ``struct mnt_idmap *idmap``”h]”jÐ)�”}”(hj¸«h]”hŒ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´Mahj²«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´MahjΫubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj²«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÍ«h´Mahj¯«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´Mbhjë«ubjæ)�”}”(hhh]”hÌ)�”}”(hŒdentry of the child file”h]”hŒdentry of the child file”…”�”}”(hj ¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¬h´Mbhj¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjë«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¬h´Mbhj¯«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´Mchj$¬ubjæ)�”}”(hhh]”hÌ)�”}”(hŒmode of the child file”h]”hŒmode of the child file”…”�”}”(hjC¬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ŒP``struct delegated_inode *di`` returns parent inode, if the inode is delegated. ”h]”(jÊ)�”}”(hŒ``struct delegated_inode *di``”h]”jÐ)�”}”(hjc¬h]”hŒstruct delegated_inode *di”…”�”}”(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´Mdhj]¬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³jx¬h´Mdhjy¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj]¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jx¬h´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:56: ./fs/namei.c”h´Mfhj“«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´Mehj“«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´Mghj“«ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ kernel_tmpfile_open (C function)”Œc.kernel_tmpfile_open”hNt”auh1hýhjVh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ�struct file * kernel_tmpfile_open (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(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´MNubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6­h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj$­h²hh³j5­h´MNubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(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)�”}”jŒkernel_tmpfile_open”sbŒc.kernel_tmpfile_open”†”asbuh1hhj$­h²hh³j5­h´MNubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh­h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj$­h²hh³j5­h´MNubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjv­h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj$­h²hh³j5­h´MNubjC)�”}”(hŒkernel_tmpfile_open”h]”jI)�”}”(hje­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³j5­h´MNubj=)�”}”(hŒn(struct mnt_idmap *idmap, const struct path *parentpath, umode_t mode, int open_flag, const struct cred *cred)”h]”(jC)�”}”(hŒstruct mnt_idmap *idmap”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Œ 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 ]”jc­Œ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Œ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 )�”}”(hj¾h]”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”…”�”}”(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 ]”jc­Œc.kernel_tmpfile_open”†”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Œ 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 ]”jc­Œc.kernel_tmpfile_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š­ubjC)�”}”(hŒ int open_flag”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjå®h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjá®ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjó®h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjá®ubjI)�”}”(hŒ open_flag”h]”hŒ open_flag”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjá®ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjš­ubjC)�”}”(hŒconst struct cred *cred”h]”(j )�”}”(hj¾h]”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”…”�”}”(hj5¯h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj¯ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjB¯h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¯ubh)�”}”(hhh]”jI)�”}”(hŒcred”h]”hŒcred”…”�”}”(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 ]”jc­Œc.kernel_tmpfile_open”†”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Œ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³j5­h´MNubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj ­h²hh³j5­h´MNubah}”(h]”j­ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j5­h´MNhj­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´MNhj³¯h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj­h²hh³j5­h´MNubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jίjšjίj›‰jœ‰j�‰uh1jh²hhjVh³Nh´NubjŸ)�”}”(hXÐ**Parameters** ``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”…”�”}”(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´MRhjÒ¯ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒH``struct mnt_idmap *idmap`` idmap of the mount the inode was found from ”h]”(jÊ)�”}”(hŒ``struct mnt_idmap *idmap``”h]”jÐ)�”}”(hj÷¯h]”hŒ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´MOhjñ¯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´MOhj °ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjñ¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j °h´MOhjî¯ubjÄ)�”}”(hŒ=``const struct path *parentpath`` path of the base directory ”h]”(jÊ)�”}”(hŒ!``const struct path *parentpath``”h]”jÐ)�”}”(hj0°h]”hŒconst struct path *parentpath”…”�”}”(hj2°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´MPhj*°ubjæ)�”}”(hhh]”hÌ)�”}”(hŒpath of the base directory”h]”hŒpath of the base directory”…”�”}”(hjI°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jE°h´MPhjF°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj*°ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jE°h´MPhjî¯ubjÄ)�”}”(hŒ)``umode_t mode`` mode of the new tmpfile ”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³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MQhjc°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´MQhj°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjc°ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j~°h´MQhjî¯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´MRhjœ°ubjæ)�”}”(hhh]”hÌ)�”}”(hŒflags”h]”hŒflags”…”�”}”(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´MRhjî¯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³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MShjÕ°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´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Ò¯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´MUhjÒ¯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´MThjÒ¯ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œend_creating_path (C function)”Œc.end_creating_path”hNt”auh1hýhjVh²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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj[±h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjW±h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjj±h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjW±h²hh³ji±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&]”uh1jHhjx±ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjW±h²hh³ji±h´Mubj=)�”}”(hŒ0(const struct path *path, struct dentry *dentry)”h]”(jC)�”}”(hŒconst struct path *path”h]”(j )�”}”(hj¾h]”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.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Œ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Œ ”…”�”}”(hj2²h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj!²ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(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.end_creating_path”†”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Œ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<hjW±h²hh³ji±h´Mubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjS±h²hh³ji±h´Mubah}”(h]”jN±ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³ji±h´MhjP±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&]”uh1jvhjP±h²hh³ji±h´Mubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j¾²jšj¾²j›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(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``const struct path *path`` the path instantiated by start_creating_path() ”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³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mhjá²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åhjá²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jü²h´MhjÞ²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()”…”�”}”(hj9³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j5³h´Mhj6³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j5³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¨hjY³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Ì)�”}”(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 ”…”�”}”(hjq³h²hh³Nh´Nubj )�”}”(hŒ*should*”h]”hŒshould”…”�”}”(hjy³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~ hjq³ubhŒ9 be passed to end_creating_path() together with the path.”…”�”}”(hjq³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žhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œdentry_create (C function)”Œc.dentry_create”hNt”auh1hýhjVh²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”…”�”}”(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´M9ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀ³h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj®³h²hh³j¿³h´M9ubh)�”}”(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Œ dentry_create”sbŒc.dentry_create”†”asbuh1hhj®³h²hh³j¿³h´M9ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjò³h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj®³h²hh³j¿³h´M9ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj®³h²hh³j¿³h´M9ubjC)�”}”(hŒ dentry_create”h]”jI)�”}”(hjï³h]”hŒ dentry_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´M9ubj=)�”}”(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Œ ”…”�”}”(hj9´h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj(´ubh)�”}”(hhh]”jI)�”}”(hŒpath”h]”hŒpath”…”�”}”(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í³Œc.dentry_create”†”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Œ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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjœ´h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj˜´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Œ 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.dentry_create”†”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Œconst struct cred *cred”h]”(j )�”}”(hj¾h]”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”…”�”}”(hj4µh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjµubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjAµh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjµubh)�”}”(hhh]”jI)�”}”(hŒcred”h]”hŒcred”…”�”}”(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.dentry_create”†”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Œ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´M9ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjª³h²hh³j¿³h´M9ubah}”(h]”j¥³ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j¿³h´M9hj§³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´M9hj²µh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj§³h²hh³j¿³h´M9ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j͵jšj͵j›‰jœ‰j�‰uh1jh²hhjVh³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´M=hjѵ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:hjðµ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åhjðµubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j ¶h´M:hjíµubjÄ)�”}”(hŒ``int flags`` O\_ flags ”h]”(jÊ)�”}”(hŒ ``int flags``”h]”jÐ)�”}”(hj/¶h]”hŒ int flags”…”�”}”(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:56: ./fs/namei.c”h´M;hj)¶ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ O\_ flags”h]”hŒ O_ flags”…”�”}”(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;hjíµubjÄ)�”}”(hŒ(``umode_t mode`` mode bits for new file ”h]”(jÊ)�”}”(hŒ``umode_t mode``”h]”jÐ)�”}”(hjh¶h]”hŒ umode_t mode”…”�”}”(hjj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjf¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M<hjb¶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åhjb¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j}¶h´M<hjíµ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´M=hj›¶ubjæ)�”}”(hhh]”hÌ)�”}”(hŒcredentials to use”h]”hŒcredentials to use”…”�”}”(hjº¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hË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Œ€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 ”…”�”}”(hjò¶h²hh³Nh´Nubj©)�”}”(hŒ**path->dentry**”h]”hŒ path->dentry”…”�”}”(hjú¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjò¶ubhŒ, for the new file.”…”�”}”(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Œº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´MAhjѵubhÌ)�”}”(hŒJOn success, returns a ``struct file *``. Otherwise an ERR_PTR is returned.”h]”(hŒOn success, returns a ”…”�”}”(hj4·h²hh³Nh´NubjÐ)�”}”(hŒ``struct file *``”h]”hŒ struct file *”…”�”}”(hj<·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj4·ubhŒ#. Otherwise an ERR_PTR is returned.”…”�”}”(hj4·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´MEhjѵubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œvfs_mknod (C function)”Œ c.vfs_mknod”hNt”auh1hýhjVh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ“int vfs_mknod (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(struct mnt_idmap *idmap, struct inode *dir, struct dentry *dentry, umode_t mode, dev_t dev, struct delegated_inode *delegated_inode)”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hju·h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjq·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&]”uh1j1hjq·h²hh³jƒ·h´M„ubjC)�”}”(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`jauh1jBhjq·h²hh³jƒ·h´M„ubj=)�”}”(hŒ…(struct mnt_idmap *idmap, struct inode *dir, struct dentry *dentry, umode_t mode, dev_t dev, struct delegated_inode *delegated_inode)”h]”(jC)�”}”(hŒstruct mnt_idmap *idmap”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Œ 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_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Œ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 ]”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Œ*”…”�”}”(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 *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_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Œ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 ]”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”…”�”}”(hj3¹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”…”�”}”(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.vfs_mknod”†”asbuh1hhjH¹ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjm¹h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjH¹ubjI)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj{¹h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjH¹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_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Œ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<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Œ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´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²hhjVh³Nh´NubjŸ)�”}”(hX**Parameters** ``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©)�”}”(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:56: ./fs/namei.c”h´Mˆhj1ºubj¿)�”}”(hhh]”(jÄ)�”}”(hŒH``struct mnt_idmap *idmap`` idmap of the mount the inode was found from ”h]”(jÊ)�”}”(hŒ``struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjVºh]”hŒstruct mnt_idmap *idmap”…”�”}”(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:56: ./fs/namei.c”h´M…hjPºubjæ)�”}”(hhh]”hÌ)�”}”(hŒ+idmap of the mount the inode was found from”h]”hŒ+idmap of the mount the inode was found from”…”�”}”(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Œ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´M†hj‰º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åhj‰ºubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¤ºh´M†hjMºubjÄ)�”}”(hŒ:``struct dentry *dentry`` dentry of the child device node ”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 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åhjºubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jݺh´M‡hjMº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ˆhjMº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Ïhj8»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M‰hj4»ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ!device number of device to create”h]”hŒ!device number of device to create”…”�”}”(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º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Ð)�”}”(hjs»h]”hŒ'struct delegated_inode *delegated_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:56: ./fs/namei.c”h´MŠhjm»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´MŠhj‰»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjm»ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jˆ»h´MŠhjMº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³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MŒhj1ºubhÌ)�”}”(hŒCreate a device node or file.”h]”hŒCreate a 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´M‹hj1º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�hj1ºubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œvfs_mkdir (C function)”Œ c.vfs_mkdir”hNt”auh1hýhjVh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ”struct dentry * vfs_mkdir (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(struct mnt_idmap *idmap, struct inode *dir, struct dentry *dentry, umode_t mode, struct delegated_inode *delegated_inode)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj8¼h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj4¼h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjF¼h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj4¼h²hh³jE¼h´M 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)�”}”jŒ vfs_mkdir”sbŒ c.vfs_mkdir”†”asbuh1hhj4¼h²hh³jE¼h´M ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjx¼h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj4¼h²hh³jE¼h´M ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj†¼h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj4¼h²hh³jE¼h´M ubjC)�”}”(hŒ vfs_mkdir”h]”jI)�”}”(hju¼h]”hŒ vfs_mkdir”…”�”}”(hj—¼h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj“¼ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj4¼h²hh³jE¼h´M ubj=)�”}”(hŒz(struct mnt_idmap *idmap, struct inode *dir, struct dentry *dentry, umode_t mode, struct delegated_inode *delegated_inode)”h]”(jC)�”}”(hŒstruct mnt_idmap *idmap”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Œ 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 ]”js¼Œ 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Œ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Œ ”…”�”}”(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”jB½Œmodname”NŒ classname”Njj )�”}”j ]”js¼Œ c.vfs_mkdir”†”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Œdir”h]”hŒdir”…”�”}”(hjy½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 ]”js¼Œ 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Œ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 ]”js¼Œ 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”…”�”}”(hj1¾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”…”�”}”(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Œdelegated_inode”h]”hŒdelegated_inode”…”�”}”(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 ]”js¼Œ c.vfs_mkdir”†”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Œdelegated_inode”h]”hŒdelegated_inode”…”�”}”(hj¡¾h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjF¾ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjª¼ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj4¼h²hh³jE¼h´M ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj0¼h²hh³jE¼h´M ubah}”(h]”j+¼ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jE¼h´M hj-¼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´M hjȾh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj-¼h²hh³jE¼h´M ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jã¾jšjã¾j›‰jœ‰j�‰uh1jh²hhjVh³Nh´NubjŸ)�”}”(hXì**Parameters** ``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ŒH``struct mnt_idmap *idmap`` idmap of the mount the inode was found from ”h]”(jÊ)�”}”(hŒ``struct mnt_idmap *idmap``”h]”jÐ)�”}”(hj ¿h]”hŒ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Ð)�”}”(hjE¿h]”hŒstruct inode *dir”…”�”}”(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: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³jZ¿h´Mhj[¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj?¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jZ¿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Ïhj|¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´Mhjx¿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´Mhj”¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjx¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j“¿h´Mhj¿ubjÄ)�”}”(hŒ-``umode_t mode`` mode of the child directory ”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´Mhj±¿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åhj±¿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´Mhjç¾ubhÌ)�”}”(hŒCreate a directory.”h]”hŒCreate a directory.”…”�”}”(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´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 ”…”�”}”(hjPÀh²hh³Nh´Nubj©)�”}”(hŒ **idmap**”h]”hŒidmap”…”�”}”(hjXÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjPÀubhŒB. This function will then take care to map the inode according to ”…”�”}”(hjPÀh²hh³Nh´Nubj©)�”}”(hŒ **idmap**”h]”hŒidmap”…”�”}”(hjjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjPÀubhŒ before checking permissions. On non-idmapped mounts or if permission checking is to be performed on the raw inode simply pass ”…”�”}”(hjPÀh²hh³Nh´Nubj©)�”}”(hŒ**nop_mnt_idmap**”h]”hŒ nop_mnt_idmap”…”�”}”(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:56: ./fs/namei.c”h´Mhjç¾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 ”…”�”}”(hj•Àh²hh³Nh´Nubj©)�”}”(hŒ ***dentry**”h]”hŒ*dentry”…”�”}”(hj�Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj•À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.”…”�”}”(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ç¾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.”…”�”}”(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ç¾ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œvfs_rmdir (C function)”Œ c.vfs_rmdir”hNt”auh1hýhjVh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒzint vfs_rmdir (struct mnt_idmap *idmap, struct inode *dir, struct dentry *dentry, struct delegated_inode *delegated_inode)”h]”j)�”}”(hŒyint vfs_rmdir(struct mnt_idmap *idmap, struct inode *dir, struct dentry *dentry, struct delegated_inode *delegated_inode)”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjåÀh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjáÀ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_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´Mubj=)�”}”(hŒl(struct mnt_idmap *idmap, struct inode *dir, struct dentry *dentry, struct delegated_inode *delegated_inode)”h]”(jC)�”}”(hŒstruct mnt_idmap *idmap”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Œ 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”jBÁŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjÁsbŒ c.vfs_rmdir”†”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Œ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Œ ”…”�”}”(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_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Œ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_rmdir”†”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Œ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”…”�”}”(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Â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_rmdir”†”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Œdelegated_inode”h]”hŒdelegated_inode”…”�”}”(hjËÂh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjpÂ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Œ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´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²hhjVh³Nh´NubjŸ)�”}”(hX—**Parameters** ``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´MƒhjÃubj¿)�”}”(hhh]”(jÄ)�”}”(hŒH``struct mnt_idmap *idmap`` idmap of the mount the inode was found from ”h]”(jÊ)�”}”(hŒ``struct mnt_idmap *idmap``”h]”jÐ)�”}”(hj6Ãh]”hŒstruct mnt_idmap *idmap”…”�”}”(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:56: ./fs/namei.c”h´M€hj0Ãubjæ)�”}”(hhh]”hÌ)�”}”(hŒ+idmap of the mount the inode was found from”h]”hŒ+idmap of the mount the inode was found from”…”�”}”(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Œ4``struct inode *dir`` inode of the parent directory ”h]”(jÊ)�”}”(hŒ``struct inode *dir``”h]”jÐ)�”}”(hjoÃh]”hŒstruct inode *dir”…”�”}”(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:56: ./fs/namei.c”h´M�hjiÃ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åhjiÃubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j„Ãh´M�hj-Ã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´M‚hj¢Ã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´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``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´MƒhjÛÃ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´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ŒRemove a directory.”h]”hŒRemove 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Ì)�”}”(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 ”…”�”}”(hjAÄh²hh³Nh´Nubj©)�”}”(hŒ **idmap**”h]”hŒidmap”…”�”}”(hjIÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjAÄubhŒB. This function will then take care to map the inode according to ”…”�”}”(hjAÄh²hh³Nh´Nubj©)�”}”(hŒ **idmap**”h]”hŒidmap”…”�”}”(hj[Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjAÄubhŒ before checking permissions. On non-idmapped mounts or if permission checking is to be performed on the raw inode simply pass ”…”�”}”(hjAÄh²hh³Nh´Nubj©)�”}”(hŒ**nop_mnt_idmap**”h]”hŒ nop_mnt_idmap”…”�”}”(hjmÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjAÄubhŒ.”…”�”}”(hjAÄ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žhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œvfs_unlink (C function)”Œ c.vfs_unlink”hNt”auh1hýhjVh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ{int vfs_unlink (struct mnt_idmap *idmap, struct inode *dir, struct dentry *dentry, struct delegated_inode *delegated_inode)”h]”j)�”}”(hŒzint vfs_unlink(struct mnt_idmap *idmap, struct inode *dir, struct dentry *dentry, struct delegated_inode *delegated_inode)”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj¦Äh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj¢Ä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_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`jauh1jBhj¢Äh²hh³j´Äh´Müubj=)�”}”(hŒl(struct mnt_idmap *idmap, struct inode *dir, struct dentry *dentry, struct delegated_inode *delegated_inode)”h]”(jC)�”}”(hŒstruct mnt_idmap *idmap”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Œ 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”…”�”}”(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ÅŒ c.vfs_unlink”†”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Œdir”h]”hŒdir”…”�”}”(hj¬Åh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjQÅ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”…”�”}”(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Œdelegated_inode”h]”hŒdelegated_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ÅŒ c.vfs_unlink”†”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Œdelegated_inode”h]”hŒdelegated_inode”…”�”}”(hjŒÆh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj1Æ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Œ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&]”uh1jvhj›Äh²hh³j´Äh´Müubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÎÆjšjÎÆj›‰jœ‰j�‰uh1jh²hhjVh³Nh´NubjŸ)�”}”(hX`**Parameters** ``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´MhjÒÆubj¿)�”}”(hhh]”(jÄ)�”}”(hŒH``struct mnt_idmap *idmap`` idmap of the mount the inode was found from ”h]”(jÊ)�”}”(hŒ``struct mnt_idmap *idmap``”h]”jÐ)�”}”(hj÷Æh]”hŒ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Ð)�”}”(hj0Çh]”hŒstruct inode *dir”…”�”}”(hj2Ç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”…”�”}”(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Œ!``struct dentry *dentry`` victim ”h]”(jÊ)�”}”(hŒ``struct dentry *dentry``”h]”jÐ)�”}”(hjiÇh]”hŒstruct dentry *dentry”…”�”}”(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:56: ./fs/namei.c”h´MÿhjcÇubjæ)�”}”(hhh]”hÌ)�”}”(hŒvictim”h]”hŒvictim”…”�”}”(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 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´MhjœÇ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´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´MhjÒÆ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´MhjÒÆ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´MhjÒÆ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”…”�”}”(hjLÈ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žhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œvfs_symlink (C function)”Œ c.vfs_symlink”hNt”auh1hýhjVh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ‘int vfs_symlink (struct mnt_idmap *idmap, struct inode *dir, struct dentry *dentry, const char *oldname, struct delegated_inode *delegated_inode)”h]”j)�”}”(hŒ�int vfs_symlink(struct mnt_idmap *idmap, struct inode *dir, struct dentry *dentry, const char *oldname, struct delegated_inode *delegated_inode)”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj…Èh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj�È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_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`jauh1jBhj�Èh²hh³j“Èh´M›ubj=)�”}”(hŒ�(struct mnt_idmap *idmap, struct inode *dir, struct dentry *dentry, const char *oldname, struct delegated_inode *delegated_inode)”h]”(jC)�”}”(hŒstruct mnt_idmap *idmap”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Œ 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”…”�”}”(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Œinode”h]”hŒinode”…”�”}”(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.vfs_symlink”†”asbuh1hhj0Éubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjpÉ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Œdir”h]”hŒdir”…”�”}”(hj‹Éh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj0É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 )�”}”(hj¾h]”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Êubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj/Êh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÊ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Œoldname”h]”hŒoldname”…”�”}”(hjXÊ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”…”�”}”(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Œ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”†”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Œdelegated_inode”h]”hŒdelegated_inode”…”�”}”(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]”jxÈah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j“Èh´M›hjzÈ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&]”uh1jvhjzÈh²hh³j“Èh´M›ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j Ëjšj Ëj›‰jœ‰j�‰uh1jh²hhjVh³Nh´NubjŸ)�”}”(hX×**Parameters** ``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ŒH``struct mnt_idmap *idmap`` idmap of the mount the inode was found from ”h]”(jÊ)�”}”(hŒ``struct mnt_idmap *idmap``”h]”jÐ)�”}”(hj3Ëh]”hŒ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 the inode was found from”h]”hŒ+idmap of the mount the inode was found from”…”�”}”(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Œ4``struct inode *dir`` inode of the parent directory ”h]”(jÊ)�”}”(hŒ``struct inode *dir``”h]”jÐ)�”}”(hjlËh]”hŒstruct inode *dir”…”�”}”(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Œ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åhjfËubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j�Ëh´M�hj*Ë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žhj*Ë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Ÿ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.”…”�”}”(hj0Ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hË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©)�”}”(hjRÌh]”hŒ Description”…”�”}”(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ŒCreate a symlink.”h]”hŒCreate a symlink.”…”�”}”(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Ë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 ”…”�”}”(hjwÌh²hh³Nh´Nubj©)�”}”(hŒ **idmap**”h]”hŒidmap”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjwÌubhŒB. This function will then take care to map the inode according to ”…”�”}”(hjwÌh²hh³Nh´Nubj©)�”}”(hŒ **idmap**”h]”hŒidmap”…”�”}”(hj‘Ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjwÌubhŒ before checking permissions. On non-idmapped mounts or if permission checking is to be performed on the raw inode simply pass ”…”�”}”(hjwÌh²hh³Nh´Nubj©)�”}”(hŒ**nop_mnt_idmap**”h]”hŒ nop_mnt_idmap”…”�”}”(hj£Ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjwÌubhŒ.”…”�”}”(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´M£hjËubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œvfs_link (C function)”Œ c.vfs_link”hNt”auh1hýhjVh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ˜int vfs_link (struct dentry *old_dentry, 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, struct mnt_idmap *idmap, struct inode *dir, struct dentry *new_dentry, struct delegated_inode *delegated_inode)”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjÜÌh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjØÌ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, 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Œ ”…”�”}”(hj&Íh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÍubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(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.vfs_link”†”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Œ old_dentry”h]”hŒ old_dentry”…”�”}”(hjrÍh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÍubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÍubjC)�”}”(hŒstruct mnt_idmap *idmap”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Œ 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 ]”jSÍŒ 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Œ ”…”�”}”(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 ]”jSÍŒ c.vfs_link”†”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Œdir”h]”hŒdir”…”�”}”(hjRÎ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”…”�”}”(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Î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 ]”jSÍŒ c.vfs_link”†”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Œ new_dentry”h]”hŒ new_dentry”…”�”}”(hjÂÎh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjgÎ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 ]”jSÍŒ 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Œdelegated_inode”h]”hŒdelegated_inode”…”�”}”(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<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÷hjYÏh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÑÌh²hh³jêÌh´M÷ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jtÏjšjtÏj›‰jœ‰j�‰uh1jh²hhjVh³Nh´NubjŸ)�”}”(hX¤**Parameters** ``struct dentry *old_dentry`` object to be linked ``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ûhjxÏ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Œ/``struct mnt_idmap *idmap`` idmap of the mount ”h]”(jÊ)�”}”(hŒ``struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjÖÏh]”hŒ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Ð)�”}”(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Œ new parent”h]”hŒ new parent”…”�”}”(hj(Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hË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 *new_dentry`` where to create the new link ”h]”(jÊ)�”}”(hŒ``struct dentry *new_dentry``”h]”jÐ)�”}”(hjHÐh]”hŒstruct dentry *new_dentry”…”�”}”(hjJÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjFÐubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´MûhjBÐubjæ)�”}”(hhh]”hÌ)�”}”(hŒwhere to create the new link”h]”hŒwhere to create the new link”…”�”}”(hjaÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j]Ðh´Mûhj^Ðubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjBÐ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¾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:56: ./fs/namei.c”h´MþhjxÏ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ýhjxÏ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ÿhjxÏ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´MhjxÏ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 hjxÏubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œvfs_rename (C function)”Œ c.vfs_rename”hNt”auh1hýhjVh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ&int vfs_rename (struct renamedata *rd)”h]”j)�”}”(hŒ%int vfs_rename(struct renamedata *rd)”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjdÑh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj`Ñh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M«ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjsÑh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj`Ñh²hh³jrÑ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³jrÑ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³jrÑh´M«ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj\Ñh²hh³jrÑh´M«ubah}”(h]”jWÑah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jrÑh´M«hjYÑh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒrename a filesystem object”h]”hŒrename 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&]”uh1jvhjYÑh²hh³jrÑh´M«ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j<Òjšj<Òj›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(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:56: ./fs/namei.c”h´M¯hj@Òubj¿)�”}”(hhh]”jÄ)�”}”(hŒS``struct renamedata *rd`` pointer to :c:type:`struct renamedata ` info ”h]”(jÊ)�”}”(hŒ``struct renamedata *rd``”h]”jÐ)�”}”(hjeÒh]”hŒstruct renamedata *rd”…”�”}”(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: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³jzÒh´M¬hj~ÒubhŒ info”…”�”}”(hj~Òh²hh³Nh´Nubeh}”(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\Ò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Œ: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­hj@Ò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¯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Ì)�”}”(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ºhj@Ò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]”j$)�”}”(hhh]”(j£D)�”}”(hŒwe can get into loop creation.”h]”hÌ)�”}”(hjÓh]”hŒwe can get into loop creation.”…”�”}”(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¢DhjÓubj£D)�”}”(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.”…”�”}”(hj8Ó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¿hj4Óubah}”(h]”h ]”h"]”h$]”h&]”uh1j¢DhjÓubj£D)�”}”(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.”…”�”}”(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ÃhjMÓubah}”(h]”h ]”h"]”h$]”h&]”uh1j¢DhjÓubj£D)�”}”(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].”…”�”}”(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ÑhjfÓubah}”(h]”h ]”h"]”h$]”h&]”uh1j¢DhjÓubeh}”(h]”h ]”h"]”h$]”h&]”j„Œ loweralpha”j†hj‡jÏ™uh1j#hjÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jœ�h³j-Óh´M¾hj@Òubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œvfs_readlink (C function)”Œc.vfs_readlink”hNt”auh1hýhjVh²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj¬Óh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj¨Ó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”…”�”}”(hjÔh²hh³Nh´Nubah}”(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_readlink”†”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áÓubjC)�”}”(hŒchar __user *buffer”h]”(jf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj[Ôh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&•]”uh1jehjWÔubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjiÔh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjWÔubhŒ__user”…”�”}”(hjWÔh²hh³Nh´Nubj2)�”}”(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Œbuffer”h]”hŒbuffer”…”�”}”(hj–Ôh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjWÔubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjáÓubjC)�”}”(hŒ int buflen”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj¯Ôh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj«Ô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™j Õjšj Õj›‰jœ‰j�‰uh1jh²hhjVh³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”…”�”}”(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Œ?``struct dentry *dentry`` dentry on which to get symbolic link ”h]”(jÊ)�”}”(hŒ``struct dentry *dentry``”h]”jÐ)�”}”(hj6Õh]”hŒstruct dentry *dentry”…”�”}”(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:56: ./fs/namei.c”h´Mhj0Õubjæ)�”}”(hhh]”hÌ)�”}”(hŒ$dentry on which to get symbolic link”h]”hŒ$dentry on which to get symbolic link”…”�”}”(hjOÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jKÕh´MhjLÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj0Õubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jKÕh´Mhj-ÕubjÄ)�”}”(hŒ,``char __user *buffer`` user memory pointer ”h]”(jÊ)�”}”(hŒ``char __user *buffer``”h]”jÐ)�”}”(hjoÕh]”hŒchar __user *buffer”…”�”}”(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:56: ./fs/namei.c”h´MhjiÕ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åhjiÕubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j„Õh´Mhj-Õ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´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´MhjÕ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.”…”�”}”(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Õubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œvfs_get_link (C function)”Œc.vfs_get_link”hNt”auh1hýhjVh²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 )�”}”(hj¾h]”hŒconst”…”�”}”(hj7Öh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj3Öh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:56: ./fs/namei.c”h´M;ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjEÖh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj3Öh²hh³jDÖh´M;ubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjSÖh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj3Öh²hh³jDÖh´M;ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjaÖh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj3Öh²hh³jDÖh´M;ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjoÖh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj3Öh²hh³jDÖh´M;ubjC)�”}”(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`jauh1jBhj3Öh²hh³jDÖh´M;ubj=)�”}”(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”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”j,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”…”�”}”(hj,×h²hh³Nh´Nubah}”(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_link”†”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Œdone”h]”hŒdone”…”�”}”(hje×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<hj3Öh²hh³jDÖh´M;ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj/Öh²hh³jDÖh´M;ubah}”(h]”j*Öah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jDÖh´M;hj,Ö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´M;hjŒ×h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj,Öh²hh³jDÖh´M;ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j§×jšj§×j›‰jœ‰j�‰uh1jh²hhjVh³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´M?hj«×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´M<hjÊ×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´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``struct delayed_call *done`` caller needs to free returned data with this ”h]”(jÊ)�”}”(hŒ``struct delayed_call *done``”h]”jÐ)�”}”(hj Øh]”hŒstruct delayed_call *done”…”�”}”(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Œ,caller needs to free returned data with this”h]”hŒ,caller needs to free returned data with this”…”�”}”(hj"Øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hË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©)�”}”(hjDØh]”hŒ Description”…”�”}”(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:56: ./fs/namei.c”h´M?hj«×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.”…”�”}”(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>hj«×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.”…”�”}”(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@hj«×ubhÌ)�”}”(hŒ6Does not work on "special" symlinks like /proc/$$/fd/N”h]”hŒ:Does not work on “specialâ€� symlinks like /proc/$$/fd/N”…”�”}”(hjxØ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´MBhj«×ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œpage_get_link (C function)”Œc.page_get_link”hNt”auh1hýhjVh²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 )�”}”(hj¾h]”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´Mtubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµØh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj£Øh²hh³j´Øh´Mtubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjÃØh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj£Øh²hh³j´Øh´Mtubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑØh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj£Øh²hh³j´Øh´Mtubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjߨh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj£Øh²hh³j´Øh´MtubjC)�”}”(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´Mtubj=)�”}”(hŒK(struct dentry *dentry, struct inode *inode, struct delayed_call *callback)”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.page_get_link”†”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Œdentry”h]”hŒdentry”…”�”}”(hjeÙ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&]”uh1jhjzÙubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹Ù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&]”uh1jHhj™Ùubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jžÙŒmodname”NŒ classname”Njj )�”}”j ]”jFÙŒc.page_get_link”†”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Œinode”h]”hŒinode”…”�”}”(hjÕÙh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjzÙ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”…”�”}”(hj Úh²hh³Nh´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.page_get_link”†”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Œcallback”h]”hŒcallback”…”�”}”(hjEÚ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´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Œ2An implementation of the get_link inode_operation.”h]”hŒ2An implementation of the get_link inode_operation.”…”�”}”(hjoÚ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´MthjlÚ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²hhjVh³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´Mxhj‹Ú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´MuhjªÚ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´MuhjÆÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjªÚubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÅÚh´Muhj§Ú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´MvhjãÚ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´MvhjÿÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjãÚubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jþÚh´Mvhj§ÚubjÄ)�”}”(hŒM``struct delayed_call *callback`` Used to drop the reference to the symlink. ”h]”(jÊ)�”}”(hŒ!``struct delayed_call *callback``”h]”jÐ)�”}”(hj"Ûh]”hŒstruct delayed_call *callback”…”�”}”(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´MwhjÛubjæ)�”}”(hhh]”hÌ)�”}”(hŒ*Used to drop the reference to the symlink.”h]”hŒ*Used to drop the reference to the symlink.”…”�”}”(hj;Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j7Ûh´Mwhj8Ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j7Ûh´Mwhj§Ú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´Myhj‹Ú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.”…”�”}”(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´Mxhj‹Ú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 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´M|hj‹Úubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œpage_put_link (C function)”Œc.page_put_link”hNt”auh1hýhjVh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒvoid page_put_link (void *arg)”h]”j)�”}”(hŒvoid page_put_link(void *arg)”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÉÛh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÅÛ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Œ 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´MŠubj=)�”}”(hŒ (void *arg)”h]”jC)�”}”(hŒ void *arg”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÜubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÜubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj"Üh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjÜ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þÛ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Œ"Drop the reference to the symlink.”h]”hŒ"Drop the reference to the symlink.”…”�”}”(hjYÜ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Üh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj¾Ûh²hh³j×Ûh´MŠubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jqÜjšjqÜj›‰jœ‰j�‰uh1jh²hhjVh³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¨hjyÜ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Ü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¾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Œþ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ŒhjuÜ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‘hjuÜubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œfinish_open (C function)”Œ c.finish_open”hNt”auh1hýhjVh²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj)Ýh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj%Ýh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:59: ./fs/open.c”h´M ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8Ýh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj%Ýh²hh³j7Ýh´M ubjC)�”}”(hŒ finish_open”h]”jI)�”}”(hŒ finish_open”h]”hŒ finish_open”…”�”}”(hjJÝh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjFÝubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj%Ýh²hh³j7Ýh´M ubj=)�”}”(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”…”�”}”(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Ý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)�”}”jjLÝsbŒ c.finish_open”†”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Œfile”h]”hŒfile”…”�”}”(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.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Œ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Œ(int (*open)(struct inode*, struct file*)”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjHÞh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjDÞubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVÞh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjDÞubj“)�”}”(hj¦™h]”hŒ(”…”�”}”(hjdÞh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjDÞubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjqÞh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjDÞubjI)�”}”(hŒopen”h]”hŒopen”…”�”}”(hj~Þh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjDÞubj“)�”}”(hjÏ™h]”hŒ)”…”�”}”(hjŒÞh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjDÞubj“)�”}”(hj¦™h]”hŒ(”…”�”}”(hj™Þh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjDÞ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Œ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”†”asbuh1hhjDÞubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjâÞh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjDÞubj“)�”}”(hj3šh]”hŒ,”…”�”}”(hjïÞh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjDÞubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjüÞ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Œ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 ÝŒ c.finish_open”†”asbuh1hhjDÞubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjFßh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjDÞubj“)�”}”(hjÏ™h]”hŒ)”…”�”}”(hjSßh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjDÞubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj^Ýubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj%Ýh²hh³j7Ýh´M ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj!Ýh²hh³j7Ýh´M ubah}”(h]”jÝah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j7Ýh´M hjÝ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´M hjyßh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÝh²hh³j7Ýh´M ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j”ßjšj”ßj›‰jœ‰j�‰uh1jh²hhjVh³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´M hj·ß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åhj·ßubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÒßh´M hj´ß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”…”�”}”(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Œ=``int (*open)(struct inode *, struct file *)`` open callback ”h]”(jÊ)�”}”(hŒ.``int (*open)(struct inode *, struct file *)``”h]”jÐ)�”}”(hj/àh]”hŒ*int (*open)(struct inode *, struct file *)”…”�”}”(hj1à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Œ open callback”h]”hŒ open callback”…”�”}”(hjHàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jDàh´MhjEàubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj)àubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jDàh´Mhj´ß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³Œ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žhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œfinish_no_open (C function)”Œc.finish_no_open”hNt”auh1hýhjVh²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”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”j,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”…”�”}”(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.finish_no_open”†”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Œfile”h]”hŒfile”…”�”}”(hjrá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 ]”jSáŒ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”…”�”}”(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&]”uh1jvhjÑàh²hh³jêàh´M'ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j$âjšj$âj›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(hj.âh]”hŒ Parameters”…”�”}”(hj0â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Œ#``struct file *file`` file pointer ”h]”(jÊ)�”}”(hŒ``struct file *file``”h]”jÐ)�”}”(hjMâh]”hŒstruct file *file”…”�”}”(hjOâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjKâubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:59: ./fs/open.c”h´M)hjGâubjæ)�”}”(hhh]”hÌ)�”}”(hŒ file pointer”h]”hŒ file pointer”…”�”}”(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)hjDâ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*hjDâ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Œ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´M+hj(â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´M-hj(â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´M0hj(âubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œkernel_file_open (C function)”Œc.kernel_file_open”hNt”auh1hýhjVh²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”…”�”}”(hj$ãh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj ãh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:59: ./fs/open.c”h´M€ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2ãh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj ãh²hh³j1ãh´M€ubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(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)�”}”jŒkernel_file_open”sbŒc.kernel_file_open”†”asbuh1hhj ãh²hh³j1ãh´M€ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdãh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj ãh²hh³j1ãh´M€ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjrãh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj ãh²hh³j1ãh´M€ubjC)�”}”(hŒkernel_file_open”h]”jI)�”}”(hjaã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`jauh1jBhj ãh²hh³j1ãh´M€ubj=)�”}”(hŒ=(const struct path *path, int flags, const struct cred *cred)”h]”(jC)�”}”(hŒconst struct path *path”h]”(j )�”}”(hj¾h]”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”…”�”}”(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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj)äh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj%äubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7äh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj%äubjI)�”}”(hŒflags”h]”hŒflags”…”�”}”(hjEäh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj%äubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj–ãubjC)�”}”(hŒconst struct cred *cred”h]”(j )�”}”(hj¾h]”hŒconst”…”�”}”(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äubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjyä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Œ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”†”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Œcred”h]”hŒcred”…”�”}”(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³j1ãh´M€ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjãh²hh³j1ãh´M€ubah}”(h]”jãah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j1ãh´M€hjã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&]”uh1jvhjãh²hh³j1ãh´M€ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jåjšjåj›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(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Œ5``const struct path *path`` path of the file to open ”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Ïhj9åubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:59: ./fs/open.c”h´M�hj5åubjæ)�”}”(hhh]”hÌ)�”}”(hŒpath of the file to open”h]”hŒpath of the file to open”…”�”}”(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�hj2åubjÄ)�”}”(hŒ``int flags`` open flags ”h]”(jÊ)�”}”(hŒ ``int flags``”h]”jÐ)�”}”(hjtåh]”hŒ int flags”…”�”}”(hjvåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjråubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:59: ./fs/open.c”h´M‚hjnå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åhjnåubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j‰åh´M‚hj2å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ƒhj2å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©)�”}”(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: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.”…”�”}”(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žhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œfilp_open (C function)”Œ c.filp_open”hNt”auh1hýhjVh²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”…”�”}”(hjTæh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjPæh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:59: ./fs/open.c”h´Mcubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbæh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjPæh²hh³jaæh´Mcubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(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Œ filp_open”sbŒ c.filp_open”†”asbuh1hhjPæh²hh³jaæh´Mcubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”æh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjPæh²hh³jaæh´Mcubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj¢æh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjPæh²hh³jaæh´McubjC)�”}”(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`jauh1jBhjPæh²hh³jaæh´Mcubj=)�”}”(hŒ/(const char *filename, int flags, umode_t mode)”h]”(jC)�”}”(hŒconst char *filename”h]”(j )�”}”(hj¾h]”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Êæubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjéæh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÊæubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷æh²hh³Nh´Nubah}”(h]”h ]”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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj+çh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj'çubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9çh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj'çubjI)�”}”(hŒflags”h]”hŒflags”…”�”}”(hjGç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”…”�”}”(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.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<hjPæh²hh³jaæh´Mcubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjLæh²hh³jaæh´Mcubah}”(h]”jGæah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jaæh´MchjIæ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´Mchj¶çh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjIæh²hh³jaæh´Mcubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÑçjšjÑçj›‰jœ‰j�‰uh1jh²hhjVh³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´MghjÕç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´Mehjôçubjæ)�”}”(hhh]”hÌ)�”}”(hŒ path to open”h]”hŒ path to open”…”�”}”(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Œ<``int flags`` open flags as per the open(2) second argument ”h]”(jÊ)�”}”(hŒ ``int flags``”h]”jÐ)�”}”(hj3èh]”hŒ int flags”…”�”}”(hj5èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj1èubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:59: ./fs/open.c”h´Mfhj-èubjæ)�”}”(hhh]”hÌ)�”}”(hŒ-open flags as per the open(2) second argument”h]”hŒ-open flags as per the open(2) second argument”…”�”}”(hjLèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jHèh´MfhjIèubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj-èubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jHèh´Mfhjñç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Ð)�”}”(hjlèh]”hŒ umode_t mode”…”�”}”(hjnèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjjèubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:59: ./fs/open.c”h´Mghjfè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´Mghj‚èubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjfèubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j�èh´Mghjñç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´MihjÕç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´MhhjÕçubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œbio_reset (C function)”Œ c.bio_reset”hNt”auh1hýhjVh²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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjìèh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjèè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”…”�”}”(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, struct block_device *bdev, 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Œ ”…”�”}”(hj6éh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj%éubh)�”}”(hhh]”jI)�”}”(hŒbio”h]”hŒbio”…”�”}”(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.bio_reset”†”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Œ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 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 ]”jcéŒ 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`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 ]”jcéŒ c.bio_reset”†”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´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”…”�”}”(hjdê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´Mhjaê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²hhjVh³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”…”�”}”(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Œoperation and flags for bio”h]”hŒoperation and flags for bio”…”�”}”(hj0ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hË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©)�”}”(hjRëh]”hŒ Description”…”�”}”(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 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(), ”…”�”}”(hjlëh²hh³Nh´Nubj©)�”}”(hŒ**bio**”h]”hŒbio”…”�”}”(hjtëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjlë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.”…”�”}”(hjlë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 hjhëubah}”(h]”h ]”h"]”h$]”h&]”uh1jœ�h³jŒëh´M hj€êubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œbio_reuse (C function)”Œ c.bio_reuse”hNt”auh1hýhjVh²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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj³ëh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj¯ë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”…”�”}”(hjìh²hh³Nh´Nubah}”(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_reuse”†”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”…”�”}”(hjIì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”…”�”}”(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.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²hhjVh³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©)�”}”(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 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#hjöì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´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``blk_opf_t opf`` operation and flags for the next I/O ”h]”(jÊ)�”}”(hŒ``blk_opf_t opf``”h]”jÐ)�”}”(hj5íh]”hŒ blk_opf_t opf”…”�”}”(hj7íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj3í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 the next I/O”h]”hŒ$operation and flags for the next I/O”…”�”}”(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Œ**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³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M&hj×ìubhÌ)�”}”(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%hj×ìubhÌ)�”}”(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(hj×ì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³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M,hj×ìubhÌ)�”}”(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”…”�”}”(hjèíh²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-hj×ìubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œbio_chain (C function)”Œ c.bio_chain”hNt”auh1hýhjVh²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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj!îh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjîh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MWubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0îh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjîh²hh³j/îh´MWubjC)�”}”(hŒ bio_chain”h]”jI)�”}”(hŒ bio_chain”h]”hŒ bio_chain”…”�”}”(hjBî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, 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&]”uh1jhjZîubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjkîh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjZîubh)�”}”(hhh]”jI)�”}”(hŒbio”h]”hŒbio”…”�”}”(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)�”}”jjDîsbŒ c.bio_chain”†”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Œbio”h]”hŒbio”…”�”}”(hj·îh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjZîubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjVîubjC)�”}”(hŒstruct bio *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Œ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_chain”†”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`jauh1jBhjVîubeh}”(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Œchain bio completions”h]”hŒchain bio completions”…”�”}”(hjQï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´MWhjNïh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjîh²hh³j/îh´MWubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jiïjšjiïj›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(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:62: ./block/bio.c”h´M[hjmï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´MXhjŒïubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe target bio”h]”hŒthe target bio”…”�”}”(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Œ1``struct bio *parent`` the parent bio of **bio** ”h]”(jÊ)�”}”(hŒ``struct bio *parent``”h]”jÐ)�”}”(hjËïh]”hŒstruct bio *parent”…”�”}”(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Œthe parent bio of **bio**”h]”(hŒthe parent bio 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´MYhjáïubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÅïubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jàïh´MYhj‰ïubeh}”(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:62: ./block/bio.c”h´M[hjmï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”…”�”}”(hj2ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj*ðubhŒ completes - instead, ”…”�”}”(hj*ðh²hh³Nh´Nubj©)�”}”(hŒ **parent**”h]”hŒparent”…”�”}”(hjDð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”…”�”}”(hjVðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj*ðubhŒ and ”…”�”}”(hj*ðh²hh³Nh´Nubj©)�”}”(hŒ**bio**”h]”hŒbio”…”�”}”(hjhð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´MZhjmï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´M^hjmïubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œbio_alloc_bioset (C function)”Œc.bio_alloc_bioset”hNt”auh1hýhjVh²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Œ ”…”�”}”(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_bioset”sbŒc.bio_alloc_bioset”†”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_alloc_bioset”h]”jI)�”}”(hjÿðh]”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³jÏðh´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&]”uh1jhj8ñubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIñh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj8ñubh)�”}”(hhh]”jI)�”}”(hŒ block_device”h]”hŒ block_device”…”�”}”(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ýðŒc.bio_alloc_bioset”†”asbuh1hhj8ñubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxñh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj8ñubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj†ñh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj8ñubjI)�”}”(hŒbdev”h]”hŒbdev”…”�”}”(hj“ñh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj8ñubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj4ñubjC)�”}”(hŒunsigned short nr_vecs”h]”(jf)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj¬ñh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj¨ñubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjºñh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¨ñubjf)�”}”(hŒshort”h]”hŒshort”…”�”}”(hjÈñh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj¨ñubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖñh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¨ñubjI)�”}”(hŒnr_vecs”h]”hŒnr_vecs”…”�”}”(hjäñh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¨ñubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj4ñ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 ]”jýðŒ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`jauh1jBhj4ñ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.bio_alloc_bioset”†”asbuh1hhjAòubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfòh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjAòubjI)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hjtòh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjAòubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj4ñ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”…”�”}”(hj«òh²hh³Nh´Nubah}”(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_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”…”�”}”(hjäòh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‰ò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Œallocate a bio for I/O”h]”hŒallocate a bio for I/O”…”�”}”(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²hhjVh³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©)�”}”(hj0óh]”hŒ Parameters”…”�”}”(hj2ó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ŒU``struct block_device *bdev`` block device to allocate the bio for (can be ``NULL``) ”h]”(jÊ)�”}”(hŒ``struct block_device *bdev``”h]”jÐ)�”}”(hjOóh]”hŒstruct block_device *bdev”…”�”}”(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Œ6block device to allocate the bio for (can be ``NULL``)”h]”(hŒ-block device to allocate the bio for (can be ”…”�”}”(hjhóh²hh³Nh´NubjÐ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjpóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjhóubhŒ)”…”�”}”(hjhóh²hh³Nh´Nubeh}”(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Œ;``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øhjFó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”…”�”}”(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Œoperation and flags for bio”h]”hŒoperation and flags for bio”…”�”}”(hjìóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jèóh´Mùhjéóubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÍóubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jèóh´MùhjFóubjÄ)�”}”(hŒ9``gfp_t gfp`` the GFP_* mask given to the slab allocator ”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Œ*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´Múhj"ôubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjôubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j!ôh´MúhjFóubjÄ)�”}”(hŒ5``struct bio_set *bs`` the bio_set to allocate from. ”h]”(jÊ)�”}”(hŒ``struct bio_set *bs``”h]”jÐ)�”}”(hjEôh]”hŒstruct bio_set *bs”…”�”}”(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Œ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³jZôh´Mûhj[ôubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj?ôubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jZôh´MûhjFó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Œ+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´Mühj*ó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´Mþhj*ó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.”…”�”}”(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Œë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´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³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mhj*ó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´Mhj*óubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œbio_kmalloc (C function)”Œ c.bio_kmalloc”hNt”auh1hýhjVh²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”…”�”}”(hjLõh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjHõh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mlubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZõh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjHõh²hh³jYõh´Mlubh)�”}”(hhh]”jI)�”}”(hŒbio”h]”hŒbio”…”�”}”(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Œ bio_kmalloc”sbŒ c.bio_kmalloc”†”asbuh1hhjHõh²hh³jYõh´Mlubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒõh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjHõh²hh³jYõh´Mlubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjšõh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjHõh²hh³jYõh´MlubjC)�”}”(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`jauh1jBhjHõh²hh³jYõh´Mlubj=)�”}”(hŒ((unsigned short nr_vecs, gfp_t gfp_mask)”h]”(jC)�”}”(hŒunsigned short nr_vecs”h]”(jf)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÆõh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÂõubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔõh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÂõubjf)�”}”(hŒshort”h]”hŒshort”…”�”}”(hjâõh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÂõubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjðõh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÂõubjI)�”}”(hŒnr_vecs”h]”hŒnr_vecs”…”�”}”(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_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”†”asbuh1hhjöubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8öh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjöubjI)�”}”(hŒgfp_mask”h]”hŒgfp_mask”…”�”}”(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<hjHõh²hh³jYõh´Mlubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjDõh²hh³jYõh´Mlubah}”(h]”j?õah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jYõh´MlhjAõh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ kmalloc a bio”h]”hŒ kmalloc a bio”…”�”}”(hjpö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´Mlhjmöh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjAõh²hh³jYõh´Mlubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jˆöjšjˆöj›‰jœ‰j�‰uh1jh²hhjVh³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´MphjŒö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´Mmhj«ö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´MmhjÇöubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj«öubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÆöh´Mmhj¨öubjÄ)�”}”(hŒ>``gfp_t gfp_mask`` the GFP_* mask given to the slab allocator ”h]”(jÊ)�”}”(hŒ``gfp_t gfp_mask``”h]”jÐ)�”}”(hjêöh]”hŒgfp_t gfp_mask”…”�”}”(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´Mnhjäö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´Mnhj÷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Œö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´MphjŒö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´MohjŒö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.”…”�”}”(hjJ÷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´MthjŒöubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hj[÷h]”hŒReturn”…”�”}”(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´MxhjŒöubhÌ)�”}”(hŒ/Pointer to new bio on success, NULL on failure.”h]”hŒ/Pointer to new bio on success, NULL on failure.”…”�”}”(hjq÷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Œöubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œbio_put (C function)”Œ c.bio_put”hNt”auh1hýhjVh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒvoid bio_put (struct bio *bio)”h]”j)�”}”(hŒvoid bio_put(struct bio *bio)”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj ÷h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjœ÷h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MCubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯÷h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjœ÷h²hh³j®÷h´MCubjC)�”}”(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´MCubj=)�”}”(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.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”…”�”}”(hj6ø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´MCubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj˜÷h²hh³j®÷h´MCubah}”(h]”j“÷ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j®÷h´MChj•÷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´MChj]øh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj•÷h²hh³j®÷h´MCubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jxøjšjxøj›‰jœ‰j�‰uh1jh²hhjVh³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´MGhj|øubj¿)�”}”(hhh]”jÄ)�”}”(hŒ0``struct bio *bio`` bio to release reference 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´MDhj›øubjæ)�”}”(hhh]”hÌ)�”}”(hŒbio to release reference to”h]”hŒbio to release reference to”…”�”}”(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´MDhj˜ø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:62: ./block/bio.c”h´MFhj|ø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Ð)�”}”(hjùh]”hŒ struct bio”…”�”}”(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° Œbio”uh1hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MFhjöø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´MFhjòøubah}”(h]”h ]”h"]”h$]”h&]”uh1jœ�h³jùh´MFhj|øubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œbio_alloc_clone (C function)”Œc.bio_alloc_clone”hNt”auh1hýhjVh²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”…”�”}”(hjNùh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjJùh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mrubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\ùh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjJùh²hh³j[ùh´Mrubh)�”}”(hhh]”jI)�”}”(hŒbio”h]”hŒbio”…”�”}”(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)�”}”jŒbio_alloc_clone”sbŒc.bio_alloc_clone”†”asbuh1hhjJùh²hh³j[ùh´Mrubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽùh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjJùh²hh³j[ùh´Mrubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjœùh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjJùh²hh³j[ùh´MrubjC)�”}”(hŒbio_alloc_clone”h]”jI)�”}”(hj‹ùh]”hŒbio_alloc_clone”…”�”}”(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´Mrubj=)�”}”(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”…”�”}”(hjæùh²hh³Nh´Nubah}”(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Œ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”…”�”}”(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Œbio”h]”hŒbio”…”�”}”(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.bio_alloc_clone”†”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Œbio_src”h]”hŒbio_src”…”�”}”(hj�úh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj4ú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 ]”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”…”�”}”(hjðúh²hh³Nh´Nubah}”(h]”h ]”j,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‰ùŒ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Œbs”h]”hŒbs”…”�”}”(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<hjJùh²hh³j[ùh´Mrubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjFùh²hh³j[ùh´Mrubah}”(h]”jAùah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j[ùh´MrhjCù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”…”�”}”(hjqû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´Mrhjnûh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjCùh²hh³j[ùh´Mrubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j‰ûjšj‰ûj›‰jœ‰j�‰uh1jh²hhjVh³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´Mvhj�û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´Mshj¬û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´MshjÈûubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¬ûubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÇûh´Mshj©ûubjÄ)�”}”(hŒ*``struct bio *bio_src`` bio to clone from ”h]”(jÊ)�”}”(hŒ``struct bio *bio_src``”h]”jÐ)�”}”(hjëûh]”hŒstruct bio *bio_src”…”�”}”(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´Mthjåû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´Mthjüubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjåûubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jüh´Mthj©ûubjÄ)�”}”(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´Muhjüubjæ)�”}”(hhh]”hÌ)�”}”(hŒallocation priority”h]”hŒallocation priority”…”�”}”(hj=üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j9üh´Muhj:üubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjüubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j9üh´Muhj©û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´MvhjWüubjæ)�”}”(hhh]”hÌ)�”}”(hŒbio_set to allocate from”h]”hŒbio_set to allocate from”…”�”}”(hjvüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jrüh´Mvhjsüubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjWüubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jrüh´Mvhj©û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´Mxhj�û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 ”…”�”}”(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Œ). This reuses the bio_vecs pointed to by ”…”�”}”(hj®üh²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¨hj®üubhŒ¼, 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 ”…”�”}”(hj®üh²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¨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´Mwhj�ûubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œbio_init_clone (C function)”Œc.bio_init_clone”hNt”auh1hýhjVh²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjý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_init_clone”h]”jI)�”}”(hŒbio_init_clone”h]”hŒbio_init_clone”…”�”}”(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´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”…”�”}”(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Œ block_device”h]”hŒ block_device”…”�”}”(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.bio_init_clone”†”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Œbdev”h]”hŒbdev”…”�”}”(hj©ýh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjLýubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjHý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Œ ”…”�”}”(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”h]”hŒbio”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¾ýubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjHýubjC)�”}”(hŒstruct bio *bio_src”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(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.þ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ŠýŒc.bio_init_clone”†”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Œ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`jauh1jBhjHý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 ]”jŠýŒc.bio_init_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`jauh1jBhjHý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²hhjVh³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‘hj6ÿubjæ)�”}”(hhh]”hÌ)�”}”(hŒblock_device to clone onto”h]”hŒblock_device to clone onto”…”�”}”(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‘hj3ÿubjÄ)�”}”(hŒ&``struct bio *bio`` bio to clone into ”h]”(jÊ)�”}”(hŒ``struct bio *bio``”h]”jÐ)�”}”(hjuÿh]”hŒstruct bio *bio”…”�”}”(hjwÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjsÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M’hjoÿ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åhjoÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jŠÿh´M’hj3ÿubjÄ)�”}”(hŒ*``struct bio *bio_src`` bio to clone from ”h]”(jÊ)�”}”(hŒ``struct bio *bio_src``”h]”jÐ)�”}”(hj®ÿh]”hŒstruct bio *bio_src”…”�”}”(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 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¨ÿube•h}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÃÿh´M“hj3ÿubjÄ)�”}”(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”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jüÿh´M”hjýÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjáÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jüÿh´M”hj3ÿ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 ”…”�”}”(hj8h²hh³Nh´Nubj©)�”}”(hŒ **bio_src**”h]”hŒbio_src”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj8ubhŒL. The same bio_vecs reuse and bio lifetime rules as bio_alloc_clone() apply.”…”�”}”(hj8h²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žhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ__bio_add_page (C function)”Œc.__bio_add_page”hNt”auh1hýhjVh²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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjuh²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&]”uh1j1hjuh²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`jauh1jBhjuh²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”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”j,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_page”†”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Œ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 page *page”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj$ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj$ubh)�”}”(hhh]”jI)�”}”(hŒpage”h]”hŒpage”…”�”}”(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ðŒc.__bio_add_page”†”asbuh1hhj$ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj$ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj$ubjI)�”}”(hŒpage”h]”hŒpage”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj$ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj®ubjC)�”}”(hŒunsigned int len”h]”(jf)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj”ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj”ubjf)�”}”(hŒint”h]”hŒint”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj”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Œunsigned int off”h]”(jf)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjåubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjåubjf)�”}”(hŒint”h]”hŒint”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjåubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²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<hjuh²hh³j‡h´Måubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjqh²hh³j‡h´Måubah}”(h]”jlah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j‡h´Måhjnh²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”…”�”}”(hjKh²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åhjHh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjnh²hh³j‡h´Måubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jcjšjcj›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(hjmh]”hŒ Parameters”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjkubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Méhjgubj¿)�”}”(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³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 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”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hË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Ð)�”}”(hjþh]”hŒunsigned int len”…”�”}”(hjh²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Œ*length of the data to add, may cross pages”h]”hŒ*length of the data to add, may cross pages”…”�”}”(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ŒN``unsigned int off`` offset of the data relative to **page**, may cross pages ”h]”(jÊ)�”}”(hŒ``unsigned int off``”h]”jÐ)�”}”(hj7h]”hŒunsigned int off”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Méhj1ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ8offset of the data relative to **page**, may cross pages”h]”(hŒoffset of the data relative to ”…”�”}”(hjPh²hh³Nh´Nubj©)�”}”(hŒ**page**”h]”hŒpage”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjPubhŒ, may cross pages”…”�”}”(hjPh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jLh´MéhjMubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jLh´Méhjƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjgubhÌ)�”}”(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ëhjgubhÌ)�”}”(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”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjšubhŒ + ”…”�”}”(hjšh²hh³Nh´Nubj©)�”}”(hŒ**off**”h]”hŒoff”…”�”}”(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Œ- 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´Mêhjgubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²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ýhjVh²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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj 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³jh´MþubjC)�”}”(hŒbio_add_virt_nofail”h]”jI)�”}”(hŒbio_add_virt_nofail”h]”hŒbio_add_virt_nofail”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj.ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj h²hh³jh´Mþubj=)�”}”(hŒ,(struct bio *bio, void *vaddr, unsigned len)”h]”(jC)�”}”(hŒstruct bio *bio”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjJubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjJubh)�”}”(hhh]”jI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjiubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jnŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj4sbŒc.bio_add_virt_nofail”†”asbuh1hhjJubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjJubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjJubjI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjJubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjFubjC)�”}”(hŒ void *vaddr”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj¼ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”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`jauh1jBhjFubjC)�”}”(hŒ unsigned len”h]”(jf)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjþubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjþubjI)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjþubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjFubeh}”(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]”jah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jh´Mþhjh²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”…”�”}”(hjHh²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þhjEh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjh²hh³jh´Mþubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j`jšj`j›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(hjjh]”hŒ Parameters”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjhubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mhjdubj¿)�”}”(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³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 *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”…”�”}”(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Œ*length of the data to add, may cross pages”h]”hŒ*length of the data to add, may cross pages”…”�”}”(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€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjdubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj6h]”hŒ Description”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MhjdubhÌ)�”}”(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 ”…”�”}”(hjLh²hh³Nh´Nubj©)�”}”(hŒ **vaddr**”h]”hŒvaddr”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjLubhŒ to ”…”�”}”(hjLh²hh³Nh´Nubj©)�”}”(hŒ**bio**”h]”hŒbio”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjLubhŒ�. The caller must have ensure a segment is available for the added data. No merging into an existing segment will be performed.”…”�”}”(hjLh²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´Mhjdubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œbio_add_page (C function)”Œc.bio_add_page”hNt”auh1hýhjVh²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj›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_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´Mubj=)�”}”(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”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”j,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_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”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjØubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÔubjC)�”}”(hŒstruct page *page”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjJubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjJubh)�”}”(hhh]”jI)�”}”(hŒpage”h]”hŒpage”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjiubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jnŒmodname”NŒ classname”Njj )�”}”j ]”jŒc.bio_add_page”†”asbuh1hhjJubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjJubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjJubjI)�”}”(hŒpage”h]”hŒpage”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjJubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÔubjC)�”}”(hŒunsigned int len”h]”(jf)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjºubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjºubjf)�”}”(hŒint”h]”hŒint”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjº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Œunsigned int offset”h]”(jf)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj ubjf)�”}”(hŒint”h]”hŒint”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj ubjI)�”}”(hŒoffset”h]”hŒoffset”…”�”}”(hjGh²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Œattempt to add page(s) to bio”h]”hŒattempt to add page(s) to bio”…”�”}”(hjqh²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´Mhjnh²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²hhjVh³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´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”…”�”}”(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 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´Mhjåubjæ)�”}”(hhh]”hÌ)�”}”(hŒstart page to add”h]”hŒstart page 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Œ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´Mhj 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³j9 h´Mhj: ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j9 h´Mhj©ubjÄ)�”}”(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´MhjW ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ6vec entry offset relative to **page**, may cross pages”h]”(hŒvec entry offset relative to ”…”�”}”(hjv h²hh³Nh´Nubj©)�”}”(hŒ**page**”h]”hŒpage”…”�”}”(hj~ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjv ubhŒ, may cross pages”…”�”}”(hjv h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jr h´Mhjs ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjW ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jr 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�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´MhjÀ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœ�h³jÒ h´Mhj�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œbio_add_folio (C function)”Œc.bio_add_folio”hNt”auh1hýhjVh²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]”(jf)�”}”(hjih]”hŒbool”…”�”}”(hjù h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjõ 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_folio”h]”jI)�”}”(hŒ bio_add_folio”h]”hŒ bio_add_folio”…”�”}”(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, struct folio *folio, size_t len, size_t off)”h]”(jC)�”}”(hŒstruct bio *bio”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Œbio”h]”hŒbio”…”�”}”(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.bio_add_folio”†”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Œbio”h]”hŒbio”…”�”}”(hjŽ h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj1 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 ]”jo Œ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Œfolio”h]”hŒfolio”…”�”}”(hjþ 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 ]”jo Œc.bio_add_folio”†”asbuh1hhj ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8 h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj ubjI)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjF h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj 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”…”�”}”(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 ]”jo Œ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<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Œ(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´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²hhjVh³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”…”�”}”(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´MChjÔ 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´M@hjó ubjæ)�”}”(hhh]”hÌ)�”}”(hŒBIO to add to.”h]”hŒBIO to add 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Œ&``struct folio *folio`` Folio to add. ”h]”(jÊ)�”}”(hŒ``struct folio *folio``”h]”jÐ)�”}”(hj2 h]”hŒstruct folio *folio”…”�”}”(hj4 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj0 ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MAhj, ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ Folio to add.”h]”hŒ Folio to add.”…”�”}”(hjK h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jG h´MAhjH ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj, ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jG h´MAhjð ubjÄ)�”}”(hŒ5``size_t len`` How many bytes from the folio to add. ”h]”(jÊ)�”}”(hŒ``size_t len``”h]”jÐ)�”}”(hjk h]”hŒ size_t len”…”�”}”(hjm h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhji ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MBhje 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´MBhj� ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhje ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j€ h´MBhjð 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´MChjž 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´MChjº ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjž ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¹ h´MChjð 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´MEhjÔ 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 ”…”�”}”(hjõ h²hh³Nh´Nubj©)�”}”(hŒ**off**”h]”hŒoff”…”�”}”(hjý h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjõ 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.”…”�”}”(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´MDhjÔ 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´MIhjÔ 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´MJhjÔ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²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ýhjVh²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]”(jf)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj] h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjY h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MXubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjl h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjY h²hh³jk h´MXubjf)�”}”(hŒint”h]”hŒint”…”�”}”(hjz h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjY h²hh³jk h´MXubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆ h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjY h²hh³jk h´MXubjC)�”}”(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`jauh1jBhjY h²hh³jk h´MXubj=)�”}”(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_vmalloc_chunk”†”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Œ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Œ void *vaddr”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj$ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6h²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Œvaddr”h]”hŒvaddr”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj$ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj® ubjC)�”}”(hŒ unsigned len”h]”(jf)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjfubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjfubjI)�”}”(hŒlen”h]”hŒlen”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjfubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj® ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjY h²hh³jk h´MXubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjU h²hh³jk h´MXubah}”(h]”jP ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jk h´MXhjR 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´MXhj­h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjR h²hh³jk h´MXubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÈjšjÈj›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(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´MYhjëubjæ)�”}”(hhh]”hÌ)�”}”(hŒdestination bio”h]”hŒdestination bio”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jh´MYhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjëubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jh´MYhjè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´MZhj$ubjæ)�”}”(hhh]”hÌ)�”}”(hŒvmalloc address to add”h]”hŒvmalloc address to add”…”�”}”(hjCh²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Œ:``unsigned len`` total length in bytes of the data to add ”h]”(jÊ)�”}”(hŒ``unsigned len``”h]”jÐ)�”}”(hjch]”hŒ unsigned 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´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³jxh´M[hjyubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jxh´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** 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”…”�”}”(hjÎ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”…”�”}”(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´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.”…”�”}”(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žhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œbio_add_vmalloc (C function)”Œc.bio_add_vmalloc”hNt”auh1hýhjVh²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]”(jf)�”}”(hjih]”hŒbool”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj$h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Msubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj$h²hh³j5h´MsubjC)�”}”(hŒbio_add_vmalloc”h]”jI)�”}”(hŒbio_add_vmalloc”h]”hŒbio_add_vmalloc”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjDubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj$h²hh³j5h´Msubj=)�”}”(hŒ0(struct bio *bio, void *vaddr, unsigned int len)”h]”(jC)�”}”(hŒstruct bio *bio”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Œbio”h]”hŒbio”…”�”}”(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)�”}”jjJsbŒ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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÒubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”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 int len”h]”(jf)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjubjf)�”}”(hŒint”h]”hŒint”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjubjI)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjPh²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<hj$h²hh³j5h´Msubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj h²hh³j5h´Msubah}”(h]”jah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j5h´Mshjh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒadd a vmalloc region to a bio”h]”hŒadd a vmalloc region to a bio”…”�”}”(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´Mshjwh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjh²hh³j5h´Msubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j’jšj’j›‰jœ‰j�‰uh1jh²hhjVh³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´Mwhj–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´Mthjµubjæ)�”}”(hhh]”hÌ)�”}”(hŒdestination bio”h]”hŒdestination bio”…”�”}”(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Œ'``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´Muhjî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´Muhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjîubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j h´Muhj²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´Mvhj'ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ(total length in bytes of the data to add”h]”hŒ(total length in bytes of the data to add”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jBh´MvhjCubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jBh´Mvhj²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj–ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjhh]”hŒ Description”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjfubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mxhj–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”…”�”}”(hjÎ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´Mwhj–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´Mzhj–ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œbio_await (C function)”Œ c.bio_await”hNt”auh1hýhjVh²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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjh²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&]”uh1j1hjh²hh³j$h´MubjC)�”}”(hŒ bio_await”h]”jI)�”}”(hŒ bio_await”h]”hŒ bio_await”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj3ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjh²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”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjOubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjOubh)�”}”(hhh]”jI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjnubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jsŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj9sbŒ c.bio_await”†”asbuh1hhjOubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjOubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjOubjI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjOubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjKubjC)�”}”(hŒ void *priv”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÁubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”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`jauh1jBhjKubjC)�”}”(hŒ+void (*submit)(struct bio *bio, void *priv)”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²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Œ*”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjubjI)�”}”(hŒsubmit”h]”hŒsubmit”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjubj“)�”}”(hjÏ™h]”hŒ)”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjubj“)�”}”(hj¦™h]”hŒ(”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjubh)�”}”(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”†”asbuh1hhjubj2)�”}”(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’hjubjI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjubj“)�”}”(hj3š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&]”uh1j1hjubjf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjubjI)�”}”(hŒpriv”h]”hŒpriv”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjubj“)�”}”(hjÏ™h]”hŒ)”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjKubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjh²hh³j$h´Mubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjh²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”…”�”}”(hjEh²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´MhjBh²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²hhjVh³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©)�”}”(hjgh]”hŒ Parameters”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjeubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mhjaubj¿)�”}”(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”…”�”}”(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Œ1``void *priv`` private data passed to **submit** ”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³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´Mhj¹ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ!private data passed to **submit**”h]”(hŒprivate data passed to ”…”�”}”(hjØh²hh³Nh´Nubj©)�”}”(hŒ **submit**”h]”hŒsubmit”…”�”}”(hjà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}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Ð)�”}”(hjh]”hŒ+void (*submit)(struct bio *bio, void *priv)”…”�”}”(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´Mhjubjæ)�”}”(hhh]”hÌ)�”}”(hŒ!function called to submit the bio”h]”hŒ!function called to submit the bio”…”�”}”(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}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjaubhÌ)�”}”(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´MhjaubhÌ)�”}”(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 ”…”�”}”(hjWh²hh³Nh´Nubj©)�”}”(hŒ **submit**”h]”hŒsubmit”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjWubhŒ1. The wait for the bio is set up before calling ”…”�”}”(hjWh²hh³Nh´Nubj©)�”}”(hŒ **submit**”h]”hŒsubmit”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjWubhŒ0 to ensure that the completion is captured. If ”…”�”}”(hjWh²hh³Nh´Nubj©)�”}”(hŒ **submit**”h]”hŒsubmit”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjWubhŒ is ”…”�”}”(hjWh²hh³Nh´NubjÐ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjWubhŒ1, submit_bio() is used instead to submit the bio.”…”�”}”(hjWh²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´MhjaubhÌ)�”}”(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´MhjaubhÌ)�”}”(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.”…”�”}”(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´Mhjaubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œsubmit_bio_wait (C function)”Œc.submit_bio_wait”hNt”auh1hýhjVh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ%int submit_bio_wait (struct bio *bio)”h]”j)�”}”(hŒ$int submit_bio_wait(struct bio *bio)”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjñh²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M3ubj2)�”}”(•hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjñh²hh³jh´M3ubjC)�”}”(hŒsubmit_bio_wait”h]”jI)�”}”(hŒsubmit_bio_wait”h]”hŒsubmit_bio_wait”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjñh²hh³jh´M3ubj=)�”}”(hŒ(struct bio *bio)”h]”jC)�”}”(hŒstruct bio *bio”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”j,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”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjMubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jRŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjsbŒc.submit_bio_wait”†”asbuh1hhj.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.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³jh´M3ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjíh²hh³jh´M3ubah}”(h]”jèah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jh´M3hjêh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ)submit a bio, and wait until it completes”h]”hŒ)submit 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´M3hj²h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjêh²hh³jh´M3ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÍjšjÍj›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(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´M7hjÑubj¿)�”}”(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ö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´M4hjðubjæ)�”}”(hhh]”hÌ)�”}”(hŒ6The :c:type:`struct bio ` which describes the I/O”h]”(hŒThe ”…”�”}”(hjh²hh³Nh´Nubh)�”}”(hŒ:c:type:`struct bio `”h]”jÐ)�”}”(hjh]”hŒ struct bio”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(j› j“Œc-type”eh"]”h$]”h&]”uh1jÏhjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j§ Œ refdomain”j“Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jj­ j° Œbio”uh1hh³j h´M4hjubhŒ which describes the I/O”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j h´M4hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjðubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j h´M4hjíubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÑubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjTh]”hŒ Description”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjRubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M6hjÑubhÌ)�”}”(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.”…”�”}”(hjjh²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´M5hjÑubhÌ)�”}”(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.”…”�”}”(hjyh²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´M8hjÑubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œbdev_rw_virt (C function)”Œc.bdev_rw_virt”hNt”auh1hýhjVh²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj¤h²hh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MXubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¤h²hh³j¶h´MXubjC)�”}”(hŒ bdev_rw_virt”h]”jI)�”}”(hŒ bdev_rw_virt”h]”hŒ bdev_rw_virt”…”�”}”(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´MXubj=)�”}”(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”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”j,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”…”�”}”(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.bdev_rw_virt”†”asbuh1hhjáubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjáubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj1h²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Œsector_t sector”h]”(h)�”}”(hhh]”jI)�”}”(hŒsector_t”h]”hŒsector_t”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjWubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j\Œmodname”NŒ classname”Njj )�”}”j ]”jŒc.bdev_rw_virt”†”asbuh1hhjSubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjSubjI)�”}”(hŒsector”h]”hŒsector”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjSubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÝubjC)�”}”(hŒ void *data”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj›ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”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Œ 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.bdev_rw_virt”†”asbuh1hhjÝubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÝubjI)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÝubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÝubjC)�”}”(hŒenum req_op op”h]”(j )�”}”(hj#h]”hŒenum”…”�”}”(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Œreq_op”h]”hŒreq_op”…”�”}”(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Œc.bdev_rw_virt”†”asbuh1hhj%ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj%ubjI)�”}”(hŒop”h]”hŒop”…”�”}”(hjsh²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´MXubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj h²hh³j¶h´MXubah}”(h]”j›ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j¶h´MXhj�h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ3synchronously read into / write from kernel mapping”h]”hŒ3synchronously read into / write from kernel mapping”…”�”}”(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´MXhjšh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj�h²hh³j¶h´MXubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jµjšjµj›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(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Œ5``struct block_device *bdev`` block device to access ”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´MYhjØubjæ)�”}”(hhh]”hÌ)�”}”(hŒblock device to access”h]”hŒblock device to access”…”�”}”(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Œ%``sector_t sector`` sector to access ”h]”(jÊ)�”}”(hŒ``sector_t sector``”h]”jÐ)�”}”(hjh]”hŒsector_t sector”…”�”}”(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´MZhjubjæ)�”}”(hhh]”hÌ)�”}”(hŒsector to access”h]”hŒsector to access”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j,h´MZhj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j,h´MZhjÕubjÄ)�”}”(hŒ"``void *data`` data to read/write ”h]”(jÊ)�”}”(hŒ``void *data``”h]”jÐ)�”}”(hjPh]”hŒ void *data”…”�”}”(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Œdata to read/write”h]”hŒdata to read/write”…”�”}”(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[hjÕubjÄ)�”}”(hŒ,``size_t len`` length in byte to read/write ”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´M\hjƒubjæ)�”}”(hhh]”hÌ)�”}”(hŒlength in byte to read/write”h]”hŒlength in byte to read/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Œ=``enum req_op op`` operation (e.g. REQ_OP_READ/REQ_OP_WRITE) ”h]”(jÊ)�”}”(hŒ``enum req_op op``”h]”jÐ)�”}”(hjÂh]”hŒenum req_op op”…”�”}”(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Œ)operation (e.g. REQ_OP_READ/REQ_OP_WRITE)”h]”hŒ)operation (e.g. REQ_OP_READ/REQ_OP_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Õ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Œ„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 ”…”�”}”(hjh²hh³Nh´Nubj©)�”}”(hŒ**bdev**”h]”hŒbdev”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjubhŒ for ”…”�”}”(hjh²hh³Nh´Nubj©)�”}”(hŒ**data**”h]”hŒdata”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjubhŒ/”…”�”}”(hjh²hh³Nh´Nubj©)�”}”(hŒ**len**”h]”hŒlen”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjubhŒ. ”…”�”}”(hjh²hh³Nh´Nubj©)�”}”(hŒ**data**”h]”hŒdata”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjubhŒ@ must be in the kernel direct mapping and not a vmalloc address.”…”�”}”(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žhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œbio_copy_data (C function)”Œc.bio_copy_data”hNt”auh1hýhjVh²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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj†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_copy_data”h]”jI)�”}”(hŒ bio_copy_data”h]”hŒ bio_copy_data”…”�”}”(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 *dst, struct bio *src)”h]”(jC)�”}”(hŒstruct bio *dst”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_copy_data”†”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Œdst”h]”hŒdst”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÃubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¿ubjC)�”}”(hŒstruct bio *src”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj5ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj5ubh)�”}”(hhh]”jI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjTubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jYŒmodname”NŒ classname”Njj )�”}”j ]”jŒc.bio_copy_data”†”asbuh1hhj5ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj5ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj5ubjI)�”}”(hŒsrc”h]”hŒsrc”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj5ubeh}”(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�hjh²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”…”�”}”(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&]”uh1jvhjh²hh³j˜h´M�ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÒjšjÒj›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(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 *dst`` destination bio ”h]”(jÊ)�”}”(hŒ``struct bio *dst``”h]”jÐ)�”}”(hjûh]”hŒstruct bio *dst”…”�”}”(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”…”�”}”(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Œ``struct bio *src`` source bio ”h]”(jÊ)�”}”(hŒ``struct bio *src``”h]”jÐ)�”}”(hj4h]”hŒstruct bio *src”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj2ubah}”(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Œ source bio”h]”hŒ source bio”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jIh´M‚hjJubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jIh´M‚hjòubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÖubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjoh]”hŒ Description”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjmubah}”(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Œ™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 ”…”�”}”(hj…h²hh³Nh´Nubj©)�”}”(hŒ**src**”h]”hŒsrc”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj…ubhŒ or ”…”�”}”(hj…h²hh³Nh´Nubj©)�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj…ubhŒ_ - that is, copies min(src->bi_size, dst->bi_size) bytes (or the equivalent for lists of 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„hjÖubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œbio_endio (C function)”Œ c.bio_endio”hNt”auh1hýhjVh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ void bio_endio (struct bio *bio)”h]”j)�”}”(hŒvoid bio_endio(struct bio *bio)”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÔ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´MPubjC)�”}”(hŒ bio_endio”h]”jI)�”}”(hŒ bio_endio”h]”hŒ bio_endio”…”�”}”(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)”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”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj0ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j5Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjûsbŒ c.bio_endio”†”asbuh1hhjubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjubjI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hjnh²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´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Œend I/O on a bio”h]”hŒend I/O on 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²hhjVh³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©)�”}”(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´MThj´ubj¿)�”}”(hhh]”jÄ)�”}”(hŒ``struct bio *bio`` 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´MQhjÓubjæ)�”}”(hhh]”hÌ)�”}”(hŒbio”h]”hŒbio”…”�”}”(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³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´MShj´ubj��)�”}”(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. 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´MShj* ubhÌ)�”}”(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= 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* ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jœ�h³j< h´MShj´ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œbio_split (C function)”Œ c.bio_split”hNt”auh1hýhjVh²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”…”�”}”(hjr h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjn 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&]”uh1j1hjn 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_split”sbŒ c.bio_split”†”asbuh1hhjn h²hh³j h´MŽubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj² h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjn h²hh³j h´MŽubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjÀ h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjn h²hh³j h´MŽubjC)�”}”(hŒ bio_split”h]”jI)�”}”(hj¯ h]”hŒ bio_split”…”�”}”(hjÑ h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÍ ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjn h²hh³j h´MŽubj=)�”}”(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ì h²hh³Nh´Nubah}”(h]”h ]”j,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_split”†”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Œbio”h]”hŒbio”…”�”}”(hjC!h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjè ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjä ubjC)�”}”(hŒ int sectors”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj\!h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjX!ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjj!h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjX!ubjI)�”}”(hŒsectors”h]”hŒsectors”…”�”}”(hjx!h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjX!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 ]”j­ Œ c.bio_split”†”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”…”�”}”(hj÷!h²hh³Nh´Nubah}”(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_split”†”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”…”�”}”(hj0"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<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Œ split a bio”h]”hŒ split a bio”…”�”}”(hjZ"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"h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjg h²hh³j h´MŽubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jr"jšjr"j›‰jœ‰j�‰uh1jh²hhjVh³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¨hjz"ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M’hjv"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´M�hj•"ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ bio to split”h]”hŒ bio to split”…”�”}”(hj´"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hË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``int sectors`` number of sectors to split from the front of **bio** ”h]”(jÊ)�”}”(hŒ``int sectors``”h]”jÐ)�”}”(hjÔ"h]”hŒ int sectors”…”�”}”(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Œ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³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`` 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”…”�”}”(hj4#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j0#h´M‘hj1#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j0#h´M‘hj’"ubjÄ)�”}”(hŒ0``struct bio_set *bs`` bio set to allocate from ”h]”(jÊ)�”}”(hŒ``struct bio_set *bs``”h]”jÐ)�”}”(hjT#h]”hŒstruct bio_set *bs”…”�”}”(hjV#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjR#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M’hjN#ubjæ)�”}”(hhh]”hÌ)�”}”(hŒbio set to allocate from”h]”hŒbio set to allocate from”…”�”}”(hjm#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ji#h´M’hjj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjN#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³ji#h´M’hj’"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³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M”hjv"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 ”…”�”}”(hj¥#h²hh³Nh´Nubj©)�”}”(hŒ **sectors**”h]”hŒsectors”…”�”}”(hj­#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¥#ubhŒ from the start of ”…”�”}”(hj¥#h²hh³Nh´Nubj©)�”}”(hŒ**bio**”h]”hŒbio”…”�”}”(hj¿#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¥#ubhŒ, and updates ”…”�”}”(hj¥#h²hh³Nh´Nubj©)�”}”(hŒ**bio**”h]”hŒbio”…”�”}”(hjÑ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¥#ubhŒ$ to represent the remaining sectors.”…”�”}”(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“hjv"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–hjv"ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œbio_trim (C function)”Œ c.bio_trim”hNt”auh1hýhjVh²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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjO$h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjK$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&]”uh1j1hjK$h²hh³j]$h´MÈubjC)�”}”(hŒbio_trim”h]”jI)�”}”(hŒbio_trim”h]”hŒbio_trim”…”�”}”(hjp$h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjl$ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjK$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&]”uh1jHhj§$ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j¬$Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjr$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Œ*”…”�”}”(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Œ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 ]”jÆ$Œ 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”…”�”}”(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.bio_trim”†”asbuh1hhjB%ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjg%h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjB%ubjI)�”}”(hŒsize”h]”hŒsize”…”�”}”(hju%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<hjK$h²hh³j]$h´MÈubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjG$h²hh³j]$h´MÈubah}”(h]”jB$ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j]$h´MÈhjD$h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ trim a bio”h]”hŒ trim 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&]”uh1jvhjD$h²hh³j]$h´MÈubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j·%jšj·%j›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(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 trim ”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 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åhjÚ%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jõ%h´MÉhj×%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 ”…”�”}”(hj2&h²hh³Nh´Nubj©)�”}”(hŒ**bio**”h]”hŒbio”…”�”}”(hj:&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj2&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Œ>``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”…”�”}”(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ËhjZ&ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ+size we want to trim **bio** to, in sectors”h]”(hŒsize we want to trim ”…”�”}”(hjy&h²hh³Nh´Nubj©)�”}”(hŒ**bio**”h]”hŒbio”…”�”}”(hj�&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjy&ubhŒ to, in sectors”…”�”}”(hjy&h²hh³Nh´Nubeh}”(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×%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Œ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.”…”�”}”(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žhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œbioset_init (C function)”Œ c.bioset_init”hNt”auh1hýhjVh²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjò&h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjî&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Œ 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´Mubj=)�”}”(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”…”�”}”(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.bioset_init”†”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Œ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]”(jf)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj¡'h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj�'ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯'h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj�'ubjf)�”}”(hŒint”h]”hŒint”…”�”}”(hj½'h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj�'ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjË'h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj�'ubjI)�”}”(hŒ pool_size”h]”hŒ pool_size”…”�”}”(hjÙ'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]”(jf)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjò'h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjî'ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjî'ubjf)�”}”(hŒint”h]”hŒint”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjî'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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjC(h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj?(ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQ(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´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ŒInitialize a bio_set”h]”hŒInitialize a bio_set”…”�”}”(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²hhjVh³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©)�”}”(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_set *bs`` pool to initialize ”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Œpool to initialize”h]”hŒpool to initialize”…”�”}”(hjã(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hË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Œ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)h]”hŒunsigned int pool_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Œ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)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hË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Œ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<)h]”hŒunsigned int front_pad”…”�”}”(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 hj6)ubjæ)�”}”(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”…”�”}”(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Á(ubjÄ)�”}”(hŒd``int flags`` Flags to modify behavior, currently ``BIOSET_NEED_BVECS`` and ``BIOSET_NEED_RESCUER`` ”h]”(jÊ)�”}”(hŒ ``int flags``”h]”jÐ)�”}”(hju)h]”hŒ int flags”…”�”}”(hjw)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjs)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒS/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:62: ./block/bio.c”h´M hjo)ubjæ)�”}”(hhh]”hÌ)�”}”(hŒUFlags to modify behavior, currently ``BIOSET_NEED_BVECS`` and ``BIOSET_NEED_RESCUER``”h]”(hŒ$Flags to modify behavior, currently ”…”�”}”(hjŽ)h²hh³Nh´NubjÐ)�”}”(hŒ``BIOSET_NEED_BVECS``”h]”hŒBIOSET_NEED_BVECS”…”�”}”(hj–)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjŽ)ubhŒ and ”…”�”}”(hjŽ)h²hh³Nh´NubjÐ)�”}”(hŒ``BIOSET_NEED_RESCUER``”h]”hŒBIOSET_NEED_RESCUER”…”�”}”(hj¨)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjŽ)ubeh}”(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åhjo)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¥(ubj��)�”}”(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ë)h²hh³Nh´Nubj©)�”}”(hŒ**bio_alloc_bioset**”h]”hŒbio_alloc_bioset”…”�”}”(hjó)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjë)ubhX?. 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ë)h²hh³Nh´NubjÐ)�”}”(hŒ``BIOSET_NEED_BVECS``”h]”hŒBIOSET_NEED_BVECS”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjë)ubhŒ is set in ”…”�”}”(hjë)h²hh³Nh´Nubj©)�”}”(hŒ **flags**”h]”hŒflags”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjë)ubhŒr, a separate pool will be allocated for allocating iovecs. This pool is not needed e.g. for bio_init_clone(). If ”…”�”}”(hjë)h²hh³Nh´NubjÐ)�”}”(hŒ``BIOSET_NEED_RESCUER``”h]”hŒBIOSET_NEED_RESCUER”…”�”}”(hj)*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjë)ubhŒq is set, a workqueue is created which can be used to dispatch queued requests when the mempool runs out of space.”…”�”}”(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ç)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœ�h³jA*h´Mhj¥(ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œseq_open (C function)”Œ c.seq_open”hNt”auh1hýhjVh²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjh*h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjd*h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.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Œseq_open”h]”jI)�”}”(hŒseq_open”h]”hŒseq_open”…”�”}”(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Œ4(struct file *file, const struct seq_operations *op)”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.seq_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Œconst struct seq_operations *op”h]”(j )�”}”(hj¾h]”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”…”�”}”(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+ubh)�”}”(hhh]”jI)�”}”(hŒseq_operations”h]”hŒseq_operations”…”�”}”(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.seq_open”†”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Œop”h]”hŒop”…”�”}”(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Œinitialize sequential file”h]”hŒinitialize sequential file”…”�”}”(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´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²hhjVh³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©)�”}”(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´K/hjÏ+ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ)``struct file *file`` file we initialize ”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³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´K,hjî+ubjæ)�”}”(hhh]”hÌ)�”}”(hŒfile we initialize”h]”hŒfile we initialize”…”�”}”(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ŒI``const struct seq_operations *op`` method table describing the sequence ”h]”(jÊ)�”}”(hŒ#``const struct seq_operations *op``”h]”jÐ)�”}”(hj-,h]”hŒconst struct seq_operations *op”…”�”}”(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´K-hj',ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ$method table describing the sequence”h]”hŒ$method table describing the sequence”…”�”}”(hjF,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jB,h´K-hjC,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj',ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jB,h´K-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³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´K/hjÏ+ubj��)�”}”(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 ”…”�”}”(hj‚,h²hh³Nh´Nubj©)�”}”(hŒ**file**”h]”hŒfile”…”�”}”(hjŠ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj‚,ubhŒ., associating it with a sequence described by ”…”�”}”(hj‚,h²hh³Nh´Nubj©)�”}”(hŒ**op**”h]”hŒop”…”�”}”(hjœ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj‚,ubhŒ. ”…”�”}”(hj‚,h²hh³Nh´Nubj©)�”}”(hŒ**op->start\(\)**”h]”hŒ op->start()”…”�”}”(hj®,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj‚,ub•9hŒA sets the iterator up and returns the first element of sequence. ”…”�”}”(hj‚,h²hh³Nh´Nubj©)�”}”(hŒ**op->stop\(\)**”h]”hŒ op->stop()”…”�”}”(hjÀ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj‚,ubhŒ shuts it down. ”…”�”}”(hj‚,h²hh³Nh´Nubj©)�”}”(hŒ**op->next\(\)**”h]”hŒ op->next()”…”�”}”(hjÒ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj‚,ubhŒ( returns the next element of sequence. ”…”�”}”(hj‚,h²hh³Nh´Nubj©)�”}”(hŒ**op->show\(\)**”h]”hŒ op->show()”…”�”}”(hjä,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj‚,ubhŒ… prints element into the buffer. In case of error ->start() and ->next() return ERR_PTR(error). In the end of sequence they return ”…”�”}”(hj‚,h²hh³Nh´NubjÐ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjö,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj‚,ubhŒŽ. ->show() returns 0 in case of success and negative number in case of error. Returning SEQ_SKIP means “discard this element and move onâ€�.”…”�”}”(hj‚,h²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.hj~,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœ�h³j-h´K.hjÏ+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³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´K7hjÏ+ubj¿)�”}”(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”…”�”}”(hj4-h²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´K7hj0-ubjæ)�”}”(hhh]”hÌ)�”}”(hŒGpointer in **file->private_data**. This pointer should not be modified.”h]”(hŒ pointer in ”…”�”}”(hjF-h²hh³Nh´Nubj©)�”}”(hŒ**file->private_data**”h]”hŒfile->private_data”…”�”}”(hjN-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjF-ubhŒ&. This pointer should not be modified.”…”�”}”(hjF-h²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´K8hjC-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj0-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jB-h´K7hj--ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÏ+ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œseq_read (C function)”Œ c.seq_read”hNt”auh1hýhjVh²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œ-h²hh³Nh´Nubah}”(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_read”sbŒ c.seq_read”†”asbuh1hhj•-h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_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Œseq_read”h]”jI)�”}”(hjº-h]”hŒseq_read”…”�”}”(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, char __user *buf, size_t size, loff_t *ppos)”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¸-Œ c.seq_read”†”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Œfile”h]”hŒfile”…”�”}”(hjB.h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjç-ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjã-ubjC)�”}”(hŒchar __user *buf”h]”(jf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj[.h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjW.ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hji.h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjW.ubhŒ__user”…”�”}”(hjW.h²hh³Nh´Nubj2)�”}”(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Œbuf”h]”hŒbuf”…”�”}”(hj–.h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjW.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.seq_read”†”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Œ 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.seq_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Œppos”h]”hŒppos”…”�”}”(hj3/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]”jŒ-ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j½-h´K�hjŽ-h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ%->read() method for sequential files.”h]”hŒ%->read() method for sequential files.”…”�”}”(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´K�hjZ/h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjŽ-h²hh³j½-h´K�ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™ju/jšju/j›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(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´K”hjy/ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ,``struct file *file`` the file to read 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³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´K‘hj˜/ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe file to read from”h]”hŒthe file to read from”…”�”}”(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 __user *buf`` the buffer to read to ”h]”(jÊ)�”}”(hŒ``char __user *buf``”h]”jÐ)�”}”(hj×/h]”hŒchar __user *buf”…”�”}”(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´K’hjÑ/ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe buffer to read to”h]”hŒthe buffer to read 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Œ4``size_t size`` the maximum number of bytes to read ”h]”(jÊ)�”}”(hŒ``size_t size``”h]”jÐ)�”}”(hj0h]”hŒ size_t size”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj0ubah}”(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 0ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ#the maximum number of bytes to read”h]”hŒ#the maximum number of bytes to read”…”�”}”(hj)0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j%0h´K“hj&0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj 0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j%0h´K“hj•/ubjÄ)�”}”(hŒ2``loff_t *ppos`` the current position in the file ”h]”(jÊ)�”}”(hŒ``loff_t *ppos``”h]”jÐ)�”}”(hjI0h]”hŒ loff_t *ppos”…”�”}”(hjK0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjG0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´K”hjC0ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ the current position in the file”h]”hŒ the current position in the file”…”�”}”(hjb0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j^0h´K”hj_0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjC0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j^0h´K”hj•/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjy/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³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´K–hjy/ubj��)�”}”(hŒReady-made ->f_op->read()”h]”hÌ)�”}”(hjœ0h]”hŒReady-made ->f_op->read()”…”�”}”(hjž0h²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š0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœ�h³j«0h´K•hjy/ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œseq_lseek (C function)”Œ c.seq_lseek”hNt”auh1hýhjVh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ?loff_t seq_lseek (struct file *file, loff_t offset, int whence)”h]”j)�”}”(hŒ>loff_t seq_lseek(struct file *file, loff_t offset, int whence)”h]”(h)�”}”(hhh]”jI)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hjÕ0h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÒ0ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j×0Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒ seq_lseek”sbŒ c.seq_lseek”†”asbuh1hhjÎ0h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´M.ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷0h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÎ0h²hh³jö0h´M.ubjC)�”}”(hŒ seq_lseek”h]”jI)�”}”(hjó0h]”hŒ seq_lseek”…”�”}”(hj 1h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj1ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjÎ0h²hh³jö0h´M.ubj=)�”}”(hŒ.(struct file *file, loff_t offset, int whence)”h]”(jC)�”}”(hŒstruct file *file”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj$1h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj 1ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj11h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj 1ubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjB1h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj?1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jD1Œmodname”NŒ classname”Njj )�”}”j ]”jñ0Œ c.seq_lseek”†”asbuh1hhj 1ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`1h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj 1ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjn1h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj 1ubjI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hj{1h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj 1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj1ubjC)�”}”(hŒ loff_t offset”h]”(h)�”}”(hhh]”jI)�”}”(hŒloff_t”h]”hŒloff_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ñ0Œ c.seq_lseek”†”asbuh1hhj�1ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµ1h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj�1ubjI)�”}”(hŒoffset”h]”hŒoffset”…”�”}”(hjÃ1h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj�1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj1ubjC)�”}”(hŒ int whence”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjÜ1h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjØ1ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjê1h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjØ1ubjI)�”}”(hŒwhence”h]”hŒwhence”…”�”}”(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Œ'->llseek() method for sequential files.”h]”hŒ'->llseek() method for sequential files.”…”�”}”(hj"2h²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.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²hhjVh³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©)�”}”(hjD2h]”hŒ Parameters”…”�”}”(hjF2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjB2ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´M2hj>2ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ+``struct file *file`` the file in question ”h]”(jÊ)�”}”(hŒ``struct file *file``”h]”jÐ)�”}”(hjc2h]”hŒstruct file *file”…”�”}”(hje2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhja2ubah}”(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]2ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe file in question”h]”hŒthe file in question”…”�”}”(hj|2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jx2h´M/hjy2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj]2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jx2h´M/hjZ2ubjÄ)�”}”(hŒ``loff_t offset`` new position ”h]”(jÊ)�”}”(hŒ``loff_t offset``”h]”jÐ)�”}”(hjœ2h]”hŒ loff_t offset”…”�”}”(hjž2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjš2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´M0hj–2ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ new position”h]”hŒ new position”…”�”}”(hjµ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j±2h´M0hj²2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj–2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j±2h´M0hjZ2ubjÄ)�”}”(hŒ7``int whence`` 0 for absolute, 1 for relative position ”h]”(jÊ)�”}”(hŒ``int whence``”h]”jÐ)�”}”(hjÕ2h]”hŒ int whence”…”�”}”(hj×2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÓ2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´M1hjÏ2ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ'0 for absolute, 1 for relative position”h]”hŒ'0 for absolute, 1 for relative position”…”�”}”(hjî2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jê2h´M1hjë2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÏ2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jê2h´M1hjZ2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj>2ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj3h]”hŒ Description”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´M3hj>2ubj��)�”}”(hŒReady-made ->f_op->llseek()”h]”hÌ)�”}”(hj(3h]”hŒReady-made ->f_op->llseek()”…”�”}”(hj*3h²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&3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœ�h³j73h´M2hj>2ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œseq_release (C function)”Œ c.seq_release”hNt”auh1hýhjVh²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj^3h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjZ3h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MZubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjm3h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjZ3h²hh³jl3h´MZubjC)�”}”(hŒ seq_release”h]”jI)�”}”(hŒ seq_release”h]”hŒ seq_release”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj{3ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjZ3h²hh³jl3h´MZubj=)�”}”(hŒ((struct inode *inode, struct file *file)”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Œ ”…”�”}”(hj¨3h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj—3ubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(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)�”}”jj�3sbŒ c.seq_release”†”asbuh1hhj—3ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙ3h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj—3ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjç3h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj—3ubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjô3h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj—3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj“3ubjC)�”}”(hŒstruct file *file”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj 4h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj 4ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj 4ubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(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Õ3Œ c.seq_release”†”asbuh1hhj 4ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjI4h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj 4ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjW4h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj 4ubjI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjd4h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj 4ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj“3ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjZ3h²hh³jl3h´MZubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjV3h²hh³jl3h´MZubah}”(h]”jQ3ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jl3h´MZhjS3h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ4free the structures associated with sequential file.”h]”hŒ4free the structures associated with sequential file.”…”�”}”(hjŽ4h²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´MZhj‹4h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjS3h²hh³jl3h´MZubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j¦4jšj¦4j›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(hj°4h]”hŒ Parameters”…”�”}”(hj²4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj®4ubah}”(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ª4ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ"``struct inode *inode`` its inode ”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³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´M[hjÉ4ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ its inode”h]”hŒ its inode”…”�”}”(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Æ4ubjÄ)�”}”(hŒ'``struct file *file`` file in question ”h]”(jÊ)�”}”(hŒ``struct file *file``”h]”jÐ)�”}”(hj5h]”hŒstruct file *file”…”�”}”(hj 5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´M\hj5ubjæ)�”}”(hhh]”hÌ)�”}”(hŒfile in question”h]”hŒfile in question”…”�”}”(hj!5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j5h´M\hj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j5h´M\hjÆ4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjª4ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjC5h]”hŒ Description”…”�”}”(hjE5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjA5ubah}”(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ª4ubj��)�”}”(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]5h²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]hjY5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœ�h³jk5h´M]hjª4ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œseq_escape_mem (C function)”Œc.seq_escape_mem”hNt”auh1hýhjVh²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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj’5h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjŽ5h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´Mkubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡5h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjŽ5h²hh³j 5h´MkubjC)�”}”(hŒseq_escape_mem”h]”jI)�”}”(hŒseq_escape_mem”h]”hŒseq_escape_mem”…”�”}”(hj³5h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¯5ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjŽ5h²hh³j 5h´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Ï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Œseq_file”h]”hŒseq_file”…”�”}”(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)�”}”jjµ5sbŒc.seq_escape_mem”†”asbuh1hhjË5ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj 6h²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Œm”h]”hŒm”…”�”}”(hj(6h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjË5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÇ5ubjC)�”}”(hŒconst char *src”h]”(j )�”}”(hj¾h]”hŒconst”…”�”}”(hjA6h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj=6ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjN6h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj=6ubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj\6h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj=6ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjj6h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj=6ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjx6h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj=6ubjI)�”}”(hŒsrc”h]”hŒsrc”…”�”}”(hj…6h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj=6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÇ5ubjC)�”}”(hŒ size_t len”h]”(h)�”}”(hhh]”jI)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(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 6Œc.seq_escape_mem”†”asbuh1hhjš6ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿6h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjš6ubjI)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjÍ6h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjš6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÇ5ubjC)�”}”(hŒunsigned int flags”h]”(jf)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjæ6h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjâ6ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjô6h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjâ6ubjf)�”}”(hŒint”h]”hŒint”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjâ6ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjâ6ubjI)�”}”(hŒflags”h]”hŒflags”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjâ6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÇ5ubjC)�”}”(hŒconst char *esc”h]”(j )�”}”(hj¾h]”hŒconst”…”�”}”(hj77h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj37ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjD7h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj37ubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjR7h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj37ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`7h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj37ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjn7h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj37ubjI)�”}”(hŒesc”h]”hŒesc”…”�”}”(hj{7h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj37ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÇ5ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjŽ5h²hh³j 5h´Mkubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjŠ5h²hh³j 5h´Mkubah}”(h]”j…5ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j 5h´Mkhj‡5h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ0print data into buffer, escaping some characters”h]”hŒ0print data into buffer, escaping some characters”…”�”}”(hj¥7h²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´Mkhj¢7h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj‡5h²hh³j 5h´Mkubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j½7jšj½7j›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(hjÇ7h]”hŒ Parameters”…”�”}”(hjÉ7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÅ7ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MohjÁ7ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ%``struct seq_file *m`` target buffer ”h]”(jÊ)�”}”(hŒ``struct seq_file *m``”h]”jÐ)�”}”(hjæ7h]”hŒstruct seq_file *m”…”�”}”(hjè7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjä7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´Mlhjà7ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ target buffer”h]”hŒ target buffer”…”�”}”(hjÿ7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jû7h´Mlhjü7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjà7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jû7h´MlhjÝ7ubjÄ)�”}”(hŒ"``const char *src`` source buffer ”h]”(jÊ)�”}”(hŒ``const char *src``”h]”jÐ)�”}”(hj8h]”hŒconst char *src”…”�”}”(hj!8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´Mmhj8ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ source buffer”h]”hŒ source buffer”…”�”}”(hj88h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j48h´Mmhj58ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j48h´MmhjÝ7ubjÄ)�”}”(hŒ%``size_t len`` size of source buffer ”h]”(jÊ)�”}”(hŒ``size_t len``”h]”jÐ)�”}”(hjX8h]”hŒ size_t len”…”�”}”(hjZ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjV8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MnhjR8ubjæ)�”}”(hhh]”hÌ)�”}”(hŒsize of source buffer”h]”hŒsize of source buffer”…”�”}”(hjq8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jm8h´Mnhjn8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjR8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jm8h´MnhjÝ7ubjÄ)�”}”(hŒ<``unsigned int flags`` flags to pass to string_escape_mem() ”h]”(jÊ)�”}”(hŒ``unsigned int flags``”h]”jÐ)�”}”(hj‘8h]”hŒunsigned int flags”…”�”}”(hj“8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj�8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´Mohj‹8ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ$flags to pass to string_escape_mem()”h]”hŒ$flags to pass to string_escape_mem()”…”�”}”(hjª8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¦8h´Mohj§8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj‹8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¦8h´MohjÝ7ubjÄ)�”}”(hŒ9``const char *esc`` set of characters that need escaping ”h]”(jÊ)�”}”(hŒ``const char *esc``”h]”jÐ)�”}”(hjÊ8h]”hŒconst char *esc”…”�”}”(hjÌ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÈ8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MphjÄ8ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ$set of characters that need escaping”h]”hŒ$set of characters that need escaping”…”�”}”(hjã8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jß8h´Mphjà8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÄ8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jß8h´MphjÝ7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÁ7ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj9h]”hŒ Description”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MrhjÁ7ubhÌ)�”}”(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 ”…”�”}”(hj9h²hh³Nh´Nubj©)�”}”(hŒ **flags**”h]”hŒflags”…”�”}”(hj#9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj9ubhŒ and ”…”�”}”(hj9h²hh³Nh´Nubj©)�”}”(hŒ**esc**”h]”hŒesc”…”�”}”(hj59h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj9ubhŒ") with printable escaped sequence.”…”�”}”(hj9h²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´MqhjÁ7ubhÌ)�”}”(hŒ-Use seq_has_overflowed() to check for errors.”h]”hŒ-Use seq_has_overflowed() to check for errors.”…”�”}”(hjN9h²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´MthjÁ7ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œseq_path (C function)”Œ c.seq_path”hNt”auh1hýhjVh²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj}9h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjy9h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MÎubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒ9h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjy9h²hh³j‹9h´MÎubjC)�”}”(hŒseq_path”h]”jI)�”}”(hŒseq_path”h]”hŒseq_path”…”�”}”(hjž9h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjš9ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjy9h²hh³j‹9h´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”…”�”}”(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Œseq_file”h]”hŒseq_file”…”�”}”(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)�”}”jj 9sbŒ c.seq_path”†”asbuh1hhj¶9ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjø9h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¶9ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj¶9ubjI)�”}”(hj*6h]”hŒm”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¶9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj²9ubjC)�”}”(hŒconst struct path *path”h]”(j )�”}”(hj¾h]”hŒconst”…”�”}”(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':ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjF:h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj':ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjS:h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj':ubh)�”}”(hhh]”jI)�”}”(hŒpath”h]”hŒpath”…”�”}”(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ô9Œ c.seq_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”…”�”}”(hj�:h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj':ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj²9ubjC)�”}”(hŒconst char *esc”h]”(j )�”}”(hj¾h]”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²:ubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjÑ:h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj²:ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjß:h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj²:ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjí:h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj²:ubjI)�”}”(hŒesc”h]”hŒesc”…”�”}”(hjú:h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj²:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj²9ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjy9h²hh³j‹9h´MÎubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhju9h²hh³j‹9h´MÎubah}”(h]”jp9ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j‹9h´MÎhjr9h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ&seq_file interface to print a pathname”h]”hŒ&seq_file interface to print a pathname”…”�”}”(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&]”uh1jvhjr9h²hh³j‹9h´MÎubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j<;jšj<;j›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(hjF;h]”hŒ Parameters”…”�”}”(hjH;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjD;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Œ+``struct seq_file *m`` the seq_file handle ”h]”(jÊ)�”}”(hŒ``struct seq_file *m``”h]”jÐ)�”}”(hje;h]”hŒstruct seq_file *m”…”�”}”(hjg;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjc;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 seq_file handle”h]”hŒthe seq_file handle”…”�”}”(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\;ubjÄ)�”}”(hŒ5``const struct path *path`` the struct path to print ”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³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MÐhj˜;ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe struct path to print”h]”hŒthe struct path to print”…”�”}”(hj·;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hË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 *esc`` set of characters to escape in the output ”h]”(jÊ)�”}”(hŒ``const char *esc``”h]”jÐ)�”}”(hj×;h]”hŒconst char *esc”…”�”}”(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Œ)set of characters to escape in the output”h]”hŒ)set of characters to escape in the output”…”�”}”(hjð;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hË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³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MÓhj@;ubhÌ)�”}”(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(<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žhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œseq_file_path (C function)”Œc.seq_file_path”hNt”auh1hýhjVh²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjW<h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjS<h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´Mëubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjf<h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjS<h²hh³je<h´MëubjC)�”}”(hŒ seq_file_path”h]”jI)�”}”(hŒ seq_file_path”h]”hŒ seq_file_path”…”�”}”(hjx<h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjt<ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjS<h²hh³je<h´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”<h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj�<ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡<h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj�<ubh)�”}”(hhh]”jI)�”}”(hŒseq_file”h]”hŒseq_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)�”}”jjz<sbŒc.seq_file_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)�”}”(hj*6h]”hŒm”…”�”}”(hjí<h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj�<ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjŒ<ubjC)�”}”(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Î<Œc.seq_file_path”†”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Œ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Œconst char *esc”h]”(j )�”}”(hj¾h]”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=ubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj�=h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjq=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Œesc”h]”hŒesc”…”�”}”(hj¹=h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjq=ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjŒ<ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjS<h²hh³je<h´Mëubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjO<h²hh³je<h´Mëubah}”(h]”jJ<ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³je<h´MëhjL<h²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”…”�”}”(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&]”uh1jvhjL<h²hh³je<h´Mëubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jû=jšjû=j›‰jœ‰j�‰uh1jh²hhjVh³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>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Œ+``struct seq_file *m`` the seq_file handle ”h]”(jÊ)�”}”(hŒ``struct seq_file *m``”h]”jÐ)�”}”(hj$>h]”hŒstruct seq_file *m”…”�”}”(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 seq_file handle”h]”hŒthe seq_file handle”…”�”}”(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>ubjÄ)�”}”(hŒ/``struct file *file`` the struct file to print ”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³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MíhjW>ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe struct file to print”h]”hŒthe struct file to print”…”�”}”(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íhj>ubjÄ)�”}”(hŒ>``const char *esc`` set of characters to escape in the output ”h]”(jÊ)�”}”(hŒ``const char *esc``”h]”jÐ)�”}”(hj–>h]”hŒconst char *esc”…”�”}”(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Œ)set of characters to escape in the output”h]”hŒ)set of characters to escape in the output”…”�”}”(hj¯>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hË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³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´Mðhjÿ=ubhÌ)�”}”(hŒ%return the absolute path to the file.”h]”hŒ%return the absolute path to the file.”…”�”}”(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ÿ=ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œseq_write (C function)”Œ c.seq_write”hNt”auh1hýhjVh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒBint seq_write (struct seq_file *seq, const void *data, size_t len)”h]”j)�”}”(hŒAint seq_write(struct seq_file *seq, const void *data, size_t len)”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj?h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´M0ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%?h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj?h²hh³j$?h´M0ubjC)�”}”(hŒ seq_write”h]”jI)�”}”(hŒ seq_write”h]”hŒ seq_write”…”�”}”(hj7?h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj3?ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj?h²hh³j$?h´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”…”�”}”(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Œseq_file”h]”hŒseq_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)�”}”jj9?sbŒ c.seq_write”†”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Œseq”h]”hŒseq”…”�”}”(hj¬?h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjO?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjK?ubjC)�”}”(hŒconst void *data”h]”(j )�”}”(hj¾h]”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Á?ubjf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjà?h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÁ?ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjî?h²hh³Nh´Nubah}”(h]”h ]”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`jauh1jBhjK?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.seq_write”†”asbuh1hhj@ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjC@h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj@ubjI)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjQ@h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjK?ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj?h²hh³j$?h´M0ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj?h²hh³j$?h´M0ubah}”(h]”j ?ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j$?h´M0hj ?h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒwrite arbitrary data to buffer”h]”hŒwrite arbitrary data to buffer”…”�”}”(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´M0hjx@h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj ?h²hh³j$?h´M0ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j“@jšj“@j›‰jœ‰j�‰uh1jh²hhjVh³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�@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´M4hj—@ubj¿)�”}”(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Ð)�”}”(hj¼@h]”hŒstruct seq_file *seq”…”�”}”(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´M1hj¶@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´M1hjÒ@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¶@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÑ@h´M1hj³@ubjÄ)�”}”(hŒ"``const void *data`` data address ”h]”(jÊ)�”}”(hŒ``const void *data``”h]”jÐ)�”}”(hjõ@h]”hŒconst void *data”…”�”}”(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´M2hjï@ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ data address”h]”hŒ data address”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j Ah´M2hj Aubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjï@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j Ah´M2hj³@ubjÄ)�”}”(hŒ``size_t len`` number of bytes ”h]”(jÊ)�”}”(hŒ``size_t len``”h]”jÐ)�”}”(hj.Ah]”hŒ size_t len”…”�”}”(hj0Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj,Aubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´M3hj(Aubjæ)�”}”(hhh]”hÌ)�”}”(hŒnumber of bytes”h]”hŒnumber of bytes”…”�”}”(hjGAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jCAh´M3hjDAubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj(Aubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jCAh´M3hj³@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj—@ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjiAh]”hŒ Description”…”�”}”(hjkAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjgAubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´M5hj—@ubhÌ)�”}”(hŒ(Return 0 on success, non-zero otherwise.”h]”hŒ(Return 0 on success, non-zero otherwise.”…”�”}”(hjAh²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—@ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œseq_pad (C function)”Œ c.seq_pad”hNt”auh1hýhjVh²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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj®Ah²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjªAh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MDubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½Ah²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjªAh²hh³j¼Ah´MDubjC)�”}”(hŒseq_pad”h]”jI)�”}”(hŒseq_pad”h]”hŒseq_pad”…”�”}”(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´MDubj=)�”}”(hŒ(struct seq_file *m, char c)”h]”(jC)�”}”(hŒstruct seq_file *m”h]”(j )�”}”(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Œseq_file”h]”hŒseq_file”…”�”}”(hj Bh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjBubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j BŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjÑAsbŒ c.seq_pad”†”asbuh1hhjçAubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)Bh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjçAubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj7Bh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjçAubjI)�”}”(hj*6h]”hŒm”…”�”}”(hjDBh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjçAubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjãAubjC)�”}”(hŒchar c”h]”(jf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj\Bh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjXBubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjjBh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjXBubjI)�”}”(hj“h]”hŒc”…”�”}”(hjxBh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjXBubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjãAubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjªAh²hh³j¼Ah´MDubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj¦Ah²hh³j¼Ah´MDubah}”(h]”j¡Aah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j¼Ah´MDhj£Ah²hubjw)�”}”(hhh]”hÌ)�”}”(hŒwrite padding spaces to buffer”h]”hŒwrite padding spaces to buffer”…”�”}”(hj¡Bh²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žBh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj£Ah²hh³j¼Ah´MDubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j¹Bjšj¹Bj›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(hjÃBh]”hŒ Parameters”…”�”}”(hjÅBh²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´MHhj½Bubj¿)�”}”(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Ð)�”}”(hjâBh]”hŒstruct seq_file *m”…”�”}”(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´MEhjÜBubjæ)�”}”(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ûBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j÷Bh´MEhjøBubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÜBubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j÷Bh´MEhjÙBubjÄ)�”}”(hŒ7``char c`` the byte to append after padding if non-zero”h]”(jÊ)�”}”(hŒ ``char c``”h]”jÐ)�”}”(hjCh]”hŒchar c”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjCubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MGhjCubjæ)�”}”(hhh]”hÌ)�”}”(hŒ,the byte to append after padding if non-zero”h]”hŒ,the byte to append after padding if non-zero”…”�”}”(hj4Ch²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´MFhj1Cubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjCubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j0Ch´MGhjÙBubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj½Bubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œseq_hlist_start (C function)”Œc.seq_hlist_start”hNt”auh1hýhjVh²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”…”�”}”(hjuCh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjqCh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MÀubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒCh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjqCh²hh³j‚Ch´MÀubh)�”}”(hhh]”jI)�”}”(hŒ hlist_node”h]”hŒ hlist_node”…”�”}”(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)�”}”jŒseq_hlist_start”sbŒc.seq_hlist_start”†”asbuh1hhjqCh²hh³j‚Ch´MÀubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµCh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjqCh²hh³j‚Ch´MÀubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjÃCh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjqCh²hh³j‚Ch´MÀubjC)�”}”(hŒseq_hlist_start”h]”jI)�”}”(hj²Ch]”hŒseq_hlist_start”…”�”}”(hjÔCh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÐCubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjqCh²hh³j‚Ch´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 Dh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj Dubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jDŒmodname”NŒ classname”Njj )�”}”j ]”j°CŒc.seq_hlist_start”†”asbuh1hhjëCubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+Dh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjëCubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj9Dh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjëCubjI)�”}”(hŒhead”h]”hŒhead”…”�”}”(hjFDh²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”…”�”}”(hjbDh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj_Dubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jdDŒmodname”NŒ classname”Njj )�”}”j ]”j°CŒc.seq_hlist_start”†”asbuh1hhj[Dubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€Dh²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<hjqCh²hh³j‚Ch´MÀubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjmCh²hh³j‚Ch´MÀubah}”(h]”jhCah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j‚Ch´MÀhjjCh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒstart an iteration of a hlist”h]”hŒstart an iteration of a hlist”…”�”}”(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&]”uh1jvhjjCh²hh³j‚Ch´MÀubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÐDjšjÐDj›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(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”…”�”}”(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ðDubjÄ)�”}”(hŒ2``loff_t pos`` the start position of the sequence ”h]”(jÊ)�”}”(hŒ``loff_t pos``”h]”jÐ)�”}”(hj2Eh]”hŒ loff_t pos”…”�”}”(hj4Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj0Eubah}”(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,Eubjæ)�”}”(hhh]”hÌ)�”}”(hŒ"the start position of the sequence”h]”hŒ"the start position of the sequence”…”�”}”(hjKEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jGEh´MÂhjHEubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj,Eubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jGEh´MÂhjðDubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÔDubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjmEh]”hŒ Description”…”�”}”(hjoEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjkEubah}”(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().”…”�”}”(hjƒEh²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žhjVh²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ýhjVh²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”…”�”}”(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´MÒubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀEh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj®Eh²hh³j¿Eh´MÒubh)�”}”(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”sbŒc.seq_hlist_start_head”†”asbuh1hhj®Eh²hh³j¿Eh´MÒubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjòEh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj®Eh²hh³j¿Eh´MÒubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj®Eh²hh³j¿Eh´MÒubjC)�”}”(hŒseq_hlist_start_head”h]”jI)�”}”(hjïEh]”hŒseq_hlist_start_head”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj Fubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj®Eh²hh³j¿Eh´MÒubj=)�”}”(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&]”uh1jhj(Fubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9Fh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj(Fubh)�”}”(hhh]”jI)�”}”(hŒ hlist_head”h]”hŒ hlist_head”…”�”}”(hjJFh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjGFubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jLFŒmodname”NŒ classname”Njj )�”}”j ]”jíEŒc.seq_hlist_start_head”†”asbuh1hhj(Fubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhFh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj(Fubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjvFh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj(FubjI)�”}”(hŒhead”h]”hŒhead”…”�”}”(hjƒFh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj(Fubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj$FubjC)�”}”(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”†”asbuh1hhj˜Fubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½Fh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj˜FubjI)�”}”(hŒpos”h]”hŒpos”…”�”}”(hjËFh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj˜Fubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj$Fubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj®Eh²hh³j¿Eh´MÒubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjªEh²hh³j¿Eh´MÒubah}”(h]”j¥Eah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j¿Eh´MÒhj§Eh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒstart an iteration of a hlist”h]”hŒstart an iteration of a hlist”…”�”}”(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´MÒhjòFh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj§Eh²hh³j¿Eh´MÒubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j Gjšj Gj›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(hjGh]”hŒ Parameters”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjGubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MÖhjGubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ2``struct hlist_head *head`` the head of the hlist ”h]”(jÊ)�”}”(hŒ``struct hlist_head *head``”h]”jÐ)�”}”(hj6Gh]”hŒstruct hlist_head *head”…”�”}”(hj8Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj4Gubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MÓhj0Gubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe head of the hlist”h]”hŒthe head of the hlist”…”�”}”(hjOGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jKGh´MÓhjLGubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj0Gubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jKGh´MÓhj-GubjÄ)�”}”(hŒ2``loff_t pos`` the start position of the sequence ”h]”(jÊ)�”}”(hŒ``loff_t pos``”h]”jÐ)�”}”(hjoGh]”hŒ loff_t pos”…”�”}”(hjqGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjmGubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MÔhjiGubjæ)�”}”(hhh]”hÌ)�”}”(hŒ"the start position of the sequence”h]”hŒ"the start position of the sequence”…”�”}”(hjˆGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j„Gh´MÔhj…Gubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjiGubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j„Gh´MÔhj-Gubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjGubhÌ)�”}”(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´MÖhjGubhÌ)�”}”(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´MÕhjGubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œseq_hlist_next (C function)”Œc.seq_hlist_next”hNt”auh1hýhjVh²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ï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”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj Hubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jHŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒseq_hlist_next”sbŒc.seq_hlist_next”†”asbuh1hhjëGh²hh³jüGh´Mãubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/Hh²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”h]”jI)�”}”(hj,Hh]”hŒseq_hlist_next”…”�”}”(hjNHh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjJHubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjëGh²hh³jüGh´Mãubj=)�”}”(hŒ0(void *v, struct hlist_head *head, loff_t *ppos)”h]”(jC)�”}”(hŒvoid *v”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjiHh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjeHubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwHh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjeHubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj…Hh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjeHubjI)�”}”(hŒv”h]”hŒv”…”�”}”(hj’Hh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjeHubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjaHubjC)�”}”(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 ]”j*HŒc.seq_hlist_next”†”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”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj§Hubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjaHubjC)�”}”(hŒ loff_t *ppos”h]”(h)�”}”(hhh]”jI)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hjIh²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 ]”j*HŒc.seq_hlist_next”†”asbuh1hhjIubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjah"]”h$]”h&]”uh1j1hjIubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjJIh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjIubjI)�”}”(hŒppos”h]”hŒppos”…”�”}”(hjWIh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjIubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjaHubeh}”(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Œ&move to the next position of the hlist”h]”hŒ&move to the next position of the hlist”…”�”}”(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´Mãhj~Ih²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²hhjVh³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©)�”}”(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³jJh´MåhjJubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjõIubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jJh´Måhj¹IubjÄ)�”}”(hŒ&``loff_t *ppos`` the current position ”h]”(jÊ)�”}”(hŒ``loff_t *ppos``”h]”jÐ)�”}”(hj4Jh]”hŒ loff_t *ppos”…”�”}”(hj6Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj2Jubah}”(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 current position”h]”hŒthe current position”…”�”}”(hjMJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jIJh´MæhjJJubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj.Jubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jIJh´Mæhj¹Iubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj�IubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjoJh]”hŒ Description”…”�”}”(hjqJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjmJubah}”(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().”…”�”}”(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žhjVh²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ýhjVh²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”…”�”}”(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_rcu”sbŒc.seq_hlist_start_rcu”†”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Œ*”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj°Jh²hh³jÁJh´MøubjC)�”}”(hŒseq_hlist_start_rcu”h]”jI)�”}”(hjñJh]”hŒseq_hlist_start_rcu”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjKubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj°Jh²hh³jÁJh´Møubj=)�”}”(hŒ%(struct hlist_head *head, loff_t pos)”h]”(jC)�”}”(hŒstruct hlist_head *head”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj.Kh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj*Kubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;Kh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj*Kubh)�”}”(hhh]”jI)�”}”(hŒ hlist_head”h]”hŒ hlist_head”…”�”}”(hjLKh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjIKubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jNKŒmodname”NŒ classname”Njj )�”}”j ]”jïJŒc.seq_hlist_start_rcu”†”asbuh1hhj*Kubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjjKh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj*Kubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjxKh²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Œ 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_rcu”†”asbuh1hhjšKubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿Kh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjšKubjI)�”}”(hŒpos”h]”hŒpos”…”�”}”(hjÍKh²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 hlist protected by RCU”h]”hŒ.start an iteration of a hlist protected by RCU”…”�”}”(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´MøhjôKh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj©Jh²hh³jÁJh´Møubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jLjšjLj›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(hjLh]”hŒ Parameters”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjLubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MühjLubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ2``struct hlist_head *head`` the head of the hlist ”h]”(jÊ)�”}”(hŒ``struct hlist_head *head``”h]”jÐ)�”}”(hj8Lh]”hŒstruct hlist_head *head”…”�”}”(hj:Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj6Lubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´Mùhj2Lubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe head of the hlist”h]”hŒthe head of the hlist”…”�”}”(hjQLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jMLh´MùhjNLubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj2Lubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jMLh´Mùhj/LubjÄ)�”}”(hŒ2``loff_t pos`` the start position of the sequence ”h]”(jÊ)�”}”(hŒ``loff_t pos``”h]”jÐ)�”}”(hjqLh]”hŒ loff_t pos”…”�”}”(hjsLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjoLubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MúhjkLubjæ)�”}”(hhh]”hÌ)�”}”(hŒ"the start position of the sequence”h]”hŒ"the start position of the sequence”…”�”}”(hjŠLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j†Lh´Múhj‡Lubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjkLubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j†Lh´Múhj/Lubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjLubhÌ)�”}”(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:65: ./fs/seq_file.c”h´MühjLubhÌ)�”}”(hŒ Called at seq_file->op->start().”h]”hŒ Called at seq_file->op->start().”…”�”}”(hjÂLh²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ûhjLubhÌ)�”}”(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ÑLh²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ýhjLubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²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ýhjVh²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”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjüLh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjüLh²hh³j Mh´Mubh)�”}”(hhh]”jI)�”}”(hŒ hlist_node”h]”hŒ hlist_node”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjMubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j!MŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒseq_hlist_start_head_rcu”sbŒc.seq_hlist_start_head_rcu”†”asbuh1hhjüLh²hh³j Mh´Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@Mh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjüLh²hh³j Mh´Mubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjNMh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjüLh²hh³j Mh´MubjC)�”}”(hŒseq_hlist_start_head_rcu”h]”jI)�”}”(hj=Mh]”hŒseq_hlist_start_head_rcu”…”�”}”(hj_Mh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj[Mubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjüLh²hh³j Mh´Mubj=)�”}”(hŒ%(struct hlist_head *head, loff_t pos)”h]”(jC)�”}”(hŒstruct hlist_head *head”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjzMh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjvMubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡Mh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjvMubh)�”}”(hhh]”jI)�”}”(hŒ hlist_head”h]”hŒ hlist_head”…”�”}”(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.seq_hlist_start_head_rcu”†”asbuh1hhjvMubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶Mh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjvMubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjÄMh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjvMubjI)�”}”(hŒhead”h]”hŒhead”…”�”}”(hjÑMh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjvMubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjrMubjC)�”}”(hŒ loff_t pos”h]”(h)�”}”(hhh]”jI)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(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.seq_hlist_start_head_rcu”†”asbuh1hhjæMubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Nh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjæMubjI)�”}”(hŒpos”h]”hŒpos”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjæMubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjrMubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjüLh²hh³j Mh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjøLh²hh³j Mh´Mubah}”(h]”jóLah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j Mh´MhjõLh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ.start an iteration of a hlist protected by RCU”h]”hŒ.start an iteration of a hlist protected by RCU”…”�”}”(hjCNh²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@Nh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjõLh²hh³j Mh´Mubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j[Njšj[Nj›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(hjeNh]”hŒ Parameters”…”�”}”(hjgNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjcNubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´Mhj_Nubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ2``struct hlist_head *head`` the head of the hlist ”h]”(jÊ)�”}”(hŒ``struct hlist_head *head``”h]”jÐ)�”}”(hj„Nh]”hŒstruct hlist_head *head”…”�”}”(hj†Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj‚Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´Mhj~Nubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe head of the hlist”h]”hŒthe head of the hlist”…”�”}”(hj�Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j™Nh´MhjšNubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj~Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j™Nh´Mhj{NubjÄ)�”}”(hŒ2``loff_t pos`` the start position of the sequence ”h]”(jÊ)�”}”(hŒ``loff_t pos``”h]”jÐ)�”}”(hj½Nh]”hŒ loff_t pos”…”�”}”(hj¿Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj»Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´Mhj·Nubjæ)�”}”(hhh]”hÌ)�”}”(hŒ"the start position of the sequence”h]”hŒ"the start position of the sequence”…”�”}”(hjÖNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÒNh´MhjÓNubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj·Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÒNh´Mhj{Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj_NubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjøNh]”hŒ Description”…”�”}”(hjúNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjö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_NubhÌ)�”}”(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.”…”�”}”(hjOh²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_NubhÌ)�”}”(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().”…”�”}”(hjOh²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_Nubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²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ýhjVh²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”…”�”}”(hjLOh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjHOh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´M%ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZOh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjHOh²hh³jYOh´M%ubh)�”}”(hhh]”jI)�”}”(hŒ hlist_node”h]”hŒ hlist_node”…”�”}”(hjkOh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjhOubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jmOŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒseq_hlist_next_rcu”sbŒc.seq_hlist_next_rcu”†”asbuh1hhjHOh²hh³jYOh´M%ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒOh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjHOh²hh³jYOh´M%ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjšOh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjHOh²hh³jYOh´M%ubjC)�”}”(hŒseq_hlist_next_rcu”h]”jI)�”}”(hj‰Oh]”hŒseq_hlist_next_rcu”…”�”}”(hj«Oh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj§Oubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjHOh²hh³jYOh´M%ubj=)�”}”(hŒ0(void *v, struct hlist_head *head, loff_t *ppos)”h]”(jC)�”}”(hŒvoid *v”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÆOh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÂ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)�”}”(hj”Hh]”hŒv”…”�”}”(hjïOh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÂOubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¾OubjC)�”}”(hŒstruct hlist_head *head”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjPubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjPubh)�”}”(hhh]”jI)�”}”(hŒ hlist_head”h]”hŒ hlist_head”…”�”}”(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‡OŒc.seq_hlist_next_rcu”†”asbuh1hhjPubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCPh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjPubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjQPh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjPubjI)�”}”(hŒhead”h]”hŒhead”…”�”}”(hj^Ph²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjPubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¾OubjC)�”}”(hŒ loff_t *ppos”h]”(h)�”}”(hhh]”jI)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hjzPh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjwPubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j|PŒmodname”NŒ classname”Njj )�”}”j ]”j‡OŒc.seq_hlist_next_rcu”†”asbuh1hhjsPubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜Ph²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjsPubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj¦Ph²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjsPubjI)�”}”(hŒppos”h]”hŒppos”…”�”}”(hj³Ph²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjsPubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¾Oubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjHOh²hh³jYOh´M%ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjDOh²hh³jYOh´M%ubah}”(h]”j?Oah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jYOh´M%hjAOh²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”…”�”}”(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ÚPh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjAOh²hh³jYOh´M%ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jõPjšjõPj›‰jœ‰j�‰uh1jh²hhjVh³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ÿPh]”hŒ Parameters”…”�”}”(hjQh²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ùPubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ!``void *v`` the current iterator ”h]”(jÊ)�”}”(hŒ ``void *v``”h]”jÐ)�”}”(hjQh]”hŒvoid *v”…”�”}”(hj Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjQubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´M&hjQubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe current iterator”h]”hŒthe current iterator”…”�”}”(hj7Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j3Qh´M&hj4Qubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjQubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j3Qh´M&hjQubjÄ)�”}”(hŒ2``struct hlist_head *head`` the head of the hlist ”h]”(jÊ)�”}”(hŒ``struct hlist_head *head``”h]”jÐ)�”}”(hjWQh]”hŒstruct hlist_head *head”…”�”}”(hjYQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjUQubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´M'hjQQubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe head of the hlist”h]”hŒthe head of the hlist”…”�”}”(hjpQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jlQh´M'hjmQubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjQQubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jlQh´M'hjQubjÄ)�”}”(hŒ&``loff_t *ppos`` the current position ”h]”(jÊ)�”}”(hŒ``loff_t *ppos``”h]”jÐ)�”}”(hj�Qh]”hŒ loff_t *ppos”…”�”}”(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´M(hjŠQubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe current position”h]”hŒthe current position”…”�”}”(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(hjQubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjùPubhÌ)�”}”(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´M*hjùPubhÌ)�”}”(hŒCalled at seq_file->op->next().”h]”hŒCalled at seq_file->op->next().”…”�”}”(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´M)hjùPubhÌ)�”}”(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ð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´M+hjùPubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²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ýhjVh²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”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjRh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´M?ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-Rh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjRh²hh³j,Rh´M?ubh)�”}”(hhh]”jI)�”}”(hŒ hlist_node”h]”hŒ hlist_node”…”�”}”(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Œseq_hlist_start_percpu”sbŒc.seq_hlist_start_percpu”†”asbuh1hhjRh²hh³j,Rh´M?ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_Rh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjRh²hh³j,Rh´M?ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjmRh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjRh²hh³j,Rh´M?ubjC)�”}”(hŒseq_hlist_start_percpu”h]”jI)�”}”(hj\Rh]”hŒseq_hlist_start_percpu”…”�”}”(hj~Rh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjzRubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjRh²hh³j,Rh´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™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Œ hlist_head”h]”hŒ hlist_head”…”�”}”(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 ]”jZRŒc.seq_hlist_start_percpu”†”asbuh1hhj•Rubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕRh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj•RubhŒ__percpu”…”�”}”(hj•Rh²hh³Nh´Nubj2)�”}”(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Œhead”h]”hŒhead”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj•Rubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj‘RubjC)�”}”(hŒint *cpu”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjSubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)Sh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjSubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj7Sh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjSubjI)�”}”(hŒcpu”h]”hŒcpu”…”�”}”(hjDSh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjSubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj‘RubjC)�”}”(hŒ loff_t pos”h]”(h)�”}”(hhh]”jI)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hj`Sh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj]Subah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jbSŒmodname”NŒ classname”Njj )�”}”j ]”jZRŒc.seq_hlist_start_percpu”†”asbuh1hhjYSubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~Sh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjYSubjI)�”}”(hŒpos”h]”hŒpos”…”�”}”(hjŒSh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjYSubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj‘Rubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjRh²hh³j,Rh´M?ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjRh²hh³j,Rh´M?ubah}”(h]”jRah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j,Rh´M?hjRh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ*start an iteration of a percpu hlist array”h]”hŒ*start an iteration of a percpu hlist array”…”�”}”(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³j,Rh´M?ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÎSjšjÎSj›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(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´MChjÒSubj¿)�”}”(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÷Sh]”hŒ struct hlist_head __percpu *head”…”�”}”(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Œ-pointer to percpu array of struct hlist_heads”h]”hŒ-pointer to percpu array of struct hlist_heads”…”�”}”(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Œ%``int *cpu`` pointer to cpu "cursor" ”h]”(jÊ)�”}”(hŒ ``int *cpu``”h]”jÐ)�”}”(hj0Th]”hŒint *cpu”…”�”}”(hj2Th²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´MAhj*Tubjæ)�”}”(hhh]”hÌ)�”}”(hŒpointer to cpu "cursor"”h]”hŒpointer to cpu “cursorâ€�”…”�”}”(hjITh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jETh´MAhjFTubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj*Tubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jETh´MAhjîSubjÄ)�”}”(hŒ*``loff_t pos`` start position of sequence ”h]”(jÊ)�”}”(hŒ``loff_t pos``”h]”jÐ)�”}”(hjiTh]”hŒ loff_t pos”…”�”}”(hjkTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjgTubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MBhjcTubjæ)�”}”(hhh]”hÌ)�”}”(hŒstart position of sequence”h]”hŒstart position of sequence”…”�”}”(hj‚Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j~Th´MBhjTubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjcTubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j~Th´MBhjî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´MDhjÒSubhÌ)�”}”(hŒ Called at seq_file->op->start().”h]”hŒ Called at seq_file->op->start().”…”�”}”(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´MChjÒSubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²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ýhjVh²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”…”�”}”(hjéTh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjåTh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MVubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷Th²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjåTh²hh³jöTh´MVubh)�”}”(hhh]”jI)�”}”(hŒ hlist_node”h]”hŒ hlist_node”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjUubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j UŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒseq_hlist_next_percpu”sbŒc.seq_hlist_next_percpu”†”asbuh1hhjåTh²hh³jöTh´MVubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)Uh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjåTh²hh³jöTh´MVubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj7Uh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjåTh²hh³jöTh´MVubjC)�”}”(hŒseq_hlist_next_percpu”h]”jI)�”}”(hj&Uh]”hŒseq_hlist_next_percpu”…”�”}”(hjHUh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjDUubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjåTh²hh³jöTh´MVubj=)�”}”(hŒB(void *v, struct hlist_head __percpu *head, int *cpu, loff_t *pos)”h]”(jC)�”}”(hŒvoid *v”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjcUh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj_Uubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqUh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj_Uubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj_UubjI)�”}”(hj”Hh]”hŒv”…”�”}”(hjŒUh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj_Uubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj[UubjC)�”}”(hŒ struct hlist_head __percpu *head”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Œ hlist_head”h]”hŒ hlist_head”…”�”}”(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_hlist_next_percpu”†”asbuh1hhj Uubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjàUh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj UubhŒ__percpu”…”�”}”(hj Uh²hh³Nh´Nubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjòUh²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Œhead”h]”hŒhead”…”�”}”(hj Vh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj Uubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj[UubjC)�”}”(hŒint *cpu”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj&Vh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj"Vubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4Vh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj"Vubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjBVh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj"VubjI)�”}”(hŒcpu”h]”hŒcpu”…”�”}”(hjOVh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj"Vubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj[UubjC)�”}”(hŒ loff_t *pos”h]”(h)�”}”(hhh]”jI)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hjkVh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjhVubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jmVŒmodname”NŒ classname”Njj )�”}”j ]”j$UŒc.seq_hlist_next_percpu”†”asbuh1hhjdVubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰Vh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjdVubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj—Vh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjdVubjI)�”}”(hŒpos”h]”hŒpos”…”�”}”(hj¤Vh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjdVubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj[Uubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjåTh²hh³jöTh´MVubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjáTh²hh³jöTh´MVubah}”(h]”jÜTah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jöTh´MVhjÞTh²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ÎVh²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ËVh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÞTh²hh³jöTh´MVubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jæVjšjæVj›‰jœ‰j�‰uh1jh²hhjVh³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ð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´MZhjêVubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ*``void *v`` pointer to current hlist_node ”h]”(jÊ)�”}”(hŒ ``void *v``”h]”jÐ)�”}”(hjWh]”hŒvoid *v”…”�”}”(hjWh²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´MWhj Wubjæ)�”}”(hhh]”hÌ)�”}”(hŒpointer to current hlist_node”h]”hŒpointer to current hlist_node”…”�”}”(hj(Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j$Wh´MWhj%Wubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj Wubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j$Wh´MWhjWubjÄ)�”}”(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Ð)�”}”(hjHWh]”hŒ struct hlist_head __percpu *head”…”�”}”(hjJWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjFWubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MXhjBWubjæ)�”}”(hhh]”hÌ)�”}”(hŒ-pointer to percpu array of struct hlist_heads”h]”hŒ-pointer to percpu array of struct hlist_heads”…”�”}”(hjaWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j]Wh´MXhj^Wubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjBWubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j]Wh´MXhjWubjÄ)�”}”(hŒ%``int *cpu`` pointer to cpu "cursor" ”h]”(jÊ)�”}”(hŒ ``int *cpu``”h]”jÐ)�”}”(hj�Wh]”hŒint *cpu”…”�”}”(hjƒWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjWubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´MYhj{Wubjæ)�”}”(hhh]”hÌ)�”}”(hŒpointer to cpu "cursor"”h]”hŒpointer to cpu “cursorâ€�”…”�”}”(hjšWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j–Wh´MYhj—Wubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj{Wubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j–Wh´MYhjWubjÄ)�”}”(hŒ+``loff_t *pos`` start position of sequence ”h]”(jÊ)�”}”(hŒ``loff_t *pos``”h]”jÐ)�”}”(hjºWh]”hŒ loff_t *pos”…”�”}”(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´MZhj´Wubjæ)�”}”(hhh]”hÌ)�”}”(hŒstart position of sequence”h]”hŒstart position of sequence”…”�”}”(hjÓWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÏWh´MZhjÐWubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj´Wubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÏWh´MZhjWubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjêVubhÌ)�”}”(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³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:65: ./fs/seq_file.c”h´M\hjêVubhÌ)�”}”(hŒCalled at seq_file->op->next().”h]”hŒCalled at seq_file->op->next().”…”�”}”(hj Xh²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êVubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ register_filesystem (C function)”Œc.register_filesystem”hNt”auh1hýhjVh²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj:Xh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj6Xh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:68: ./fs/filesystems.c”h´KXubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIXh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj6Xh²hh³jHXh´KXubjC)�”}”(hŒregister_filesystem”h]”jI)�”}”(hŒregister_filesystem”h]”hŒregister_filesystem”…”�”}”(hj[Xh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjWXubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj6Xh²hh³jHXh´KXubj=)�”}”(hŒ(struct file_system_type *fs)”h]”jC)�”}”(hŒstruct file_system_type *fs”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjwXh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjsXubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„Xh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjsXubh)�”}”(hhh]”jI)�”}”(hŒfile_system_type”h]”hŒfile_system_type”…”�”}”(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.register_filesystem”†”asbuh1hhjsXubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµXh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjsXubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjÃXh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjsXubjI)�”}”(hŒfs”h]”hŒfs”…”�”}”(hjÐXh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjsXubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjoXubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj6Xh²hh³jHXh´KXubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj2Xh²hh³jHXh´KXubah}”(h]”j-Xah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jHXh´KXhj/Xh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒregister a new filesystem”h]”hŒregister a new filesystem”…”�”}”(hjúXh²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÷Xh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj/Xh²hh³jHXh´KXubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jYjšjYj›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(hjYh]”hŒ Parameters”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjYubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:68: ./fs/filesystems.c”h´K\hjYubj¿)�”}”(hhh]”jÄ)�”}”(hŒ:``struct file_system_type *fs`` the file system structure ”h]”(jÊ)�”}”(hŒ``struct file_system_type *fs``”h]”jÐ)�”}”(hj;Yh]”hŒstruct file_system_type *fs”…”�”}”(hj=Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj9Yubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:68: ./fs/filesystems.c”h´KYhj5Yubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe file system structure”h]”hŒthe file system structure”…”�”}”(hjTYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jPYh´KYhjQYubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj5Yubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jPYh´KYhj2Yubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjYubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjvYh]”hŒ Description”…”�”}”(hjxYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjtYubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:68: ./fs/filesystems.c”h´K[hjYubj��)�”}”(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�Yh²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´KZhjŒYubhÌ)�”}”(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 ”…”�”}”(hjŸYh²hh³Nh´Nubh)�”}”(hŒ4:c:type:`struct file_system_type `”h]”jÐ)�”}”(hj©Yh]”hŒstruct file_system_type”…”�”}”(hj«Yh²hh³Nh´Nubah}”(h]”h ]”(j› j“Œc-type”eh"]”h$]”h&]”uh1jÏhj§Yubah}”(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ŸYubhŒw that is passed is linked into the kernel structures and must not be freed until the file system has been unregistered.”…”�”}”(hjŸYh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÆYh´K^hjŒYubeh}”(h]”h ]”h"]”h$]”h&]”uh1jœ�h³jžYh´KZhjYubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ"unregister_filesystem (C function)”Œc.unregister_filesystem”hNt”auh1hýhjVh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ7int unregister_filesystem (struct file_system_type *fs)”h]”j)�”}”(hŒ6int unregister_filesystem(struct file_system_type *fs)”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj÷Yh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjóYh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:68: ./fs/filesystems.c”h´Kwubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjóYh²hh³jZh´KwubjC)�”}”(hŒunregister_filesystem”h]”jI)�”}”(hŒunregister_filesystem”h]”hŒunregister_filesystem”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjZubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjóYh²hh³jZh´Kwubj=)�”}”(hŒ(struct file_system_type *fs)”h]”jC)�”}”(hŒstruct file_system_type *fs”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj4Zh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj0Zubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjAZh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj0Zubh)�”}”(hhh]”jI)�”}”(hŒfile_system_type”h]”hŒfile_system_type”…”�”}”(hjRZh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjOZubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jTZŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjZsbŒc.unregister_filesystem”†”asbuh1hhj0Zubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrZh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj0Zubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj€Zh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj0ZubjI)�”}”(hŒfs”h]”hŒfs”…”�”}”(hj�Zh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj0Zubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj,Zubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjóYh²hh³jZh´Kwubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjïYh²hh³jZh´Kwubah}”(h]”jêYah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jZh´KwhjìYh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒunregister a file system”h]”hŒunregister a file system”…”�”}”(hj·Zh²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´Kwhj´Zh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjìYh²hh³jZh´Kwubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÏZjšjÏZj›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(hjÙZh]”hŒ Parameters”…”�”}”(hjÛZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj×Zubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:68: ./fs/filesystems.c”h´K{hjÓZubj¿)�”}”(hhh]”jÄ)�”}”(hŒ9``struct file_system_type *fs`` filesystem to unregister ”h]”(jÊ)�”}”(hŒ``struct file_system_type *fs``”h]”jÐ)�”}”(hjøZh]”hŒstruct file_system_type *fs”…”�”}”(hjúZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjöZubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:68: ./fs/filesystems.c”h´KxhjòZubjæ)�”}”(hhh]”hÌ)�”}”(hŒfilesystem to unregister”h]”hŒfilesystem to unregister”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”•h"]”h$]”h&]”uh1hËh³j [h´Kxhj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjòZubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j [h´KxhjïZubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÓZubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj3[h]”hŒ Description”…”�”}”(hj5[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj1[ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:68: ./fs/filesystems.c”h´KzhjÓZubj��)�”}”(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.”…”�”}”(hjM[h²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´KyhjI[ubhÌ)�”}”(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\[h²hh³Nh´Nubh)�”}”(hŒ4:c:type:`struct file_system_type `”h]”jÐ)�”}”(hjf[h]”hŒstruct file_system_type”…”�”}”(hjh[h²hh³Nh´Nubah}”(h]”h ]”(j› j“Œc-type”eh"]”h$]”h&]”uh1jÏhjd[ubah}”(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\[ubhŒ" structure may be freed or reused.”…”�”}”(hj\[h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jƒ[h´K}hjI[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jœ�h³j[[h´KyhjÓZubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²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ýhjVh²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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj´[h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj°[h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´Maubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃ[h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj°[h²hh³jÂ[h´MaubjC)�”}”(hŒwbc_attach_fdatawrite_inode”h]”jI)�”}”(hŒwbc_attach_fdatawrite_inode”h]”hŒwbc_attach_fdatawrite_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´Maubj=)�”}”(hŒ4(struct writeback_control *wbc, struct inode *inode)”h]”(jC)�”}”(hŒstruct writeback_control *wbc”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Œwriteback_control”h]”hŒwriteback_control”…”�”}”(hj\h²hh³Nh´Nubah}”(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.wbc_attach_fdatawrite_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Œwbc”h]”hŒwbc”…”�”}”(hjJ\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”…”�”}”(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Œ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.wbc_attach_fdatawrite_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é[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Œ&associate wbc and inode for fdatawrite”h]”hŒ&associate wbc and inode for fdatawrite”…”�”}”(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´Mahjá\h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj©[h²hh³jÂ[h´Maubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jü\jšjü\j›‰jœ‰j�‰uh1jh²hhjVh³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]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´Mehj]ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ@``struct writeback_control *wbc`` writeback_control of interest ”h]”(jÊ)�”}”(hŒ!``struct writeback_control *wbc``”h]”jÐ)�”}”(hj%]h]”hŒstruct writeback_control *wbc”…”�”}”(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´Mbhj]ubjæ)�”}”(hhh]”hÌ)�”}”(hŒwriteback_control of interest”h]”hŒwriteback_control of interest”…”�”}”(hj>]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j:]h´Mbhj;]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j:]h´Mbhj]ubjÄ)�”}”(hŒ%``struct inode *inode`` target 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³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´MchjX]ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ target inode”h]”hŒ target inode”…”�”}”(hjw]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³js]h´Mchjt]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjX]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³js]h´Mchj]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´Mehj]ubhÌ)�”}”(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¯]h²hh³Nh´Nubj©)�”}”(hŒ **inode**”h]”hŒinode”…”�”}”(hj·]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¯]ubhŒ7 is associated with a bdi_writeback and attaches it to ”…”�”}”(hj¯]h²hh³Nh´Nubj©)�”}”(hŒ**wbc**”h]”hŒwbc”…”�”}”(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³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´Mdhj]ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œwbc_detach_inode (C function)”Œc.wbc_detach_inode”hNt”auh1hýhjVh²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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjþ]h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´Msubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjþ]h²hh³j^h´MsubjC)�”}”(hŒwbc_detach_inode”h]”jI)�”}”(hŒwbc_detach_inode”h]”hŒwbc_detach_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´Msubj=)�”}”(hŒ(struct writeback_control *wbc)”h]”jC)�”}”(hŒstruct writeback_control *wbc”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Œwriteback_control”h]”hŒwriteback_control”…”�”}”(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.wbc_detach_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Œwbc”h]”hŒwbc”…”�”}”(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´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Œ9disassociate wbc from inode and perform foreign detection”h]”hŒ9disassociate wbc from inode and perform foreign detection”…”�”}”(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´Mshj¿^h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj÷]h²hh³j^h´Msubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÚ^jšjÚ^j›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(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´MwhjÞ^ubj¿)�”}”(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_h]”hŒstruct writeback_control *wbc”…”�”}”(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´Mthjý^ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ0writeback_control of the just finished writeback”h]”hŒ0writeback_control of the just finished writeback”…”�”}”(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ú^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´MvhjÞ^ubhÌ)�”}”(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.”…”�”}”(hjT_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´MuhjÞ^ubhÌ)�”}”(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).”…”�”}”(hjc_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´MxhjÞ^ubhÌ)�”}”(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.”…”�”}”(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‚hjÞ^ubhÌ)�”}”(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, ”…”�”}”(hj�_h²hh³Nh´Nubj©)�”}”(hŒ**wbc**”h]”hŒwbc”…”�”}”(hj‰_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj�_ubhXã 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.”…”�”}”(hj�_h²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Þ^ubhÌ)�”}”(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.”…”�”}”(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žhjVh²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ýhjVh²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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÑ_h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÍ_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Œwbc_account_cgroup_owner”h]”jI)�”}”(hŒwbc_account_cgroup_owner”h]”hŒwbc_account_cgroup_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Œ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`h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj `ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj `ubh)�”}”(hhh]”jI)�”}”(hŒwriteback_control”h]”hŒwriteback_control”…”�”}”(hj,`h²hh³Nh´Nubah}”(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.wbc_account_cgroup_owner”†”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Œwbc”h]”hŒwbc”…”�”}”(hjg`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 ]”jH`Œc.wbc_account_cgroup_owner”†”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`jauh1jBhj`ubjC)�”}”(hŒ size_t bytes”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 ]”jH`Œc.wbc_account_cgroup_owner”†”asbuh1hhjì`ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjì`ubjI)�”}”(hŒbytes”h]”hŒbytes”…”�”}”(hjah²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Œ2account writeback to update inode cgroup ownership”h]”hŒ2account writeback to update inode cgroup ownership”…”�”}”(hjIah²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îhjFah²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÆ_h²hh³jß_h´Mîubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jaajšjaaj›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(hjkah]”hŒ Parameters”…”�”}”(hjmah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjiaubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´Mòhjeaubj¿)�”}”(hhh]”(jÄ)�”}”(hŒQ``struct writeback_control *wbc`` writeback_control of the writeback in progress ”h]”(jÊ)�”}”(hŒ!``struct writeback_control *wbc``”h]”jÐ)�”}”(hjŠah]”hŒstruct writeback_control *wbc”…”�”}”(hjŒah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjˆaubah}”(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„aubjæ)�”}”(hhh]”hÌ)�”}”(hŒ.writeback_control of the writeback in progress”h]”hŒ.writeback_control of the writeback in progress”…”�”}”(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ïhj�aubjÄ)�”}”(hŒ0``struct folio *folio`` folio being written out ”h]”(jÊ)�”}”(hŒ``struct folio *folio``”h]”jÐ)�”}”(hjÃah]”hŒstruct folio *folio”…”�”}”(hjÅah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÁaubah}”(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½aubjæ)�”}”(hhh]”hÌ)�”}”(hŒfolio being written out”h]”hŒfolio being written out”…”�”}”(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ðhj�aubjÄ)�”}”(hŒ3``size_t bytes`` number of bytes being written out ”h]”(jÊ)�”}”(hŒ``size_t bytes``”h]”jÐ)�”}”(hjüah]”hŒ size_t bytes”…”�”}”(hjþah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjúaubah}”(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öaubjæ)�”}”(hhh]”hÌ)�”}”(hŒ!number of bytes being written out”h]”hŒ!number of bytes being written out”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jbh´Mñhjbubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjöaubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jbh´Mñhj�aubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjeaubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj7bh]”hŒ Description”…”�”}”(hj9bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj5bubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´MóhjeaubhÌ)�”}”(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”…”�”}”(hjQbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjMbubhŒ from ”…”�”}”(hjMbh²hh³Nh´Nubj©)�”}”(hŒ **folio**”h]”hŒfolio”…”�”}”(hjcbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjMbubhŒ= are about to written out during the writeback controlled by ”…”�”}”(hjMbh²hh³Nh´Nubj©)�”}”(hŒ**wbc**”h]”hŒwbc”…”�”}”(hjubh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjMbubhŒF. Keep the book for foreign inode detection. See wbc_detach_inode().”…”�”}”(hjMbh²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òhjeaubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²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ýhjVh²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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj®bh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjªbh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´Mü ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½bh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjªbh²hh³j¼bh´Mü ubjC)�”}”(hŒ filemap_dontcache_kick_writeback”h]”jI)�”}”(hŒ filemap_dontcache_kick_writeback”h]”hŒ filemap_dontcache_kick_writeback”…”�”}”(hjÏbh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjËbubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjªbh²hh³j¼bh´Mü ubj=)�”}”(hŒ(struct address_space *mapping)”h]”jC)�”}”(hŒstruct address_space *mapping”h]”(j )�”}”(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Œ address_space”h]”hŒ address_space”…”�”}”(hj ch²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjcubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j cŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjÑbsbŒ"c.filemap_dontcache_kick_writeback”†”asbuh1hhjçbubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)ch²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjçbubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj7ch²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjçbubjI)�”}”(hŒmapping”h]”hŒmapping”…”�”}”(hjDch²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjçbubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjãbubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjªbh²hh³j¼bh´Mü ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj¦bh²hh³j¼bh´Mü ubah}”(h]”j¡bah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j¼bh´Mü hj£bh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ&kick flusher for IOCB_DONTCACHE writes”h]”hŒ&kick flusher for IOCB_DONTCACHE writes”…”�”}”(hjnch²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ü hjkch²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj£bh²hh³j¼bh´Mü ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j†cjšj†cj›‰jœ‰j�‰uh1jh²hhjVh³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�ch]”hŒ Parameters”…”�”}”(hj’ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjŽcubah}”(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Šcubj¿)�”}”(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¯ch]”hŒstruct address_space *mapping”…”�”}”(hj±ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj­cubah}”(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©cubjæ)�”}”(hhh]”hÌ)�”}”(hŒ&address_space that was just written to”h]”hŒ&address_space that was just written to”…”�”}”(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¦cubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjŠcubhÌ)�”}”(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³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´Mÿ hjŠcubhÌ)�”}”(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.”…”�”}”(hjdh²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ŠcubhÌ)�”}”(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.”…”�”}”(hjdh²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Šcubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ__mark_inode_dirty (C function)”Œc.__mark_inode_dirty”hNt”auh1hýhjVh²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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj>dh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj:dh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M{ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjMdh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj:dh²hh³jLdh´M{ ubjC)�”}”(hŒ__mark_inode_dirty”h]”jI)�”}”(hŒ__mark_inode_dirty”h]”hŒ__mark_inode_dirty”…”�”}”(hj_dh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj[dubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj:dh²hh³jLdh´M{ ubj=)�”}”(hŒ (struct inode *inode, int flags)”h]”(jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj{dh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjwdubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆdh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjwdubh)�”}”(hhh]”jI)�”}”(hŒinode”h]”hŒinode”…”�”}”(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)�”}”jjadsbŒc.__mark_inode_dirty”†”asbuh1hhjwdubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹dh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjwdubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjÇdh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjwdubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjÔdh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjwdubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjsdubjC)�”}”(hŒ int flags”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjídh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjédubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjûdh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjédubjI)�”}”(hŒflags”h]”hŒflags”…”�”}”(hj eh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjédubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjsdubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj:dh²hh³jLdh´M{ ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj6dh²hh³jLdh´M{ ubah}”(h]”j1dah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jLdh´M{ hj3dh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ(internal function to mark an inode dirty”h]”hŒ(internal function to mark an inode dirty”…”�”}”(hj3eh²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{ hj0eh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj3dh²hh³jLdh´M{ ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jKejšjKej›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(hjUeh]”hŒ Parameters”…”�”}”(hjWeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjSeubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M hjOeubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ&``struct inode *inode`` inode to mark ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hjteh]”hŒstruct inode *inode”…”�”}”(hjveh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjreubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M} hjneubjæ)�”}”(hhh]”hÌ)�”}”(hŒ inode to mark”h]”hŒ inode to mark”…”�”}”(hj�eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‰eh´M} hjŠeubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjneubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j‰eh´M} hjkeubjÄ)�”}”(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­eh]”hŒ int flags”…”�”}”(hj¯eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj«eubah}”(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§eubjæ)�”}”(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.”…”�”}”(hjÆeh²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Ãeubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj§eubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÂeh´M€ hjkeubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjOeubhÌ)�”}”(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³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M‚ hjOeubhÌ)�”}”(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ÿeh²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� hjOeubhÌ)�”}”(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.”…”�”}”(hjfh²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„ hjOeubhÌ)�”}”(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.”…”�”}”(hjfh²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‡ hjOeubhÌ)�”}”(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,fh²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‹ hjOeubhÌ)�”}”(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;fh²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� hjOeubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²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ýhjVh²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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjjfh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjffh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´Mœ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyfh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjffh²hh³jxfh´Mœ ubjC)�”}”(hŒwriteback_inodes_sb_nr”h]”jI)�”}”(hŒwriteback_inodes_sb_nr”h]”hŒwriteback_inodes_sb_nr”…”�”}”(hj‹fh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‡fubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjffh²hh³jxfh´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”…”�”}”(hj§fh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj£fubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´fh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj£fubh)�”}”(hhh]”jI)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(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)�”}”jj�fsbŒc.writeback_inodes_sb_nr”†”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Œsb”h]”hŒsb”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj£fubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjŸfubjC)�”}”(hŒunsigned long nr”h]”(jf)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjgubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'gh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjgubjf)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj5gh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjgubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCgh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjgubjI)�”}”(hŒnr”h]”hŒnr”…”�”}”(hjQgh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjgubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjŸfubjC)�”}”(hŒenum wb_reason reason”h]”(j )�”}”(hj#h]”hŒenum”…”�”}”(hjjgh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjfgubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwgh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjfgubh)�”}”(hhh]”jI)�”}”(hŒ wb_reason”h]”hŒ wb_reason”…”�”}”(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áfŒc.writeback_inodes_sb_nr”†”asbuh1hhjfgubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦gh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjfgubjI)�”}”(hŒreason”h]”hŒreason”…”�”}”(hj´gh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjfgubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjŸfubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjffh²hh³jxfh´Mœ ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjbfh²hh³jxfh´Mœ ubah}”(h]”j]fah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jxfh´Mœ hj_fh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ-writeback dirty inodes from given super_block”h]”hŒ-writeback dirty inodes from given super_block”…”�”}”(hjÞgh²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Ûgh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj_fh²hh³jxfh´Mœ ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jögjšjögj›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(hjhh]”hŒ Parameters”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjþgubah}”(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úgubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ*``struct super_block *sb`` the superblock ”h]”(jÊ)�”}”(hŒ``struct super_block *sb``”h]”jÐ)�”}”(hjhh]”hŒstruct super_block *sb”…”�”}”(hj!hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjhubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M� hjhubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe superblock”h]”hŒthe superblock”…”�”}”(hj8hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j4hh´M� hj5hubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjhubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j4hh´M� hjhubjÄ)�”}”(hŒ2``unsigned long nr`` the number of pages to write ”h]”(jÊ)�”}”(hŒ``unsigned long nr``”h]”jÐ)�”}”(hjXhh]”hŒunsigned long nr”…”�”}”(hjZhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjVhubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´Mž hjRhubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe number of pages to write”h]”hŒthe number of pages to write”…”�”}”(hjqhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jmhh´Mž hjnhubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjRhubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jmhh´Mž hjhubjÄ)�”}”(hŒC``enum wb_reason reason`` reason why some writeback work initiated ”h]”(jÊ)�”}”(hŒ``enum wb_reason reason``”h]”jÐ)�”}”(hj‘hh]”hŒenum wb_reason reason”…”�”}”(hj“hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj�hubah}”(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‹hubjæ)�”}”(hhh]”hÌ)�”}”(hŒ(reason why some writeback work initiated”h]”hŒ(reason why some writeback work initiated”…”�”}”(hjªhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¦hh´MŸ hj§hubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj‹hubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¦hh´MŸ hjhubeh}”(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³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M¡ hjúgubhÌ)�”}”(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âhh²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úgubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ writeback_inodes_sb (C function)”Œc.writeback_inodes_sb”hNt”auh1hýhjVh²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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj ih²hh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M® ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ih²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj ih²hh³jih´M® ubjC)�”}”(hŒwriteback_inodes_sb”h]”jI)�”}”(hŒwriteback_inodes_sb”h]”hŒwriteback_inodes_sb”…”�”}”(hj2ih²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj.iubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj ih²hh³jih´M® ubj=)�”}”(hŒ/(struct super_block *sb, enum wb_reason reason)”h]”(jC)�”}”(hŒstruct super_block *sb”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjNih²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjJiubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[ih²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjJiubh)�”}”(hhh]”jI)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(hjlih²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjiiubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jniŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj4isbŒc.writeback_inodes_sb”†”asbuh1hhjJiubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒih²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjJiubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjših²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjJiubjI)�”}”(hŒsb”h]”hŒsb”…”�”}”(hj§ih²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjJiubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjFiubjC)�”}”(hŒenum wb_reason reason”h]”(j )�”}”(hj#h]”hŒenum”…”�”}”(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Œ wb_reason”h]”hŒ wb_reason”…”�”}”(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.writeback_inodes_sb”†”asbuh1hhj¼iubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjüih²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¼iubjI)�”}”(hŒreason”h]”hŒreason”…”�”}”(hj jh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¼iubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjFiubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj ih²hh³jih´M® ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj ih²hh³jih´M® ubah}”(h]”jiah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jih´M® hjih²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ-writeback dirty inodes from given super_block”h]”hŒ-writeback dirty inodes from given super_block”…”�”}”(hj4jh²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® hj1jh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjih²hh³jih´M® ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jLjjšjLjj›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(hjVjh]”hŒ Parameters”…”�”}”(hjXjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjTjubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M² hjPjubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ*``struct super_block *sb`` the superblock ”h]”(jÊ)�”}”(hŒ``struct super_block *sb``”h]”jÐ)�”}”(hjujh]”hŒstruct super_block *sb”…”�”}”(hjwjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjsjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M¯ hjojubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe superblock”h]”hŒthe superblock”…”�”}”(hjŽjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jŠjh´M¯ hj‹jubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjojubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jŠjh´M¯ hjljubjÄ)�”}”(hŒG``enum wb_reason reason`` reason why some writeback work was initiated ”h]”(jÊ)�”}”(hŒ``enum wb_reason reason``”h]”jÐ)�”}”(hj®jh]”hŒenum wb_reason reason”…”�”}”(hj°jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¬jubah}”(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¨jubjæ)�”}”(hhh]”hÌ)�”}”(hŒ,reason why some writeback work was initiated”h]”hŒ,reason why some writeback work was initiated”…”�”}”(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° hjljubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjPjubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjéjh]”hŒ Description”…”�”}”(hjëjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjçjubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M² hjPjubhÌ)�”}”(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ÿjh²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± hjPjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²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ýhjVh²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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj.kh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj*kh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M½ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=kh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj*kh²hh³jah"]”h$]”h&]”uh1j1hjgkubh)�”}”(hhh]”jI)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(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)�”}”jjQksbŒc.try_to_writeback_inodes_sb”†”asbuh1hhjgkubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©kh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjgkubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj·kh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjgkubjI)�”}”(hŒsb”h]”hŒsb”…”�”}”(hjÄkh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjgkubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjckubjC)�”}”(hŒenum wb_reason reason”h]”(j )�”}”(hj#h]”hŒenum”…”�”}”(hjÝkh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÙkubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjêkh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÙkubh)�”}”(hhh]”jI)�”}”(hŒ wb_reason”h]”hŒ wb_reason”…”�”}”(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.try_to_writeback_inodes_sb”†”asbuh1hhjÙkubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÙkubjI)�”}”(hŒreason”h]”hŒreason”…”�”}”(hj'lh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÙkubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjckubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj*kh²hh³jah"]”h$]”h&]”uh1j1hjGmh²hh³jYmh´MÎ ubjC)�”}”(hŒsync_inodes_sb”h]”jI)�”}”(hŒsync_inodes_sb”h]”hŒsync_inodes_sb”…”�”}”(hjlmh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjhmubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjGmh²hh³jYmh´MÎ ubj=)�”}”(hŒ(struct super_block *sb)”h]”jC)�”}”(hŒstruct super_block *sb”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Œ super_block”h]”hŒ super_block”…”�”•Ê}”(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)�”}”jjnmsbŒc.sync_inodes_sb”†”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Œsb”h]”hŒsb”…”�”}”(hjámh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj„mubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj€mubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjGmh²hh³jYmh´MÎ ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjCmh²hh³jYmh´MÎ ubah}”(h]”j>mah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jYmh´MÎ hj@mh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒsync sb inode pages”h]”hŒsync sb inode pages”…”�”}”(hj nh²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Î hjnh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj@mh²hh³jYmh´MÎ ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j#njšj#nj›‰jœ‰j�‰uh1jh²hhjVh³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-nh]”hŒ Parameters”…”�”}”(hj/nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj+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'nubj¿)�”}”(hhh]”jÄ)�”}”(hŒ*``struct super_block *sb`` the superblock ”h]”(jÊ)�”}”(hŒ``struct super_block *sb``”h]”jÐ)�”}”(hjLnh]”hŒstruct super_block *sb”…”�”}”(hjNnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjJnubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´MÏ hjFnubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe superblock”h]”hŒthe superblock”…”�”}”(hjenh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³janh´MÏ hjbnubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjFnubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³janh´MÏ hjCnubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj'nubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj‡nh]”hŒ Description”…”�”}”(hj‰nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj…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'nubhÌ)�”}”(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�nh²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'nubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œwrite_inode_now (C function)”Œc.write_inode_now”hNt”auh1hýhjVh²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjÌnh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÈnh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.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Œwrite_inode_now”h]”jI)�”}”(hŒwrite_inode_now”h]”hŒwrite_inode_now”…”�”}”(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 inode *inode, int sync)”h]”(jC)�”}”(hŒstruct inode *inode”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj oh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjoubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjoubh)�”}”(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 ]”j)�”}”jjïnsbŒc.write_inode_now”†”asbuh1hhjoubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGoh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjoubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjUoh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjoubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjboh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjoubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjoubjC)�”}”(hŒint sync”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj{oh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjwoubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰oh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjwoubjI)�”}”(hŒsync”h]”hŒsync”…”�”}”(hj—oh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjwoubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjoubeh}”(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Œwrite an inode to disk”h]”hŒwrite an inode to disk”…”�”}”(hjÁoh²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¾oh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÁnh²hh³jÚnh´M ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÙojšjÙoj›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(hjãoh]”hŒ Parameters”…”�”}”(hjåoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjáoubah}”(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Ýoubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ/``struct inode *inode`` inode to write to disk ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hjph]”hŒstruct inode *inode”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjpubah}”(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üoubjæ)�”}”(hhh]”hÌ)�”}”(hŒinode to write to disk”h]”hŒinode to write to disk”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jph´M hjpubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjüoubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jph´M hjùoubjÄ)�”}”(hŒ<``int sync`` whether the write should be synchronous or not ”h]”(jÊ)�”}”(hŒ ``int sync``”h]”jÐ)�”}”(hj;ph]”hŒint sync”…”�”}”(hj=ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj9pubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M hj5pubjæ)�”}”(hhh]”hÌ)�”}”(hŒ.whether the write should be synchronous or not”h]”hŒ.whether the write should be synchronous or not”…”�”}”(hjTph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jPph´M hjQpubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj5pubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jPph´M hjùoubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÝoubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjvph]”hŒ Description”…”�”}”(hjxph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjtpubah}”(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ÝoubhÌ)�”}”(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Œph²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ÝoubhÌ)�”}”(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›ph²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Ýoubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ sync_inode_metadata (C function)”Œc.sync_inode_metadata”hNt”auh1hýhjVh²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjÊph²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÆph²hh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙph²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÆph²hh³jØph´M ubjC)�”}”(hŒsync_inode_metadata”h]”jI)�”}”(hŒsync_inode_metadata”h]”hŒsync_inode_metadata”…”�”}”(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´M ubj=)�”}”(hŒ(struct inode *inode, int wait)”h]”(jC)�”}”(hŒstruct inode *inode”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Œinode”h]”hŒinode”…”�”}”(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.sync_inode_metadata”†”asbuh1hhjqubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjEqh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjqubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjSqh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjqubjI)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj`qh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjqubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÿpubjC)�”}”(hŒint wait”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjyqh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjuqubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡qh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjuqubjI)�”}”(hŒwait”h]”hŒwait”…”�”}”(hj•qh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjuqubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÿpubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjÆph²hh³jØph´M ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjÂph²hh³jØph´M ubah}”(h]”j½pah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jØph´M hj¿ph²hubjw)�”}”(hhh]”hÌ)�”}”(hŒwrite an inode to disk”h]”hŒwrite an inode to disk”…”�”}”(hj¿qh²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¼qh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj¿ph²hh³jØph´M ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j×qjšj×qj›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(hjáqh]”hŒ Parameters”…”�”}”(hjãqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjßqubah}”(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Ûqubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ*``struct inode *inode`` the inode to sync ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hjrh]”hŒstruct inode *inode”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjþqubah}”(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úqubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe inode to sync”h]”hŒthe inode to sync”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jrh´M hjrubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjúqubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jrh´M hj÷qubjÄ)�”}”(hŒ'``int wait`` wait for I/O to complete. ”h]”(jÊ)�”}”(hŒ ``int wait``”h]”jÐ)�”}”(hj9rh]”hŒint wait”…”�”}”(hj;rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj7rubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒY/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:71: ./fs/fs-writeback.c”h´M hj3rubjæ)�”}”(hhh]”hÌ)�”}”(hŒwait for I/O to complete.”h]”hŒwait for I/O to complete.”…”�”}”(hjRrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jNrh´M hjOrubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj3rubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jNrh´M hj÷qubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÛqubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjtrh]”hŒ Description”…”�”}”(hjvrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjrrubah}”(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ÛqubhÌ)�”}”(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Šrh²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ÛqubhÌ)�”}”(hŒ**Note**”h]”j©)�”}”(hj›rh]”hŒNote”…”�”}”(hj�rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj™rubah}”(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ÛqubhÌ)�”}”(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.”…”�”}”(hj±rh²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Ûqubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œanon_inode_getfile (C function)”Œc.anon_inode_getfile”hNt”auh1hýhjVh²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”…”�”}”(hjàrh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÜrh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:74: ./fs/anon_inodes.c”h´K·ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîrh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÜrh²hh³jírh´K·ubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjÿrh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjürubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jsŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒanon_inode_getfile”sbŒc.anon_inode_getfile”†”asbuh1hhjÜrh²hh³jírh´K·ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj sh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÜrh²hh³jírh´K·ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj.sh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjÜrh²hh³jírh´K·ubjC)�”}”(hŒanon_inode_getfile”h]”jI)�”}”(hjsh]”hŒanon_inode_getfile”…”�”}”(hj?sh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj;subah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjÜrh²hh³jírh´K·ubj=)�”}”(hŒM(const char *name, const struct file_operations *fops, void *priv, int flags)”h]”(jC)�”}”(hŒconst char *name”h]”(j )�”}”(hj¾h]”hŒconst”…”�”}”(hjZsh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjVsubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjgsh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjVsubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjush²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjVsubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒsh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjVsubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj‘sh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjVsubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hjžsh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjVsubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjRsubjC)�”}”(hŒ"const struct file_operations *fops”h]”(j )�”}”(hj¾h]”hŒconst”…”�”}”(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³subj )�”}”(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_operations”h]”hŒfile_operations”…”�”}”(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 ]”jsŒc.anon_inode_getfile”†”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Œfops”h]”hŒfops”…”�”}”(hj)th²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj³subeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjRsubjC)�”}”(hŒ void *priv”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjBth²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj>tubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPth²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Œpriv”h]”hŒpriv”…”�”}”(hjkth²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj>tubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjRsubjC)�”}”(hŒ int flags”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj„th²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj€tubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’th²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj€tubjI)�”}”(hŒflags”h]”hŒflags”…”�”}”(hj th²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj€tubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjRsubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjÜrh²hh³jírh´K·ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjØrh²hh³jírh´K·ubah}”(h]”jÓrah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jírh´K·hjÕrh²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Êth²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Çth²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÕrh²hh³jírh´K·ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jâtjšjâtj›‰jœ‰j�‰uh1jh²hhjVh³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ìth]”hŒ Parameters”…”�”}”(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:74: ./fs/anon_inodes.c”h´K»hjætubj¿)�”}”(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 uh]”hŒconst char *name”…”�”}”(hj uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj uubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:74: ./fs/anon_inodes.c”h´K»hjuubjæ)�”}”(hhh]”hÌ)�”}”(hŒ+[in] name of the "class" of the new file”h]”hŒ/[in] name of the “classâ€� of the new file”…”�”}”(hj$uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j uh´K»hj!uubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjuubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j uh´K»hjuubjÄ)�”}”(hŒP``const struct file_operations *fops`` [in] file operations for the new file ”h]”(jÊ)�”}”(hŒ&``const struct file_operations *fops``”h]”jÐ)�”}”(hjDuh]”hŒ"const struct file_operations *fops”…”�”}”(hjFuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjBuubah}”(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>uubjæ)�”}”(hhh]”hÌ)�”}”(hŒ([in] file operations for the new file”h]”hŒ([in] file operations for the new file”…”�”}”(hj]uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jYuh´K¼hjZuubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj>uubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jYuh´K¼hjuubjÄ)�”}”(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}uh]”hŒ void *priv”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj{uubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:74: ./fs/anon_inodes.c”h´K½hjwuubjæ)�”}”(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–uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j’uh´K½hj“uubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjwuubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j’uh´K½hjuubjÄ)�”}”(hŒ``int flags`` [in] flags ”h]”(jÊ)�”}”(hŒ ``int flags``”h]”jÐ)�”}”(hj¶uh]”hŒ int flags”…”�”}”(hj¸uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj´uubah}”(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°uubjæ)�”}”(hhh]”hÌ)�”}”(hŒ [in] flags”h]”hŒ [in] flags”…”�”}”(hjÏuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jËuh´K¾hjÌuubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj°uubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jËuh´K¾hjuubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjætubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjñuh]”hŒ Description”…”�”}”(hjóuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjïuubah}”(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ætubhÌ)�”}”(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.”…”�”}”(hjvh²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ætubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²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ýhjVh²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”…”�”}”(hj6vh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj2vh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:74: ./fs/anon_inodes.c”h´KÏubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDvh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj2vh²hh³jCvh´KÏubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjUvh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjRvubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jWvŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒanon_inode_getfile_fmode”sbŒc.anon_inode_getfile_fmode”†”asbuh1hhj2vh²hh³jCvh´KÏubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvvh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj2vh²hh³jCvh´KÏubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj„vh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj2vh²hh³jCvh´KÏubjC)�”}”(hŒanon_inode_getfile_fmode”h]”jI)�”}”(hjsvh]”hŒanon_inode_getfile_fmode”…”�”}”(hj•vh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‘vubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj2vh²hh³jCvh´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 )�”}”(hj¾h]”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¬vubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjËvh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj¬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Œname”h]”hŒname”…”�”}”(hjôvh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¬vubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¨vubjC)�”}”(hŒ"const struct file_operations *fops”h]”(j )�”}”(hj¾h]”hŒconst”…”�”}”(hj wh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj wubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj wubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj(wh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj wubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5wh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj wubh)�”}”(hhh]”jI)�”}”(hŒfile_operations”h]”hŒfile_operations”…”�”}”(hjFwh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjCwubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jHwŒmodname”NŒ classname”Njj )�”}”j ]”jqvŒc.anon_inode_getfile_fmode”†”asbuh1hhj wubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdwh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj wubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjrwh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj wubjI)�”}”(hŒfops”h]”hŒfops”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj wubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¨vubjC)�”}”(hŒ void *priv”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj˜wh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj”wubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦wh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj”wubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj´wh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj”wubjI)�”}”(hŒpriv”h]”hŒpriv”…”�”}”(hjÁwh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj”wubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¨vubjC)�”}”(hŒ int flags”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjÚwh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÖwubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjèwh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÖwubjI)�”}”(hŒflags”h]”hŒflags”…”�”}”(hjöwh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÖwubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¨vubjC)�”}”(hŒfmode_t f_mode”h]”(h)�”}”(hhh]”jI)�”}”(hŒfmode_t”h]”hŒfmode_t”…”�”}”(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 ]”jqvŒc.anon_inode_getfile_fmode”†”asbuh1hhj xubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0xh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj xubjI)�”}”(hŒf_mode”h]”hŒf_mode”…”�”}”(hj>xh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj xubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¨vubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj2vh²hh³jCvh´KÏubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj.vh²hh³jCvh´KÏubah}”(h]”j)vah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jCvh´KÏhj+vh²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”…”�”}”(hjhxh²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Ïhjexh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj+vh²hh³jCvh´KÏubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j€xjšj€xj›‰jœ‰j�‰uh1jh²hhjVh³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Šxh]”hŒ Parameters”…”�”}”(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:74: ./fs/anon_inodes.c”h´KÓhj„xubj¿)�”}”(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©xh]”hŒconst char *name”…”�”}”(hj«xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj§xubah}”(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£xubjæ)�”}”(hhh]”hÌ)�”}”(hŒ+[in] name of the "class" of the new file”h]”hŒ/[in] name of the “classâ€� of the new file”…”�”}”(hjÂxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¾xh´KÓhj¿xubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj£xubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¾xh´KÓhj xubjÄ)�”}”(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âxh]”hŒ"const struct file_operations *fops”…”�”}”(hjäxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjàxubah}”(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Üxubjæ)�”}”(hhh]”hÌ)�”}”(hŒ([in] file operations for the new file”h]”hŒ([in] file operations for the new file”…”�”}”(hjûxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j÷xh´KÔhjøxubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÜxubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j÷xh´KÔhj xubjÄ)�”}”(hŒS``void *priv`` [in] private data for the new file (will be file's private_data) ”h]”(jÊ)�”}”(hŒ``void *priv``”h]”jÐ)�”}”(hjyh]”hŒ void *priv”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjyubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:74: ./fs/anon_inodes.c”h´KÕhjyubjæ)�”}”(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)”…”�”}”(hj4yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j0yh´KÕhj1yubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjyubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j0yh´KÕhj xubjÄ)�”}”(hŒ``int flags`` [in] flags ”h]”(jÊ)�”}”(hŒ ``int flags``”h]”jÐ)�”}”(hjTyh]”hŒ int flags”…”�”}”(hjVyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjRyubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:74: ./fs/anon_inodes.c”h´KÖhjNyubjæ)�”}”(hhh]”hÌ)�”}”(hŒ [in] flags”h]”hŒ [in] flags”…”�”}”(hjmyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jiyh´KÖhjjyubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjNyubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jiyh´KÖhj xubjÄ)�”}”(hŒ!``fmode_t f_mode`` [in] fmode ”h]”(jÊ)�”}”(hŒ``fmode_t f_mode``”h]”jÐ)�”}”(hj�yh]”hŒfmode_t f_mode”…”�”}”(hj�yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj‹yubah}”(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‡yubjæ)�”}”(hhh]”hÌ)�”}”(hŒ [in] fmode”h]”hŒ [in] fmode”…”�”}”(hj¦yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¢yh´K×hj£yubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj‡yubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¢yh´K×hj xubeh}”(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³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:74: ./fs/anon_inodes.c”h´KÙhj„xubhÌ)�”}”(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.”…”�”}”(hjÞyh²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„xubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²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ýhjVh²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 zh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj zh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:74: ./fs/anon_inodes.c”h´Kïubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj zh²hh³jzh´Kïubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒ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)�”}”jŒanon_inode_create_getfile”sbŒc.anon_inode_create_getfile”†”asbuh1hhj zh²hh³jzh´Kïubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjMzh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj zh²hh³jzh´Kïubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj[zh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj zh²hh³jzh´KïubjC)�”}”(hŒanon_inode_create_getfile”h]”jI)�”}”(hjJzh]”hŒanon_inode_create_getfile”…”�”}”(hjlzh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjhzubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj zh²hh³jzh´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 )�”}”(hj¾h]”hŒconst”…”�”}”(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ƒzubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj¢zh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjƒ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Œname”h]”hŒname”…”�”}”(hjËzh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjƒzubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjzubjC)�”}”(hŒ"const struct file_operations *fops”h]”(j )�”}”(hj¾h]”hŒconst”…”�”}”(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àzubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjÿzh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjàzubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj {h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjàzubh)�”}”(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 ]”jHzŒc.anon_inode_create_getfile”†”asbuh1hhjàzubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;{h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjàzubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjI{h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjàzubjI)�”}”(hŒfops”h]”hŒfops”…”�”}”(hjV{h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjàzubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjzubjC)�”}”(hŒ void *priv”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjo{h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjk{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Œpriv”h]”hŒpriv”…”�”}”(hj˜{h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjk{ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjzubjC)�”}”(hŒ int flags”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj±{h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj­{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`jauh1jBhjzubjC)�”}”(hŒ!const struct inode *context_inode”h]”(j )�”}”(hj¾h]”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 ]”jHzŒc.anon_inode_create_getfile”†”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Œ context_inode”h]”hŒ context_inode”…”�”}”(hjX|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 zh²hh³jzh´Kïubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjzh²hh³jzh´Kïubah}”(h]”jzah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jzh´Kïhjzh²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&]”uh1jvhjzh²hh³jzh´Kïubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jš|jšjš|j›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(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Ï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Ð)�”}”(hj5}h]”hŒ void *priv”…”�”}”(hj7}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj3}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)”…”�”}”(hjN}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jJ}h´KöhjK}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj/}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jJ}h´Köhjº|ubjÄ)�”}”(hŒ``int flags`` [in] flags ”h]”(jÊ)�”}”(hŒ ``int flags``”h]”jÐ)�”}”(hjn}h]”hŒ int flags”…”�”}”(hjp}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjl}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÷hjh}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åhjh}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jƒ}h´K÷hjº|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Ð)�”}”(hj§}h]”hŒ!const struct inode *context_inode”…”�”}”(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] the logical relationship with the new inode (optional)”h]”hŒ>[in] the logical relationship with the new inode (optional)”…”�”}”(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³Œ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žD)�”}”(hhh]”(j£D)�”}”(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¢Dhj~ubj£D)�”}”(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¢Dhj~ubeh}”(h]”h ]”h"]”h$]”h&]”jÜDjœ!uh1j�Dh³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 ”…”�”}”(hjB~h²hh³Nh´Nubj©)�”}”(hŒ**context_inode**”h]”hŒ context_inode”…”�”}”(hjJ~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjB~ubhŒB in inode_init_security_anon(), but a reference to it is not held.”…”�”}”(hjB~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.”…”�”}”(hjc~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žhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œanon_inode_getfd (C function)”Œc.anon_inode_getfd”hNt”auh1hýhjVh²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj’~h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjŽ~h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:74: ./fs/anon_inodes.c”h´Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡~h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjŽ~h²hh³j ~h´MubjC)�”}”(hŒanon_inode_getfd”h]”jI)�”}”(hŒanon_inode_getfd”h]”hŒanon_inode_getfd”…”�”}”(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ŒM(const char *name, const struct file_operations *fops, void *priv, int flags)”h]”(jC)�”}”(hŒconst char *name”h]”(j )�”}”(hj¾h]”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Ë~ubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjê~h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjË~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`jauh1jBhjÇ~ubjC)�”}”(hŒ"const struct file_operations *fops”h]”(j )�”}”(hj¾h]”hŒconst”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj(ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj(ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj(ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj(ubh)�”}”(hhh]”jI)�”}”(hŒfile_operations”h]”hŒfile_operations”…”�”}”(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)�”}”jjµ~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”…”�”}”(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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjµubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj÷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´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Œ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”…”�”}”(hjA€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³j ~h´Mubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jY€jšjY€j›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(hjc€h]”hŒ Parameters”…”�”}”(hje€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hja€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"hjy€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´M#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´M#hjÑ€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjµ€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jЀh´M#hjy€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$hjy€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”…”�”}”(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%hjy€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³Œ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žhjVh²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ýhjVh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒQint setattr_should_drop_sgid (struct mnt_idmap *idmap, const struct inode *inode)”h]”j)�”}”(hŒPint setattr_should_drop_sgid(struct mnt_idmap *idmap, const struct inode *inode)”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj­�h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj©�h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´Kubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj©�h²hh³j»�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³j»�h´Kubj=)�”}”(hŒ4(struct mnt_idmap *idmap, const struct inode *inode)”h]”(jC)�”}”(hŒstruct mnt_idmap *idmap”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Œ 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.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Œ*”…”�”}”(hj6‚h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjæ�ubjI)�”}”(hŒidmap”h]”hŒidmap”…”�”}”(hjC‚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 )�”}”(hj¾h]”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 )�”}”(hjŽh]”hŒstruct”…”�”}”(hjw‚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Œ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_should_drop_sgid”†”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Œinode”h]”hŒinode”…”�”}”(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´Kubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj¥�h²hh³j»�h´Kubah}”(h]”j �ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j»�h´Khj¢�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&]”uh1jvhj¢�h²hh³j»�h´Kubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jƒjšjƒj›‰jœ‰j�‰uh1jh²hhjVh³Nh´NubjŸ)�”}”(hXí**Parameters** ``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ŒH``struct mnt_idmap *idmap`` idmap of the mount **inode** was found from ”h]”(jÊ)�”}”(hŒ``struct mnt_idmap *idmap``”h]”jÐ)�”}”(hj9ƒh]”hŒstruct mnt_idmap *idmap”…”�”}”(hj;ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj7ƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´Khj3ƒubjæ)�”}”(hhh]”hÌ)�”}”(hŒ+idmap of the mount **inode** was found from”h]”(hŒidmap of the mount ”…”�”}”(hjRƒh²hh³Nh´Nubj©)�”}”(hŒ **inode**”h]”hŒinode”…”�”}”(hjZƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjRƒubhŒ was found from”…”�”}”(hjRƒh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jNƒh´KhjOƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj3ƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jNƒh´Khj0ƒubjÄ)�”}”(hŒ-``const struct inode *inode`` inode to check ”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´Khj~ƒ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´Khjšƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj~ƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j™ƒh´Khj0ƒ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´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žhjVh²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ýhjVh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒNint setattr_should_drop_suidgid (struct mnt_idmap *idmap, struct inode *inode)”h]”j)�”}”(hŒMint setattr_should_drop_suidgid(struct mnt_idmap *idmap, struct inode *inode)”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj+„h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj'„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³j9„h´K1ubjC)�”}”(hŒsetattr_should_drop_suidgid”h]”jI)�”}”(hŒsetattr_should_drop_suidgid”h]”hŒsetattr_should_drop_suidgid”…”�”}”(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´K1ubj=)�”}”(hŒ.(struct mnt_idmap *idmap, struct inode *inode)”h]”(jC)�”}”(hŒstruct mnt_idmap *idmap”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Œ 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)�”}”jjN„sbŒc.setattr_should_drop_suidgid”†”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Œidmap”h]”hŒidmap”…”�”}”(hjÁ„h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjd„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.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”…”�”}”(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<hj'„h²hh³j9„h´K1ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj#„h²hh³j9„h´K1ubah}”(h]”j„ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j9„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´K1hjX…h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj „h²hh³j9„h´K1ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™js…jšjs…j›‰jœ‰j�‰uh1jh²hhjVh³Nh´NubjŸ)�”}”(hX(**Parameters** ``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©)�”}”(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´K5hjw…ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒH``struct mnt_idmap *idmap`` idmap of the mount **inode** was found from ”h]”(jÊ)�”}”(hŒ``struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjœ…h]”hŒ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´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³j±…h´K3hj²…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj–…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j±…h´K3hj“…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´K4hj“…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³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´K6hjw…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.”…”�”}”(hj8†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´K5hjw…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³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´K;hjw…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´Kah"]”h$]”h&]”uh1j1hjІh²hh³jœ†h´K�ubjC)�”}”(hŒsetattr_prepare”h]”jI)�”}”(hŒsetattr_prepare”h]”hŒsetattr_prepare”…”�”}”(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ŒD(struct mnt_idmap *idmap, struct dentry *dentry, struct iattr *attr)”h]”(jC)�”}”(hŒstruct mnt_idmap *idmap”h]”(j )�”}”(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Œ 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.setattr_prepare”†”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Œidmap”h]”hŒidmap”…”�”}”(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&]”uh1jhj9‡ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJ‡h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj9‡ubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(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.setattr_prepare”†”asbuh1hhj9‡ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjy‡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Œdentry”h]”hŒdentry”…”�”}”(hj”‡h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj9‡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<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Œ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&]”uh1jvhjƒ†h²hh³jœ†h´K�ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jFˆjšjFˆj›‰jœ‰j�‰uh1jh²hhjVh³Nh´NubjŸ)�”}”(hXæ**Parameters** ``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©)�”}”(hjPˆh]”hŒ Parameters”…”�”}”(hjRˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjNˆubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´K‘hjJˆubj¿)�”}”(hhh]”(jÄ)�”}”(hŒH``struct mnt_idmap *idmap`` idmap of the mount the inode was found from ”h]”(jÊ)�”}”(hŒ``struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjoˆh]”hŒstruct mnt_idmap *idmap”…”�”}”(hjqˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjmˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´KŽhjiˆ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´KŽhj…ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjiˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j„ˆh´KŽhjfˆ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�hjfˆ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�hjfˆ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³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´K’hjJˆ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 ”…”�”}”(hj2‰h²hh³Nh´Nubj©)�”}”(hŒ**attr**”h]”hŒattr”…”�”}”(hj:‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj2‰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.”…”�”}”(hj2‰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‘hjJˆ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 ”…”�”}”(hjS‰h²hh³Nh´Nubj©)�”}”(hŒ **idmap**”h]”hŒidmap”…”�”}”(hj[‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjS‰ubhŒB. This function will then take care to map the inode according to ”…”�”}”(hjS‰h²hh³Nh´Nubj©)�”}”(hŒ **idmap**”h]”hŒidmap”…”�”}”(hjm‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjS‰ubhŒ before checking permissions. On non-idmapped mounts or if permission checking is to be performed on the raw inode simply pass ”…”�”}”(hjS‰h²hh³Nh´Nubj©)�”}”(hŒ**nop_mnt_idmap**”h]”hŒ nop_mnt_idmap”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjS‰ubhŒ.”…”�”}”(hjS‰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—hjJˆ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.”…”�”}”(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�hjJˆubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œinode_newsize_ok (C function)”Œc.inode_newsize_ok”hNt”auh1hýhjVh²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjljh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÉ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 )�”}”(hj¾h]”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Œ*”…”�”}”(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Œ loff_t offset”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 ]”jYŠŒc.inode_newsize_ok”†”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ü‰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²hhjVh³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”…”�”}”(hjD‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j@‹h´KðhjA‹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Ð)�”}”(hjd‹h]”hŒ loff_t offset”…”�”}”(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: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³jy‹h´Kñhjz‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj^‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jy‹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žhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œsetattr_copy (C function)”Œc.setattr_copy”hNt”auh1hýhjVh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒZvoid setattr_copy (struct mnt_idmap *idmap, struct inode *inode, const struct iattr *attr)”h]”j)�”}”(hŒYvoid setattr_copy(struct mnt_idmap *idmap, struct inode *inode, const struct iattr *attr)”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj,Œh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj(Œ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”…”�”}”(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ŒH(struct mnt_idmap *idmap, struct inode *inode, const struct iattr *attr)”h]”(jC)�”}”(hŒstruct mnt_idmap *idmap”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Œ 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)�”}”jjOŒsbŒc.setattr_copy”†”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Œidmap”h]”hŒidmap”…”�”}”(hjÂŒh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjeŒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjaŒ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”…”�”}”(hj2�h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj׌ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjaŒubjC)�”}”(hŒconst struct iattr *attr”h]”(j )�”}”(hj¾h]”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Œ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”†”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Œattr”h]”hŒattr”…”�”}”(hj½�h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjG�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Œ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²hhjVh³Nh´NubjŸ)�”}”(hX‰**Parameters** ``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ŒH``struct mnt_idmap *idmap`` idmap of the mount the inode was found from ”h]”(jÊ)�”}”(hŒ``struct mnt_idmap *idmap``”h]”jÐ)�”}”(hj(Žh]”hŒ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”…”�”}”(hjAŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hË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Ð)�”}”(hjaŽh]”hŒstruct inode *inode”…”�”}”(hjcŽ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Œthe inode to be updated”h]”hŒthe inode to be updated”…”�”}”(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@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”…”�”}”(hj5�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.”…”�”}”(hjN�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žhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œnotify_change (C function)”Œc.notify_change”hNt”auh1hýhjVh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒint notify_change (struct mnt_idmap *idmap, struct dentry *dentry, struct iattr *attr, struct delegated_inode *delegated_inode)”h]”j)�”}”(hŒ~int notify_change(struct mnt_idmap *idmap, struct dentry *dentry, struct iattr *attr, struct delegated_inode *delegated_inode)”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj}�h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjy�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&]”uh1j1hjy�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`jauh1jBhjy�h²hh³j‹�h´M‘ubj=)�”}”(hŒm(struct mnt_idmap *idmap, struct dentry *dentry, struct iattr *attr, struct delegated_inode *delegated_inode)”h]”(jC)�”}”(hŒstruct mnt_idmap *idmap”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Œ 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”…”�”}”(hj,�h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj(�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj(�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ô�Œc.notify_change”†”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Œ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Œ ”…”�”}”(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.notify_change”†”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Œdelegated_inode”h]”hŒdelegated_inode”…”�”}”(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<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Œ(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&]”uh1jvhjr�h²hh³j‹�h´M‘ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j¥‘jšj¥‘j›‰jœ‰j�‰uh1jh²hhjVh³Nh´NubjŸ)�”}”(hXÿ**Parameters** ``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ŒH``struct mnt_idmap *idmap`` idmap of the mount the inode was found from ”h]”(jÊ)�”}”(hŒ``struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjΑh]”hŒ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”…”�”}”(hj ’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hË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 iattr *attr`` new attributes ”h]”(jÊ)�”}”(hŒ``struct iattr *attr``”h]”jÐ)�”}”(hj@’h]”hŒstruct iattr *attr”…”�”}”(hjB’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Œnew attributes”h]”hŒnew attributes”…”�”}”(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Å‘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Ð)�”}”(hjy’h]”hŒ'struct delegated_inode *delegated_inode”…”�”}”(hj{’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjw’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:77: ./fs/attr.c”h´M•hjs’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åhjs’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žhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œd_path (C function)”Œc.d_path”hNt”auh1hýhjVh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ>char * d_path (const struct path *path, char *buf, int buflen)”h]”j)�”}”(hŒah"]”h$]”h&]”uh1j1hjX“h²hh³jj“h´Kúubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjy“h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjX“h²hh³jj“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`jauh1jBhjX“h²hh³jj“h´Kúubj=)�”}”(hŒ0(const struct path *path, char *buf, int buflen)”h]”(jC)�”}”(hŒconst struct path *path”h]”(j )�”}”(hj¾h]”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”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¢“ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjž“ubjC)�”}”(hŒ char *buf”h]”(jf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj3”h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj/”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Œ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Œ int buflen”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hju”h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjq”ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒ”h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjq”ubjI)�”}”(hŒbuflen”h]”hŒbuflen”…”�”}”(hj‘”h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjq”ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjž“ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjX“h²hh³jj“h´Kúubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjT“h²hh³jj“h´Kúubah}”(h]”jO“ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jj“h´KúhjQ“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&]”uh1jvhjQ“h²hh³jj“h´Kúubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÓ”jšjÓ”j›‰jœ‰j�‰uh1jh²hhjVh³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Ð)�”}”(hj5•h]”hŒ char *buf”…”�”}”(hj7•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj3•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 to return value in”h]”hŒbuffer to return value in”…”�”}”(hjN•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jJ•h´KühjK•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj/•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jJ•h´Kühjó”ubjÄ)�”}”(hŒ``int buflen`` buffer length ”h]”(jÊ)�”}”(hŒ``int buflen``”h]”jÐ)�”}”(hjn•h]”hŒ int buflen”…”�”}”(hjp•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjl•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ýhjh•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åhjh•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žhjVh²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ýhjVh²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj –h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj–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_folio_reset_order”h]”jI)�”}”(hŒdax_folio_reset_order”h]”hŒdax_folio_reset_order”…”�”}”(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 folio *folio)”h]”jC)�”}”(hŒstruct folio *folio”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Œfolio”h]”hŒfolio”…”�”}”(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.dax_folio_reset_order”†”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Œfolio”h]”hŒfolio”…”�”}”(hj¢–h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjE–ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjA–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Œ+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³j–h´M}ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jä–jšjä–j›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(hjH—h]”hŒ Description”…”�”}”(hjJ—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjF—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.”…”�”}”(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´Mhjè–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³Œ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žhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ'dax_layout_busy_page_range (C function)”Œc.dax_layout_busy_page_range”hNt”auh1hýhjVh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒbstruct page * dax_layout_busy_page_range (struct address_space *mapping, loff_t start, loff_t end)”h]”j)�”}”(hŒ`struct page *dax_layout_busy_page_range(struct address_space *mapping, loff_t start, loff_t end)”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj´—h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj°—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 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)�”}”jŒdax_layout_busy_page_range”sbŒc.dax_layout_busy_page_range”†”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Œdax_layout_busy_page_range”h]”jI)�”}”(hjñ—h]”hŒdax_layout_busy_page_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´M ubj=)�”}”(hŒ9(struct address_space *mapping, loff_t start, loff_t end)”h]”(jC)�”}”(hŒstruct address_space *mapping”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Œ address_space”h]”hŒ address_space”…”�”}”(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.dax_layout_busy_page_range”†”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Œmapping”h]”hŒmapping”…”�”}”(hj…˜h²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”…”�”}”(hj¡˜h²hh³Nh´Nubah}”(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_layout_busy_page_range”†”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`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.dax_layout_busy_page_range”†”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`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Œ%find first pinned page in **mapping**”h]”(hŒfind first pinned page in ”…”�”}”(hj?™h²hh³Nh´Nubj©)�”}”(hŒ **mapping**”h]”hŒmapping”…”�”}”(hjG™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj?™ubeh}”(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™je™jšje™j›‰jœ‰j�‰uh1jh²hhjVh³Nh´NubjŸ)�”}”(hXN**Parameters** ``struct address_space *mapping`` address space to scan for a page with ref count > 1 ``loff_t start`` Starting offset. Page containing 'start' is included. ``loff_t end`` End offset. Page containing 'end' is included. If 'end' is LLONG_MAX, pages from 'start' till the end of file are included. **Description** DAX requires ZONE_DEVICE mapped pages. These pages are never 'onlined' to the page allocator so they are considered idle when page->count == 1. A filesystem uses this interface to determine if any page in the mapping is busy, i.e. for DMA, or other get_user_pages() usages. It is expected that the filesystem is holding locks to block the establishment of new mappings in this address_space. I.e. it expects to be able to run unmap_mapping_range() and subsequently not race mapping_mapped() becoming true.”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³ŒP/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:83: ./fs/dax.c”h´M hji™ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒV``struct address_space *mapping`` address space to scan for a page with ref count > 1 ”h]”(jÊ)�”}”(hŒ!``struct address_space *mapping``”h]”jÐ)�”}”(hjŽ™h]”hŒstruct address_space *mapping”…”�”}”(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Œ3address space to scan for a page with ref count > 1”h]”hŒ3address space to scan for a page with ref count > 1”…”�”}”(hj§™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hË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``loff_t start`` Starting offset. Page containing 'start' is included. ”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³ŒP/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:83: ./fs/dax.c”h´M hjÁ™ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ5Starting offset. Page containing 'start' is included.”h]”hŒ9Starting offset. Page containing ‘start’ is included.”…”�”}”(hjà™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hË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. Page containing 'end' is included. If 'end' is LLONG_MAX, pages from 'start' till the end of file are included. ”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³ŒP/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:83: ./fs/dax.c”h´M hjú™ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ{End offset. Page containing 'end' is included. If 'end' is LLONG_MAX, pages from 'start' till the end of file are included.”h]”hŒ‡End offset. Page containing ‘end’ is included. If ‘end’ is LLONG_MAX, pages from ‘start’ till the end of file are included.”…”�”}”(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š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³ŒP/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:83: ./fs/dax.c”h´Mhji™ubhÌ)�”}”(hXDAX requires ZONE_DEVICE mapped pages. These pages are never 'onlined' to the page allocator so they are considered idle when page->count == 1. A filesystem uses this interface to determine if any page in the mapping is busy, i.e. for DMA, or other get_user_pages() usages.”h]”hXDAX requires ZONE_DEVICE mapped pages. These pages are never ‘onlined’ to the page allocator so they are considered idle when page->count == 1. A filesystem uses this interface to determine if any page in the mapping is busy, i.e. for DMA, or other get_user_pages() usages.”…”�”}”(hjRš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´Mhji™ubhÌ)�”}”(hŒçIt is expected that the filesystem is holding locks to block the establishment of new mappings in this address_space. I.e. it expects to be able to run unmap_mapping_range() and subsequently not race mapping_mapped() becoming true.”h]”hŒçIt is expected that the filesystem is holding locks to block the establishment of new mappings in this address_space. I.e. it expects to be able to run unmap_mapping_range() and subsequently not race mapping_mapped() becoming true.”…”�”}”(hjaš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´Mhji™ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œdax_iomap_rw (C function)”Œc.dax_iomap_rw”hNt”auh1hýhjVh²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&]”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Œiocb”h]”hŒiocb”…”�”}”(hj9›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”…”�”}”(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Œiov_iter”h]”hŒiov_iter”…”�”}”(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.dax_iomap_rw”†”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Œiter”h]”hŒiter”…”�”}”(hj©›h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjN›ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÚšubjC)�”}”(hŒconst struct iomap_ops *ops”h]”(j )�”}”(hj¾h]”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_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Œops”h]”hŒops”…”�”}”(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´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™jvœjšjvœj›‰jœ‰j�‰uh1jh²hhjVh³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Íhjzœ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Ð)�”}”(hj�h]”hŒconst struct iomap_ops *ops”…”�”}”(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Œ%iomap ops passed from the file system”h]”hŒ%iomap ops passed from the 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åhj �ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j&�h´MÌhj–œubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjzœ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³ŒP/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:83: ./fs/dax.c”h´MÎhjzœ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.”…”�”}”(hjb�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Íhjzœubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œdax_iomap_fault (C function)”Œc.dax_iomap_fault”hNt”auh1hýhjVh²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´M3ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj��h²hh³jµ�h´M3ubjC)�”}”(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´M3ubj=)�”}”(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Œ*”…”�”}”(hj-žh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjß�ubjI)�”}”(hŒvmf”h]”hŒvmf”…”�”}”(hj:ž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]”(jf)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjSžh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjOžubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjažh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjOžubjf)�”}”(hŒint”h]”hŒint”…”�”}”(hjožh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjOžubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}žh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjOžubjI)�”}”(hŒorder”h]”hŒorder”…”�”}”(hj‹žh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjOžubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÛ�ubjC)�”}”(hŒunsigned long *pfnp”h]”(jf)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj¤žh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj žubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²žh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj žubjf)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjÀžh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj žubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjΞh²hh³Nh´Nubah}”(h]”h ]”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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjþžubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjþžubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjþžubjI)�”}”(hŒ iomap_errp”h]”hŒ iomap_errp”…”�”}”(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 )�”}”(hj¾h]”hŒconst”…”�”}”(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@Ÿ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Œ iomap_ops”h]”hŒ iomap_ops”…”�”}”(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.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´M3ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj‰�h²hh³jµ�h´M3ubah}”(h]”j„�ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jµ�h´M3hj†�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´M3hjÝŸh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj†�h²hh³jµ�h´M3ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jøŸjšjøŸj›‰jœ‰j�‰uh1jh²hhjVh³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´M7hjüŸ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´M4hj 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³j6 h´M4hj7 ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j6 h´M4hj ubjÄ)�”}”(hŒ5``unsigned int order`` Order of the page to fault in ”h]”(jÊ)�”}”(hŒ``unsigned int order``”h]”jÐ)�”}”(hjZ h]”hŒunsigned int order”…”�”}”(hj\ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjX ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒP/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:83: ./fs/dax.c”h´M5hjT ubjæ)�”}”(hhh]”hÌ)�”}”(hŒOrder of the page to fault in”h]”hŒOrder of the page to fault in”…”�”}”(hjs h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jo h´M5hjp ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjT ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jo h´M5hj 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´M6hj� 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´M6hj© ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj� ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¨ h´M6hj 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´M7hjÆ 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´M7hjâ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÆ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³já h´M7hj 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Ð)�”}”(hj¡h]”hŒconst struct iomap_ops *ops”…”�”}”(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´M8hjÿ ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ%Iomap ops passed from the file system”h]”hŒ%Iomap ops passed from the file system”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¡h´M8hj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÿ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¡h´M8hj 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³ŒP/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:83: ./fs/dax.c”h´M:hjüŸ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.”…”�”}”(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´M9hjüŸubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²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ýhjVh²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´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_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´M}ubj=)�”}”(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”…”�”}”(hjõ¡h²hh³Nh´Nubah}”(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_finish_sync_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Œvmf”h]”hŒvmf”…”�”}”(hj.¢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]”(jf)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjG¢h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjC¢ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjU¢h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjC¢ubjf)�”}”(hŒint”h]”hŒint”…”�”}”(hjc¢h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjC¢ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjq¢h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjC¢ubjI)�”}”(hŒorder”h]”hŒorder”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjC¢ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÏ¡ubjC)�”}”(hŒunsigned long pfn”h]”(jf)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj˜¢h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj”¢ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦¢h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj”¢ubjf)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj´¢h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj”¢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´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Œfinish synchronous page fault”h]”hŒfinish synchronous page fault”…”�”}”(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&]”uh1jvhjz¡h²hh³j©¡h´M}ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j£jšj£j›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(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 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Ïhj9£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒP/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:83: ./fs/dax.c”h´M~hj5£ubjæ)�”}”(hhh]”hÌ)�”}”(hŒThe description of the fault”h]”hŒThe description of the fault”…”�”}”(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~hj2£ubjÄ)�”}”(hŒ5``unsigned int order`` Order of entry to be inserted ”h]”(jÊ)�”}”(hŒ``unsigned int order``”h]”jÐ)�”}”(hjt£h]”hŒunsigned int order”…”�”}”(hjv£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjr£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒP/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:83: ./fs/dax.c”h´Mhjn£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´MhjŠ£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjn£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j‰£h´Mhj2£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´M€hj§£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´M€hjãubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj§£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j£h´M€hj2£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 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´M�hj£ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ$simple_rename_timestamp (C function)”Œc.simple_rename_timestamp”hNt”auh1hýhjVh²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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj-¤h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj)¤h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M9ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<¤h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj)¤h²hh³j;¤h´M9ubjC)�”}”(hŒsimple_rename_timestamp”h]”jI)�”}”(hŒsimple_rename_timestamp”h]”hŒsimple_rename_timestamp”…”�”}”(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´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”…”�”}”(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Œ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)�”}”jjP¤sbŒc.simple_rename_timestamp”†”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Œold_dir”h]”hŒold_dir”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjf¤ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjb¤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”…”�”}”(hjú¤h²hh³Nh´Nubah}”(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Œ old_dentry”h]”hŒ old_dentry”…”�”}”(hj3¥h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjؤubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjb¤ubjC)�”}”(hŒstruct inode *new_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”…”�”}”(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¤¤Œc.simple_rename_timestamp”†”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Œnew_dir”h]”hŒnew_dir”…”�”}”(hj£¥h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjH¥ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjb¤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Œ ”…”�”}”(hjø¥h²hh³Nh´Nubah}”(h]”h ]”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`jauh1jBhjb¤ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj)¤h²hh³j;¤h´M9ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj%¤h²hh³j;¤h´M9ubah}”(h]”j ¤ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j;¤h´M9hj"¤h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ.update the various inode timestamps for rename”h]”hŒ.update the various inode timestamps for rename”…”�”}”(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&]”uh1jvhj"¤h²hh³j;¤h´M9ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jU¦jšjU¦j›‰jœ‰j�‰uh1jh²hhjVh³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”…”�”}”(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:86: ./fs/libfs.c”h´M=hjY¦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:hjx¦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åhjx¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j“¦h´M:hju¦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;hju¦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”…”�”}”(hj §h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hË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Œ0``struct dentry *new_dentry`` target for rename ”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:86: ./fs/libfs.c”h´M=hj#§ubjæ)�”}”(hhh]”hÌ)�”}”(hŒtarget for rename”h]”hŒtarget for rename”…”�”}”(hjB§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hË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¾hjY¦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³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M?hjY¦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 ”…”�”}”(hjz§h²hh³Nh´Nubj©)�”}”(hŒ**old_dentry**”h]”hŒ old_dentry”…”�”}”(hj‚§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjz§ubhŒ and ”…”�”}”(hjz§h²hh³Nh´Nubj©)�”}”(hŒ**new_dentry**”h]”hŒ new_dentry”…”�”}”(hj”§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjz§ubhŒ$ (if any), have their ctime updated.”…”�”}”(hjz§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>hjY¦ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œsimple_setattr (C function)”Œc.simple_setattr”hNt”auh1hýhjVh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒXint simple_setattr (struct mnt_idmap *idmap, struct dentry *dentry, struct iattr *iattr)”h]”j)�”}”(hŒWint simple_setattr(struct mnt_idmap *idmap, struct dentry *dentry, struct iattr *iattr)”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjͧh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjɧ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ŒE(struct mnt_idmap *idmap, struct dentry *dentry, struct iattr *iattr)”h]”(jC)�”}”(hŒstruct mnt_idmap *idmap”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Œ 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”†”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Œidmap”h]”hŒidmap”…”�”}”(hjc¨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&]”uh1jhjx¨ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰¨h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjx¨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.simple_setattr”†”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Œdentry”h]”hŒdentry”…”�”}”(hjÓ¨h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjx¨ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¨ubjC)�”}”(hŒstruct iattr *iattr”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 ]”jD¨Œc.simple_setattr”†”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Œiattr”h]”hŒiattr”…”�”}”(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Œsetattr for simple filesystem”h]”hŒsetattr for simple filesystem”…”�”}”(hjm©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†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²hhjVh³Nh´NubjŸ)�”}”(hXû**Parameters** ``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Œ6``struct mnt_idmap *idmap`` idmap of the target mount ”h]”(jÊ)�”}”(hŒ``struct mnt_idmap *idmap``”h]”jÐ)�”}”(hj®©h]”hŒ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ˆhjá©ubjæ)�”}”(hhh]”hÌ)�”}”(hŒdentry”h]”hŒ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Œ(``struct iattr *iattr`` iattr structure ”h]”(jÊ)�”}”(hŒ``struct iattr *iattr``”h]”jÐ)�”}”(hj ªh]”hŒstruct iattr *iattr”…”�”}”(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Œiattr structure”h]”hŒiattr structure”…”�”}”(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: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.”…”�”}”(hjqª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žhjVh²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ýhjVh²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´Mjubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjãªh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjºªh²hh³jâªh´MjubjC)�”}”(hŒsimple_read_from_buffer”h]”jI)�”}”(hjߪh]”hŒsimple_read_from_buffer”…”�”}”(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´Mjubj=)�”}”(hŒQ(void __user *to, size_t count, loff_t *ppos, const void *from, size_t available)”h]”(jC)�”}”(hŒvoid __user *to”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj «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Œ ”…”�”}”(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Œto”h]”hŒto”…”�”}”(hjK«h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj «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”…”�”}”(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.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 ]”jݪŒ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Œ*”…”�”}”(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«ubjC)�”}”(hŒconst void *from”h]”(j )�”}”(hj¾h]”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ý«ubjf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjý«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Œfrom”h]”hŒfrom”…”�”}”(hjE¬h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjý«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”…”�”}”(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_read_from_buffer”†”asbuh1hhjZ¬ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjZ¬ubjI)�”}”(hŒ available”h]”hŒ available”…”�”}”(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´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Œ'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´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²hhjVh³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©)�”}”(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´MnhjÓ¬ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ5``void __user *to`` the user space buffer to read to ”h]”(jÊ)�”}”(hŒ``void __user *to``”h]”jÐ)�”}”(hjø¬h]”hŒvoid __user *to”…”�”}”(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´Mkhjò¬ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ the user space buffer to read to”h]”hŒ the user space buffer to read to”…”�”}”(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Œ5``size_t count`` the maximum number of bytes to read ”h]”(jÊ)�”}”(hŒ``size_t count``”h]”jÐ)�”}”(hj1­h]”hŒ size_t count”…”�”}”(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:86: ./fs/libfs.c”h´Mlhj+­ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ#the maximum number of bytes to read”h]”hŒ#the maximum number of bytes to read”…”�”}”(hjJ­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jF­h´MlhjG­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj+­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jF­h´Mlhjï¬ubjÄ)�”}”(hŒ4``loff_t *ppos`` the current position in the buffer ”h]”(jÊ)�”}”(hŒ``loff_t *ppos``”h]”jÐ)�”}”(hjj­h]”hŒ loff_t *ppos”…”�”}”(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´Mmhjd­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´Mmhj€­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjd­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j­h´Mmhjï¬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´Mnhj�­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´Mnhj¹­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj�­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¸­h´Mnhjï¬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´MohjÖ­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´Mohjò­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”…”�”}”(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´MqhjÓ¬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”…”�”}”(hj5®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”…”�”}”(hjG®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj-®ubhŒ at offset ”…”�”}”(hj-®h²hh³Nh´Nubj©)�”}”(hŒ**ppos**”h]”hŒppos”…”�”}”(hjY®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”…”�”}”(hjk®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´MphjÓ¬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´MshjÓ¬ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²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ýhjVh²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Œ ”…”�”}”(hjê®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”…”�”}”(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(void *to, size_t available, loff_t *ppos, const void __user *from, size_t count)”h]”(jC)�”}”(hŒvoid *to”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj¯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Œto”h]”hŒto”…”�”}”(hj@¯h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¯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&]”uh1jHhjY¯ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j^¯Œmodname”NŒ classname”Njj )�”}”j ]”j䮌c.simple_write_to_buffer”†”asbuh1hhjU¯ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjz¯h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjU¯ubjI)�”}”(hŒ available”h]”hŒ available”…”�”}”(hjˆ¯h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjU¯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.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”…”�”}”(hjݯh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj�¯ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¯ubjC)�”}”(hŒconst void __user *from”h]”(j )�”}”(hj¾h]”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ò¯ubjf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjò¯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Œ ”…”�”}”(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Œfrom”h]”hŒfrom”…”�”}”(hjL°h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjò¯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”…”�”}”(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.simple_write_to_buffer”†”asbuh1hhja°ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†°h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hja°ubjI)�”}”(hŒcount”h]”hŒcount”…”�”}”(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<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²hhjVh³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©)�”}”(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Œ$``void *to`` the buffer to write to ”h]”(jÊ)�”}”(hŒ ``void *to``”h]”jÐ)�”}”(hjÿ°h]”hŒvoid *to”…”�”}”(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 write to”h]”hŒthe buffer to 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ö°ubjÄ)�”}”(hŒ,``size_t available`` the size of the buffer ”h]”(jÊ)�”}”(hŒ``size_t available``”h]”jÐ)�”}”(hj8±h]”hŒsize_t available”…”�”}”(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:86: ./fs/libfs.c”h´M�hj2±ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe size of the buffer”h]”hŒthe size of the buffer”…”�”}”(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Œ4``loff_t *ppos`` the current position in the buffer ”h]”(jÊ)�”}”(hŒ``loff_t *ppos``”h]”jÐ)�”}”(hjq±h]”hŒ loff_t *ppos”…”�”}”(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:86: ./fs/libfs.c”h´M�hjk±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åhjk±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j†±h´M�hjö°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‘hjö°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’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Œ�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 ”…”�”}”(hj4²h²hh³Nh´Nubj©)�”}”(hŒ **count**”h]”hŒcount”…”�”}”(hj<²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj4²ubhŒ/ bytes from the user space address starting at ”…”�”}”(hj4²h²hh³Nh´Nubj©)�”}”(hŒ**from**”h]”hŒfrom”…”�”}”(hjN²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj4²ubhŒ into the buffer ”…”�”}”(hj4²h²hh³Nh´Nubj©)�”}”(hŒ**to**”h]”hŒto”…”�”}”(hj`²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj4²ubhŒ at offset ”…”�”}”(hj4²h²hh³Nh´Nubj©)�”}”(hŒ**ppos**”h]”hŒppos”…”�”}”(hjr²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:86: ./fs/libfs.c”h´M“hjÚ°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–hjÚ°ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²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ýhjVh²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Œ ”…”�”}”(hjñ²h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjȲh²hh³jð²h´M°ubjC)�”}”(hŒmemory_read_from_buffer”h]”jI)�”}”(hjí²h]”hŒmemory_read_from_buffer”…”�”}”(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ŒJ(void *to, size_t count, loff_t *ppos, const void *from, size_t available)”h]”(jC)�”}”(hŒvoid *to”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj³ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,³h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj³ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj:³h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj³ubjI)�”}”(hŒto”h]”hŒto”…”�”}”(hjG³h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj³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”…”�”}”(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.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`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.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`jauh1jBhj³ubjC)�”}”(hŒconst void *from”h]”(j )�”}”(hj¾h]”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ù³ubjf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjù³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Œfrom”h]”hŒfrom”…”�”}”(hjA´h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjù³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&]”uh1jHhjZ´ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j_´Œmodname”NŒ classname”Njj )�”}”j ]”j벌c.memory_read_from_buffer”†”asbuh1hhjV´ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{´h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjV´ubjI)�”}”(hŒ available”h]”hŒ available”…”�”}”(hj‰´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´M°ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjIJh²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 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³jð²h´M°ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jË´jšjË´j›‰jœ‰j�‰uh1jh²hhjVh³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Ð)�”}”(hjô´h]”hŒvoid *to”…”�”}”(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 kernel space buffer to read to”h]”hŒ"the kernel space buffer to read 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Œ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”…”�”}”(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Œ4``loff_t *ppos`` the current position in the buffer ”h]”(jÊ)�”}”(hŒ``loff_t *ppos``”h]”jÐ)�”}”(hjfµh]”hŒ loff_t *ppos”…”�”}”(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: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³hjë´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´hjë´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µ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Œ 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”…”�”}”(hj1¶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”…”�”}”(hjC¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj)¶ubhŒ at offset ”…”�”}”(hj)¶h²hh³Nh´Nubj©)�”}”(hŒ**ppos**”h]”hŒppos”…”�”}”(hjU¶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”…”�”}”(hjg¶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žhjVh²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ýhjVh²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjÁ¶h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj½¶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”…”�”}”(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 inode *inode, __u32 *fh, int *max_len, struct inode *parent)”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_encode_ino32_fh”†”asbuh1hhjú¶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Œinode”h]”hŒinode”…”�”}”(hjW·h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjú¶ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjö¶ubjC)�”}”(hŒ __u32 *fh”h]”(h)�”}”(hhh]”jI)�”}”(hŒ__u32”h]”hŒ__u32”…”�”}”(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 ]”j8·Œc.generic_encode_ino32_fh”†”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Œfh”h]”hŒfh”…”�”}”(hj¬·h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjl·ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjö¶ubjC)�”}”(hŒ int *max_len”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjÅ·h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÁ·ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓ·h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÁ·ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjá·h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjÁ·ubjI)�”}”(hŒmax_len”h]”hŒmax_len”…”�”}”(hjî·h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÁ·ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjö¶ubjC)�”}”(hŒstruct inode *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Œ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.generic_encode_ino32_fh”†”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Œ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Œ-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²hhjVh³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”…”�”}”(hjâ¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hË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``__u32 *fh`` where to store the file handle fragment ”h]”(jÊ)�”}”(hŒ ``__u32 *fh``”h]”jÐ)�”}”(hj¹h]”hŒ __u32 *fh”…”�”}”(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Œ'where to store the file handle fragment”h]”hŒ'where to store the file handle fragment”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hË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``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Ïhj9¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´Mžhj5¹ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ/maximum length to store there (in 4 byte units)”h]”hŒ/maximum length to store there (in 4 byte units)”…”�”}”(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 inode *parent`` parent directory inode, if wanted ”h]”(jÊ)�”}”(hŒ``struct inode *parent``”h]”jÐ)�”}”(hjt¹h]”hŒstruct inode *parent”…”�”}”(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:86: ./fs/libfs.c”h´MŸhjn¹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å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: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žhjVh²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ýhjVh²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”…”�”}”(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_dentry”sbŒc.generic_fh_to_dentry”†”asbuh1hhjð¹h²hh³jºh´MÄubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4ºh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjð¹h²hh³jºh´MÄubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjBºh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjð¹h²hh³jºh´MÄubjC)�”}”(hŒgeneric_fh_to_dentry”h]”jI)�”}”(hj1ºh]”hŒgeneric_fh_to_dentry”…”�”}”(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 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”…”�”}”(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Œ 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”†”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Œsb”h]”hŒsb”…”�”}”(hjźh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjjºubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjfº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_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Œfid”h]”hŒfid”…”�”}”(hj5»h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÚºubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjfºubjC)�”}”(hŒ int fh_len”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjN»h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjJ»ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\»h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjJ»ubjI)�”}”(hŒfh_len”h]”hŒfh_len”…”�”}”(hjj»h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjJ»ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjfºubjC)�”}”(hŒ int fh_type”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjƒ»h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj»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`jauh1jBhjfº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Œ ”…”�”}”(hjô»h²hh³Nh´Nubah}”(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´»ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj¼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Œ)”…”�”}”(hj7¼h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj´»ubj“)�”}”(hj¦™h]”hŒ(”…”�”}”(hjD¼h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj´»ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjQ¼h²hh³Nh´Nubah}”(h]”h ]”j,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”…”�”}”(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.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“)�”}”(hj3š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Œ ”…”�”}”(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´»ubj“)�”}”(hj3š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Œ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Œ ”…”�”}”(hjJ½h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj´»ubjI)�”}”(hŒgen”h]”hŒgen”…”�”}”(hjX½h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj´»ubj“)�”}”(hjÏ™h]”hŒ)”…”�”}”(hjf½h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj´»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Œ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³jºh´MÄubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j§½jšj§½j›‰jœ‰j�‰uh1jh²hhjVh³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”…”�”}”(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Ð)�”}”(hjB¾h]”hŒ int fh_len”…”�”}”(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: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³jW¾h´MÇhjX¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj<¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jW¾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Ïhjy¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MÈhju¾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åhju¾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©)�”}”(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Œ½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”…”�”}”(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Œ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žhjVh²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ýhjVh²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”…”�”}”(hjX¿h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjT¿h²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´Mäubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjf¿h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjT¿h²hh³je¿h´Mä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)�”}”jŒgeneric_fh_to_parent”sbŒc.generic_fh_to_parent”†”asbuh1hhjT¿h²hh³je¿h´Mäubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜¿h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjT¿h²hh³je¿h´Mäubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj¦¿h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjT¿h²hh³je¿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`jauh1jBhjT¿h²hh³je¿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_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Œ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”…”�”}”(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Œ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”jbÀŒ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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj²Àh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj®À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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjçÀh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjãÀ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&]”uh1jHhj7Á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Œ ”…”�”}”(hjXÁ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Á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Á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_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Œsb”h]”hŒsb”…”�”}”(hj Âh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÁubj“)�”}”(hj3š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”…”�”}”(hj8Âh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj5Â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Œ ”…”�”}”(hjVÂh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÁubjI)�”}”(hŒino”h]”hŒino”…”�”}”(hjdÂh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÁubj“)�”}”(hj3šh]”hŒ,”…”�”}”(hjrÂ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Œ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”†”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<hjT¿h²hh³je¿h´Mäubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjP¿h²hh³je¿h´Mäubah}”(h]”jK¿ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³je¿h´MähjM¿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”…”�”}”(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&]”uh1jvhjM¿h²hh³je¿h´Mäubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j Ãjšj Ãj›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(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Ð)�”}”(hj4Ãh]”hŒstruct super_block *sb”…”�”}”(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: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”…”�”}”(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 fid *fid`` file handle to convert ”h]”(jÊ)�”}”(hŒ``struct fid *fid``”h]”jÐ)�”}”(hjmÃh]”hŒstruct fid *fid”…”�”}”(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:86: ./fs/libfs.c”h´MæhjgÃ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åhjgÃ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Ð)�”}”(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”…”�”}”(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é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³Œ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 _parent_ object specified in the file handle if it is specified in the file handle, or NULL otherwise.”h]”(hŒThis function decodes ”…”�”}”(hjiÄh²hh³Nh´Nubj©)�”}”(hŒ**fid**”h]”hŒfid”…”�”}”(hjqÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjiÄubhŒJ as long as it has one of the well-known Linux filehandle types and calls ”…”�”}”(hjiÄh²hh³Nh´Nubj©)�”}”(hŒ **get_inode**”h]”hŒ get_inode”…”�”}”(hjƒÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjiÄ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.”…”�”•}”(hjiÄ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žhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ!simple_fsync_noflush (C function)”Œc.simple_fsync_noflush”hNt”auh1hýhjVh²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj¼Äh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj¸Ä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”…”�”}”(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 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.simple_fsync_noflush”†”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Œfile”h]”hŒfile”…”�”}”(hjRÅh²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”…”�”}”(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 ]”j3ÅŒc.simple_fsync_noflush”†”asbuh1hhjgÅubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒÅh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjgÅubjI)�”}”(hŒstart”h]”hŒstart”…”�”}”(hjšÅh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjgÅ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 ]”j3ÅŒ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”…”�”}”(hjâÅh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¯Åubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjñÄubjC)�”}”(hŒ int datasync”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjûÅh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj÷Å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´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”…”�”}”(hjAÆ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™jYÆjšjYÆj›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(hjcÆh]”hŒ Parameters”…”�”}”(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: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´Mhj|Æ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´Mhj˜Æubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj|Æubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j—Æh´MhjyÆ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´MhjµÆ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´MhjÑÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjµÆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÐÆh´MhjyÆ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´M hjîÆubjæ)�”}”(hhh]”hÌ)�”}”(hŒend offset in bytes (inclusive)”h]”hŒend offset in bytes (inclusive)”…”�”}”(hj Çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j Çh´M hj Çubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjîÆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j Çh´M hjyÆ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”…”�”}”(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 hjyÆ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Œ‡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žhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œsimple_fsync (C function)”Œc.simple_fsync”hNt”auh1hýhjVh²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj­Çh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj©Ç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”…”�”}”(hjêÇh²hh³Nh´Nubah}”(h]”h ]”j,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.simple_fsync”†”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Œfile”h]”hŒfile”…”�”}”(hjCÈh²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”…”�”}”(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.simple_fsync”†”asbuh1hhjXÈubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}Èh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjXÈubjI)�”}”(hŒstart”h]”hŒstart”…”�”}”(hj‹Èh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjXÈ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.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`jauh1jBhjâÇubjC)�”}”(hŒ int datasync”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjìÈh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjèÈ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´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”…”�”}”(hj2É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™jJÉjšjJÉj›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(hjTÉh]”hŒ Parameters”…”�”}”(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:86: ./fs/libfs.c”h´M1hjNÉubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ*``struct file *file`` file to synchronize ”h]”(jÊ)�”}”(hŒ``struct file *file``”h]”jÐ)�”}”(hjsÉh]”hŒstruct file *file”…”�”}”(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:86: ./fs/libfs.c”h´M.hjmÉ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åhjmÉubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jˆÉh´M.hjjÉ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/hjjÉ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´M0hjßÉubjæ)�”}”(hhh]”hÌ)�”}”(hŒend offset in bytes (inclusive)”h]”hŒend offset in bytes (inclusive)”…”�”}”(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´M0hjjÉ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´M1hjÊubjæ)�”}”(hhh]”hÌ)�”}”(hŒ+only synchronize essential metadata if true”h]”hŒ+only synchronize essential metadata if true”…”�”}”(hj7Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j3Êh´M1hj4Êubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j3Êh´M1hjjÉubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjNÉ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³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M3hjNÉ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.”…”�”}”(hjoÊ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´M2hjNÉubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ&generic_check_addressable (C function)”Œc.generic_check_addressable”hNt”auh1hýhjVh²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjžÊh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjšÊh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MCubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­Êh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjšÊh²hh³j¬Êh´MCubjC)�”}”(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´MCubj=)�”}”(hŒ)(unsigned blocksize_bits, u64 num_blocks)”h]”(jC)�”}”(hŒunsigned blocksize_bits”h]”(jf)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÛÊh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj×Êubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjéÊh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj×ÊubjI)�”}”(hŒblocksize_bits”h]”hŒblocksize_bits”…”�”}”(hj÷Ê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”…”�”}”(hjËh²hh³Nh´Nubah}”(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_check_addressable”†”asbuh1hhj Ëubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3Ëh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj ËubjI)�”}”(hŒ num_blocks”h]”hŒ num_blocks”…”�”}”(hjAË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´MCubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj–Êh²hh³j¬Êh´MCubah}”(h]”j‘Êah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j¬Êh´MChj“Êh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ#Check addressability of file system”h]”hŒ#Check addressability of file system”…”�”}”(hjkË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´MChjhËh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj“Êh²hh³j¬Êh´MCubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jƒËjšjƒËj›‰jœ‰j�‰uh1jh²hhjVh³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´MGhj‡Ë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´MDhj¦Ë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´MDhjÂËubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¦Ëubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÁËh´MDhj£Ë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´MEhjßËubjæ)�”}”(hhh]”hÌ)�”}”(hŒnumber of blocks in file system”h]”hŒnumber of blocks in file system”…”�”}”(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£Ë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´MGhj‡Ë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 ”…”�”}”(hj6Ìh²hh³Nh´Nubj©)�”}”(hŒ**num_blocks**”h]”hŒ num_blocks”…”�”}”(hj>Ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj6Ì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.”…”�”}”(hj6Ì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´MFhj‡Ëubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œsimple_get_link (C function)”Œc.simple_get_link”hNt”auh1hýhjVh²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 )�”}”(hj¾h]”hŒconst”…”�”}”(hjwÌh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjsÌ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&]”uh1j1hjsÌh²hh³j„Ìh´M¡ubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj“Ìh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjsÌh²hh³j„Ìh´M¡ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡Ìh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjsÌh²hh³j„Ìh´M¡ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj¯Ìh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjsÌ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`jauh1jBhjsÌ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”…”�”}”(hjÜÌh²hh³Nh´Nubah}”(h]”h ]”j,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.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Œdentry”h]”hŒdentry”…”�”}”(hj5Í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”…”�”}”(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Œinode”h]”hŒinode”…”�”}”(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.simple_get_link”†”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Œinode”h]”hŒinode”…”�”}”(hj¥Íh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjJÍ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”…”�”}”(hjÜÍh²hh³Nh´Nubah}”(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_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Œdone”h]”hŒdone”…”�”}”(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<hjsÌh²hh³j„Ìh´M¡ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjoÌh²hh³j„Ìh´M¡ubah}”(h]”jjÌah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j„Ìh´M¡hjlÌ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&]”uh1jvhjlÌh²hh³j„Ìh´M¡ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jWÎjšjWÎj›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(hjaÎh]”hŒ Parameters”…”�”}”(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: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¢hjzÎ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åhjzÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j•Îh´M¢hjwÎ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£hjwÎubjÄ)�”}”(hŒ,``struct delayed_call *done`` not used here ”h]”(jÊ)�”}”(hŒ``struct delayed_call *done``”h]”jÐ)�”}”(hjòÎh]”hŒstruct delayed_call *done”…”�”}”(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¤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³Œ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.”…”�”}”(hjCÏ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©)�”}”(hjTÏh]”hŒReturn”…”�”}”(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:86: ./fs/libfs.c”h´M«hj[ÎubhÌ)�”}”(hŒthe symlink target”h]”hŒthe symlink target”…”�”}”(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¬hj[Îubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²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ýhjVh²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj™Ïh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj•Ï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_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´Mÿubj=)�”}”(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 )�”}”(hj¾h]”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_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”…”�”}”(hjJÐ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]”(jf)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjcÐh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj_Ðubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqÐh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj_Ðubjf)�”}”(hŒint”h]”hŒint”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj_Ð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 )�”}”(hj¾h]”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°Ðubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjÏÐh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj°Ðubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝÐh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj°Ðubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjëÐh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj°ÐubjI)�”}”(hŒstr”h]”hŒstr”…”�”}”(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 *name”h]”(j )�”}”(hj¾h]”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Œ ”…”�”}”(hj9Ñh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj Ñubh)�”}”(hhh]”jI)�”}”(hŒqstr”h]”hŒqstr”…”�”}”(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+ÐŒc.generic_ci_d_compare”†”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Œ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Œah"]”h$]”h&]”uh1j1hjÓh²hh³j'Óh´M7ubjC)�”}”(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&]”uh1jHhj6Óubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjÓh²hh³j'Óh´M7ubj=)�”}”(hŒ/(const struct dentry *dentry, struct qstr *str)”h]”(jC)�”}”(hŒconst struct dentry *dentry”h]”(j )�”}”(hj¾h]”hŒconst”…”�”}”(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Óubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjqÓ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 ]”j)�”}”jj<ÓsbŒc.generic_ci_d_hash”†”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Œstruct qstr *str”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.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Œstr”h]”hŒstr”…”�”}”(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´M7ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjÓh²hh³j'Óh´M7ubah}”(h]”j Óah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j'Óh´M7hjÓh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ9generic d_hash implementation for casefolding filesystems”h]”hŒ9generic d_hash implementation for casefolding filesystems”…”�”}”(hjdÔ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´M7hjaÔh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÓh²hh³j'Óh´M7ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j|Ôjšj|Ôj›‰jœ‰j�‰uh1jh²hhjVh³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´M8hjŸÔ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´M8hj»Ôubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjŸÔubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jºÔh´M8hjœÔubjÄ)�”}”(hŒ?``struct qstr *str`` qstr of name whose hash we should fill in ”h]”(jÊ)�”}”(hŒ``struct qstr *str``”h]”jÐ)�”}”(hjÞÔh]”hŒstruct qstr *str”…”�”}”(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´M9hjØÔubjæ)�”}”(hhh]”hÌ)�”}”(hŒ)qstr of name whose hash we should fill in”h]”hŒ)qstr of name whose hash we should fill in”…”�”}”(hj÷Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jóÔh´M9hjôÔubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjØÔubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jóÔh´M9hjœÔ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³Œ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žhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œgeneric_ci_match (C function)”Œc.generic_ci_match”hNt”auh1hýhjVh²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj^Õh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjZÕh²hh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´MWubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjmÕh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjZÕh²hh³jlÕh´MWubjC)�”}”(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`jauh1jBhjZÕh²hh³jlÕh´MWubj=)�”}”(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 )�”}”(hj¾h]”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Œ ”…”�”}”(hjôÕh²hh³Nh´Nubah}”(h]”h ]”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 struct qstr *name”h]”(j )�”}”(hj¾h]”hŒconst”…”�”}”(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$Öubj )�”}”(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Œqstr”h]”hŒqstr”…”�”}”(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.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 )�”}”(hj¾h]”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 ]”jðÕŒ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Œ 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 )�”}”(hj¾h]”hŒconst”…”�”}”(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Œu8”h]”hŒu8”…”�”}”(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_ci_match”†”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Œ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 ]”jðÕŒ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”…”�”}”(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´MWubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjVÕh²hh³jlÕh´MWubah}”(h]”jQÕah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jlÕh´MWhjSÕ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´MWhjØh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjSÕh²hh³jlÕh´MWubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jØjšjØj›‰jœ‰j�‰uh1jh²hhjVh³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[hj#Ø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Ð)�”}”(hjHØh]”hŒconst struct inode *parent”…”�”}”(hjJØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjFØubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´M[hjBØubjæ)�”}”(hhh]”hÌ)�”}”(hŒ2Inode of the parent of the dirent under comparison”h]”hŒ2Inode of the parent of the dirent under comparison”…”�”}”(hjaØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j]Øh´M[hj^Øubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjBØ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Ð)�”}”(hjóØh]”hŒconst u8 *de_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Œ Dirent name.”h]”hŒ Dirent 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Œ(``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´M_hj&Ùubjæ)�”}”(hhh]”hÌ)�”}”(hŒdirent name length.”h]”hŒdirent name length.”…”�”}”(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?Øubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj#ØubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjgÙh]”hŒ Description”…”�”}”(hjiÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjeÙubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:86: ./fs/libfs.c”h´Mahj#Ø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´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´Mdhj#Ø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´Mehj#Øubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²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ýhjVh²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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj÷Ùh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjóÙ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_set_sb_d_ops”h]”jI)�”}”(hŒgeneric_set_sb_d_ops”h]”hŒgeneric_set_sb_d_ops”…”�”}”(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”…”�”}”(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Œ super_block”h]”hŒ super_block”…”�”}”(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.generic_set_sb_d_ops”†”asbuh1hhj0Úubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrÚ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Œsb”h]”hŒsb”…”�”}”(hj�Úh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj0Ú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Œ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&]”uh1jvhjìÙh²hh³jÚh´M¨ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÏÚjšjÏÚj›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(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Œ7``struct super_block *sb`` superblock to be configured ”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Œsuperblock to be configured”h]”hŒsuperblock to be configured”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hË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©)�”}”(hj3Ûh]”hŒ Description”…”�”}”(hj5Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj1Û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.”…”�”•}”(hjIÛ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žhjVh²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ýhjVh²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]”(jf)�”}”(hjih]”hŒbool”…”�”}”(hjxÛh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjtÛ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&]”uh1j1hjtÛ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`jauh1jBhjtÛ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Œ ”…”�”}”(hjòÛh²hh³Nh´Nubah}”(h]”h ]”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Œ bool force”h]”(jf)�”}”(hjih]”hŒbool”…”�”}”(hj&Üh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj"Üubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3Üh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj"ÜubjI)�”}”(hŒforce”h]”hŒforce”…”�”}”(hjAÜ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Œincrements i_version”h]”hŒincrements i_version”…”�”}”(hjkÜ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ÄhjhÜ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²hhjVh³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ÆhjßÜubjæ)�”}”(hhh]”hÌ)�”}”(hŒ1increment the counter even if it's not necessary?”h]”hŒ3increment the counter even if it’s not necessary?”…”�”}”(hjþÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hË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Ì)�”}”(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.”…”�”}”(hj6Ý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.”…”�”}”(hjEÝ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.”…”�”}”(hjTÝ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.”…”�”}”(hjcÝ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žhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ!inode_query_iversion (C function)”Œc.inode_query_iversion”hNt”auh1hýhjVh²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&]”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_query_iversion”†”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]”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”…”�”}”(hjeÞ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÷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²hhjVh³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©)�”}”(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Œò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.”…”�”}”(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 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´Mþhj�Þubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²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ýhjVh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒah"]”h$]”h&]”uh1j1hj1ßh²hh³jBßh´MGubh)�”}”(hhh]”jI)�”}”(hŒ timespec64”h]”hŒ timespec64”…”�”}”(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)�”}”jŒsimple_inode_init_ts”sbŒc.simple_inode_init_ts”†”asbuh1hhj1ßh²hh³jBßh´MGubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjußh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj1ßh²hh³jBßh´MGubjC)�”}”(hŒsimple_inode_init_ts”h]”jI)�”}”(hjrß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`jauh1jBhj1ßh²hh³jBßh´MGubj=)�”}”(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 ]”jpߌc.simple_inode_init_ts”†”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<hj1ßh²hh³jBßh´MGubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj-ßh²hh³jBßh´MGubah}”(h]”j(ßah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jBßh´MGhj*ßh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ)initialize the timestamps for a new inode”h]”hŒ)initialize the timestamps for a new inode”…”�”}”(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´MGhj àh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj*ßh²hh³jBßh´MGubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j;àjšj;àj›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(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:86: ./fs/libfs.c”h´MKhj?àubj¿)�”}”(hhh]”jÄ)�”}”(hŒ0``struct inode *inode`` inode to be initialized ”h]”(jÊ)�”}”(hŒ``struct inode *inode``”h]”jÐ)�”}”(hjdàh]”hŒstruct inode *inode”…”�”}”(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:86: ./fs/libfs.c”h´MHhj^à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³jyàh´MHhjzàubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj^àubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jyà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:86: ./fs/libfs.c”h´MJhj?à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´MIhj?àubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ"simple_start_creating (C function)”Œc.simple_start_creating”hNt”auh1hýhjVh²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&]”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Œsimple_start_creating”sbŒc.simple_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Œ*”…”�”}”(hj2áh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjààh²hh³jñàh´MòubjC)�”}”(hŒsimple_start_creating”h]”jI)�”}”(hj!áh]”hŒsimple_start_creating”…”�”}”(hjCá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, 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&]”uh1jhjZáubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjká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&]”uh1jHhjyáubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j~áŒmodname”NŒ classname”Njj )�”}”j ]”jáŒc.simple_start_creating”†”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`jauh1jBhjVáubjC)�”}”(hŒconst char *name”h]”(j )�”}”(hj¾h]”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Êáubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjéáh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÊáubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷áh²hh³Nh´Nubah}”(h]”h ]”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`jauh1jBhjVá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”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òhj9âh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÙàh²hh³jñàh´Mòubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jTâjšjTâj›‰jœ‰j�‰uh1jh²hhjVh³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öhjXâ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ó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”…”�”}”(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Œ,``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ôhjtâ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:86: ./fs/libfs.c”h´MöhjXâ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õhjXâ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øhjXâ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ùhjXâubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œposix_acl_chmod (C function)”Œc.posix_acl_chmod”hNt”auh1hýhjVh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒSint posix_acl_chmod (struct mnt_idmap *idmap, struct dentry *dentry, umode_t mode)”h]”j)�”}”(hŒQint posix_acl_chmod(struct mnt_idmap *idmap, struct dentry *dentry, umode_t mode)”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj]ãh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjYãh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´MVubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjlãh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjYãh²hh³jkã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&]”uh1jHhjzãubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjYãh²hh³jkãh´MVubj=)�”}”(hŒ>(struct mnt_idmap *idmap, struct dentry *dentry, umode_t mode)”h]”(jC)�”}”(hŒstruct mnt_idmap *idmap”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Œ 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Œ ”…”�”}”(hjØãh²hh³Nh´Nubah}”(h]”h ]”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.posix_acl_chmod”†”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Œdentry”h]”hŒdentry”…”�”}”(hjcä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.posix_acl_chmod”†”asbuh1hhjxäubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�äh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjxäubjI)�”}”(hŒmode”h]”hŒmode”…”�”}”(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<hjYãh²hh³jkãh´MVubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjUãh²hh³jkãh´MVubah}”(h]”jPãah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jkãh´MVhjRãh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒchmod a posix acl”h]”hŒchmod a posix 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´MVhjÒäh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjRãh²hh³jkãh´MVubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jíäjšjíäj›‰jœ‰j�‰uh1jh²hhjVh³Nh´NubjŸ)�”}”(hX#**Parameters** ``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©)�”}”(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´MZhjñäubj¿)�”}”(hhh]”(jÄ)�”}”(hŒH``struct mnt_idmap *idmap`` idmap of the mount **inode** was found from ”h]”(jÊ)�”}”(hŒ``struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjåh]”hŒ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”…”�”}”(hj7å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Ð)�”}”(hjaåh]”hŒstruct dentry *dentry”…”�”}”(hjcå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”…”�”}”(hjzåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jvåh´MYhjwåubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj[åubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jvå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¾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Ì)�”}”(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 ”…”�”}”(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³Œ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žhjVh²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ýhjVh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒqint posix_acl_update_mode (struct mnt_idmap *idmap, struct inode *inode, umode_t *mode_p, struct posix_acl **acl)”h]”j)�”}”(hŒpint posix_acl_update_mode(struct mnt_idmap *idmap, struct inode *inode, umode_t *mode_p, struct posix_acl **acl)”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj^æh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjZæh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´M³ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjmæh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjZæh²hh³jlæ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`jauh1jBhjZæh²hh³jlæh´M³ubj=)�”}”(hŒW(struct mnt_idmap *idmap, struct inode *inode, umode_t *mode_p, struct posix_acl **acl)”h]”(jC)�”}”(hŒstruct mnt_idmap *idmap”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Œ 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_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Œ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 ]”jÕæŒc.posix_acl_update_mode”†”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Œ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 ]”jÕæŒc.posix_acl_update_mode”†”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Œmode_p”h]”hŒmode_p”…”�”}”(hj¹çh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjyç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Œ ”…”�”}”(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.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”…”�”}”(hj6è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´M³ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjVæh²hh³jlæh´M³ubah}”(h]”jQæah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jlæh´M³hjSæ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&]”uh1jvhjSæh²hh³jlæh´M³ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jxèjšjxèj›‰jœ‰j�‰uh1jh²hhjVh³Nh´NubjŸ)�”}”(hX»**Parameters** ``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ŒH``struct mnt_idmap *idmap`` idmap of the mount **inode** was found from ”h]”(jÊ)�”}”(hŒ``struct mnt_idmap *idmap``”h]”jÐ)�”}”(hj¡èh]”hŒ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 **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´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`` target 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³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´Mµhjæè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åhjæè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·hjXéubjæ)�”}”(hhh]”hÌ)�”}”(hŒ acl pointer”h]”hŒ acl pointer”…”�”}”(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|è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”…”�”}”(hj·éh²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 ”…”�”}”(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³Œ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žhjVh²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ýhjVh²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”…”�”}”(hjSêh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjOêh²hh³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.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Œ posix_acl”h]”hŒ posix_acl”…”�”}”(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Œposix_acl_from_xattr”sbŒc.posix_acl_from_xattr”†”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Œposix_acl_from_xattr”h]”jI)�”}”(hj�êh]”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`jauh1jBhjOê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”…”�”}”(hjÍêh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÉêubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚêh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÉêubh)�”}”(hhh]”jI)�”}”(hŒuser_namespace”h]”hŒuser_namespace”…”�”}”(hjëêh²hh³Nh´Nubah}”(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Œ ”…”�”}”(hj ëh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÉêubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjÉêubjI)�”}”(hŒuserns”h]”hŒuserns”…”�”}”(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 )�”}”(hj¾h]”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ëubjf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjXëh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj9ëubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfëh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj9ëubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjtëh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj9ëubjI)�”}”(hŒvalue”h]”hŒvalue”…”�”}”(hj�ëh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj9ë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.posix_acl_from_xattr”†”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<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Œ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&]”uh1jvhjHêh²hh³j`êh´Móubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j ìjšj ìj›‰jœ‰j�‰uh1jh²hhjVh³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Ð)�”}”(hj4ìh]”hŒstruct user_namespace *userns”…”�”}”(hj6ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj2ì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”…”�”}”(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Œ<``const void *value`` the uapi representation of POSIX ACLs ”h]”(jÊ)�”}”(hŒ``const void *value``”h]”jÐ)�”}”(hjmìh]”hŒconst void *value”…”�”}”(hjoìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjkì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õhjgìubjæ)�”}”(hhh]”hÌ)�”}”(hŒ%the uapi representation of POSIX ACLs”h]”hŒ%the uapi representation of 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åhjgìubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j‚ìh´Mõhj+ìubjÄ)�”}”(hŒ%``size_t size`` the size of **void** ”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³Œ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 ”…”�”}”(hj¿ìh²hh³Nh´Nubj©)�”}”(hŒ**void**”h]”hŒvoid”…”�”}”(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³Œ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.”…”�”}”(hj5í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©)�”}”(hjFíh]”hŒReturn”…”�”}”(hjHíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjDí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žhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œvfs_set_acl (C function)”Œ c.vfs_set_acl”hNt”auh1hýhjVh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒnint vfs_set_acl (struct mnt_idmap *idmap, struct dentry *dentry, const char *acl_name, struct posix_acl *kacl)”h]”j)�”}”(hŒmint vfs_set_acl(struct mnt_idmap *idmap, struct dentry *dentry, const char *acl_name, struct posix_acl *kacl)”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj‹íh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj‡í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Œ vfs_set_acl”h]”jI)�”}”(hŒ vfs_set_acl”h]”hŒ vfs_set_acl”…”�”}”(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 mnt_idmap *idmap, struct dentry *dentry, const char *acl_name, struct posix_acl *kacl)”h]”(jC)�”}”(hŒstruct mnt_idmap *idmap”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Œ 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”†”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&]”uh1jhj6îubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGîh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj6îubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(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.vfs_set_acl”†”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Œdentry”h]”hŒdentry”…”�”}”(hj‘îh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj6îubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÀíubjC)�”}”(hŒconst char *acl_name”h]”(j )�”}”(hj¾h]”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¦îubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjÅîh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj¦îubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓîh²hh³Nh´Nubah}”(h]”h ]”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ÀíubjC)�”}”(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Œ ”…”�”}”(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Œkacl”h]”hŒkacl”…”�”}”(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 posix acls”h]”hŒset 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²hhjVh³Nh´NubjŸ)�”}”(hX±**Parameters** ``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©)�”}”(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 mnt_idmap *idmap`` idmap of the mount ”h]”(jÊ)�”}”(hŒ``struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjÉïh]”hŒ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ŒJ``struct dentry *dentry`` the dentry based on which to set the posix acls ”h]”(jÊ)�”}”(hŒ``struct dentry *dentry``”•Sh]”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=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Ïhj9ð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>hj5ðubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe name of the posix acl”h]”hŒthe name of the posix acl”…”�”}”(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ŒH``struct posix_acl *kacl`` the posix acls in the appropriate VFS format ”h]”(jÊ)�”}”(hŒ``struct posix_acl *kacl``”h]”jÐ)�”}”(hjtðh]”hŒstruct posix_acl *kacl”…”�”}”(hjvðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjrð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?hjnðubjæ)�”}”(hhh]”hÌ)�”}”(hŒ,the posix acls in the appropriate VFS format”h]”hŒ,the posix acls in the appropriate VFS format”…”�”}”(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³ŒV/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:89: ./fs/posix_acl.c”h´MAhj¤ïubhÌ)�”}”(hŒ\This function sets **kacl**. The caller must all posix_acl_release() on **kacl** afterwards.”h]”(hŒThis function sets ”…”�”}”(hjÅðh²hh³Nh´Nubj©)�”}”(hŒ**kacl**”h]”hŒkacl”…”�”}”(hjÍðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÅðubhŒ-. 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Œ afterwards.”…”�”}”(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´MChj¤ïubhÌ)�”}”(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´MDhj¤ïubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œvfs_get_acl (C function)”Œ c.vfs_get_acl”hNt”auh1hýhjVh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒestruct posix_acl * vfs_get_acl (struct mnt_idmap *idmap, struct dentry *dentry, const char *acl_name)”h]”j)�”}”(hŒcstruct posix_acl *vfs_get_acl(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Œ ”…”�”}”(hjMñh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj;ñh²hh³jLñ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Œ vfs_get_acl”sbŒ c.vfs_get_acl”†”asbuh1hhj;ñh²hh³jLñh´M‰ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj;ñh²hh³jLñh´M‰ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj�ñh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj;ñh²hh³jLñh´M‰ubjC)�”}”(hŒ vfs_get_acl”h]”jI)�”}”(hj|ñh]”hŒ vfs_get_acl”…”�”}”(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´M‰ubj=)�”}”(hŒF(struct mnt_idmap *idmap, struct dentry *dentry, const char *acl_name)”h]”(jC)�”}”(hŒstruct mnt_idmap *idmap”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Œ 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 ]”jzñŒ 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`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Œ ”…”�”}”(hj6òh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj%òubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(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 ]”jzñŒ c.vfs_get_acl”†”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Œ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 *acl_name”h]”(j )�”}”(hj¾h]”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•òubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj´òh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj•òubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂòh²hh³Nh´Nubah}”(h]”h ]”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<hj;ñh²hh³jLñh´M‰ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj7ñh²hh³jLñh´M‰ubah}”(h]”j2ñah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jLñh´M‰hj4ñ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&]”uh1jvhj4ñh²hh³jLñh´M‰ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jójšjój›‰jœ‰j�‰uh1jh²hhjVh³Nh´NubjŸ)�”}”(hX�**Parameters** ``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Œ/``struct mnt_idmap *idmap`` idmap of the mount ”h]”(jÊ)�”}”(hŒ``struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjHóh]”hŒstruct mnt_idmap *idmap”…”�”}”(hjJóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjFó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ŠhjBóubjæ)�”}”(hhh]”hÌ)�”}”(hŒidmap of the mount”h]”hŒidmap of the mount”…”�”}”(hjaóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j]óh´MŠhj^óubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjBó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Ð)�”}”(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Œ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åhj{ó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Œ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”…”�”}”(hjBô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.”…”�”}”(hjVô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žhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œvfs_remove_acl (C function)”Œc.vfs_remove_acl”hNt”auh1hýhjVh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒYint vfs_remove_acl (struct mnt_idmap *idmap, struct dentry *dentry, const char *acl_name)”h]”j)�”}”(hŒXint vfs_remove_acl(struct mnt_idmap *idmap, struct dentry *dentry, const char *acl_name)”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj…ôh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj�ô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Œvfs_remove_acl”h]”jI)�”}”(hŒvfs_remove_acl”h]”hŒvfs_remove_acl”…”�”}”(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 mnt_idmap *idmap, struct dentry *dentry, const char *acl_name)”h]”(jC)�”}”(hŒstruct mnt_idmap *idmap”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Œ 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_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”…”�”}”(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Œ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.vfs_remove_acl”†”asbuh1hhj0õubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjpõ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Œdentry”h]”hŒdentry”…”�”}”(hj‹õh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj0õubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjºôubjC)�”}”(hŒconst char *acl_name”h]”(j )�”}”(hj¾h]”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 õubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj¿õh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj õubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍõh²hh³Nh´Nubah}”(h]”h ]”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<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Œ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&]”uh1jvhjzôh²hh³j“ôh´M¶ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j*öjšj*öj›‰jœ‰j�‰uh1jh²hhjVh³Nh´NubjŸ)�”}”(hX0**Parameters** ``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©)�”}”(hj4öh]”hŒ Parameters”…”�”}”(hj6öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj2ö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 mnt_idmap *idmap`` idmap of the mount ”h]”(jÊ)�”}”(hŒ``struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjSöh]”hŒstruct mnt_idmap *idmap”…”�”}”(hjUöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjQö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·hjMö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åhjMöubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jhöh´M·hjJöubjÄ)�”}”(hŒO``struct dentry *dentry`` the dentry based on which to retrieve 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Œ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åhj†öubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¡öh´M¸hjJö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¹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³Œ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©)�”}”(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 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´M½hj.öubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œfill_mg_cmtime (C function)”Œc.fill_mg_cmtime”hNt”auh1hýhjVh²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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjl÷h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjh÷h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´K ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{÷h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjh÷h²hh³jz÷h´K ubjC)�”}”(hŒfill_mg_cmtime”h]”jI)�”}”(hŒfill_mg_cmtime”h]”hŒfill_mg_cmtime”…”�”}”(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´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)�”}”jj�÷sbŒ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`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.fill_mg_cmtime”†”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”…”�”}”(hjJø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”…”�”}”(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Œ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.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`jauh1jBhj¡÷ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjh÷h²hh³jz÷h´K ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjd÷h²hh³jz÷h´K ubah}”(h]”j_÷ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jz÷h´K hja÷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&]”uh1jvhja÷h²hh³jz÷h´K ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jüøjšjüøj›‰jœ‰j�‰uh1jh²hhjVh³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Ð)�”}”(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 store the resulting values”h]”hŒ#where to store the resulting values”…”�”}”(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Œ.``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"hjXùubjæ)�”}”(hhh]”hÌ)�”}”(hŒSTATX_* values requested”h]”hŒSTATX_* values requested”…”�”}”(hjwùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jsùh´K"hjtùubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjXùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jsùh´K"hjùubjÄ)�”}”(hŒ=``struct inode *inode`` inode from which to grab the c/mtime ”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´K#hj‘ùubjæ)�”}”(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å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ŒÆ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žhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œgeneric_fillattr (C function)”Œc.generic_fillattr”hNt”auh1hýhjVh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒjvoid generic_fillattr (struct mnt_idmap *idmap, u32 request_mask, struct inode *inode, struct kstat *stat)”h]”j)�”}”(hŒivoid generic_fillattr(struct mnt_idmap *idmap, u32 request_mask, struct inode *inode, struct kstat *stat)”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjJúh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjFúh²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´KBubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYúh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjFúh²hh³jXúh´KBubjC)�”}”(hŒgeneric_fillattr”h]”jI)�”}”(hŒgeneric_fillattr”h]”hŒgeneric_fillattr”…”�”}”(hjkúh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjgúubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjFúh²hh³jXúh´KBubj=)�”}”(hŒT(struct mnt_idmap *idmap, u32 request_mask, struct inode *inode, struct kstat *stat)”h]”(jC)�”}”(hŒstruct mnt_idmap *idmap”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Œ 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)�”}”jjmúsbŒ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Œ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Œ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Œ ”…”�”}”(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`jauh1jBhjúubjC)�”}”(hŒstruct inode *inode”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Œ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.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Œ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 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”…”�”}”(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<hjFúh²hh³jXúh´KBubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjBúh²hh³jXúh´KBubah}”(h]”j=úah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jXúh´KBhj?úh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ2Fill in the basic attributes from the inode struct”h]”hŒ2Fill in the basic attributes from the inode struct”…”�”}”(hj2ü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&]”uh1jvhj?úh²hh³jXúh´KBubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jJüjšjJüj›‰jœ‰j�‰uh1jh²hhjVh³Nh´NubjŸ)�”}”(hX **Parameters** ``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©)�”}”(hjTüh]”hŒ Parameters”…”�”}”(hjVüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjRüubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´KFhjNüubj¿)�”}”(hhh]”(jÄ)�”}”(hŒH``struct mnt_idmap *idmap`` idmap of the mount the inode was found from ”h]”(jÊ)�”}”(hŒ``struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjsüh]”hŒstruct mnt_idmap *idmap”…”�”}”(hjuüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjqüubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´KChjmü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´KChj‰üubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjmüubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jˆüh´KChjjüubjÄ)�”}”(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´KDhjjüubjÄ)�”}”(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´KEhjjüubjÄ)�”}”(hŒ7``struct kstat *stat`` Where to fill in the attributes ”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´KFhjýubjæ)�”}”(hhh]”hÌ)�”}”(hŒWhere to fill in the attributes”h]”hŒWhere to fill in the attributes”…”�”}”(hj7ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j3ýh´KFhj4ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjýubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j3ýh´KFhjjüubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjNü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³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´KHhjNüubhÌ)�”}”(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.”…”�”}”(hjoý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´KGhjNüubhÌ)�”}”(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 ”…”�”}”(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 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 ”…”�”}”(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:92: ./fs/stat.c”h´KKhjNüubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²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ýhjVh²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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjãýh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjßý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”…”�”}”(hj þh²hh³Nh´Nubah}”(h]”h ]”j,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_fill_statx_attr”†”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Œinode”h]”hŒinode”…”�”}”(hjyþh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjþubeh}”(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 ]”jZþŒ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`jauh1jBhjþubeh}”(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²hhjVh³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©)�”}”(hj5ÿh]”hŒ Parameters”…”�”}”(hj7ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj3ÿ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Ð)�”}”(hjTÿh]”hŒstruct inode *inode”…”�”}”(hjVÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjRÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´KvhjNÿubjæ)�”}”(hhh]”hÌ)�”}”(hŒInode to use as the source”h]”hŒInode to use as the source”…”�”}”(hjmÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jiÿh´Kvhjjÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjNÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jiÿh´KvhjKÿubjÄ)�”}”(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´KwhjKÿ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´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žhjVh²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ýhjVh²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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj h²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&]”uh1j1hj h²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`jauh1jBhj h²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”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjFubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjFubh)�”}”(hhh]”jI)�”}”(hŒkstat”h]”hŒkstat”…”�”}”(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)�”}”jj0sbŒ"c.generic_fill_statx_atomic_writes”†”asbuh1hhjFubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjFubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjFubjI)�”}”(hŒstat”h]”hŒstat”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjFubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjBubjC)�”}”(hŒunsigned int unit_min”h]”(jf)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj¸ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¸ubjf)�”}”(hŒint”h]”hŒint”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj¸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`jauh1jBhjBubjC)�”}”(hŒunsigned int unit_max”h]”(jf)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj ubjf)�”}”(hŒint”h]”hŒint”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj ubjI)�”}”(hŒunit_max”h]”hŒunit_max”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjBubjC)�”}”(hŒunsigned int unit_max_opt”h]”(jf)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjZubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjZubjf)�”}”(hŒint”h]”hŒint”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjZubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjZubjI)�”}”(hŒ unit_max_opt”h]”hŒ unit_max_opt”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjZubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjBubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj h²hh³jh´K‡ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjh²hh³jh´K‡ubah}”(h]”jah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jh´K‡hjh²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&]”uh1jvhjh²hh³jh´K‡ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jØjšjØj›‰jœ‰j�‰uh1jh²hhjVh³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Ð)�”}”(hjh]”hŒstruct kstat *stat”…”�”}”(hjh²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Ð)�”}”(hj:h]”hŒunsigned int unit_min”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´K‰hj4ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ.Minimum supported atomic write length in bytes”h]”hŒ.Minimum supported atomic write length in bytes”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jOh´K‰hjPubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jOh´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Ð)�”}”(hjsh]”hŒunsigned int unit_max”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjqubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´KŠhjmubjæ)�”}”(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åhjmubeh}”(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žhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œvfs_getattr_nosec (C function)”Œc.vfs_getattr_nosec”hNt”auh1hýhjVh²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj(h²hh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.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_getattr_nosec”h]”jI)�”}”(hŒvfs_getattr_nosec”h]”hŒvfs_getattr_nosec”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjIubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj(h²hh³j:h´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 )�”}”(hj¾h]”hŒconst”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjeubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjeubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjeubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjeubh)�”}”(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)�”}”jjOsbŒc.vfs_getattr_nosec”†”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Œpath”h]”hŒpath”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjeubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjaubjC)�”}”(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Œ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjòubh)�”}”(hhh]”jI)�”}”(hŒkstat”h]”hŒkstat”…”�”}”(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.vfs_getattr_nosec”†”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Œstat”h]”hŒstat”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjòubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjaubjC)�”}”(hŒu32 request_mask”h]”(h)�”}”(hhh]”jI)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjfubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jkŒmodname”NŒ classname”Njj )�”}”j ]”j¾Œc.vfs_getattr_nosec”†”asbuh1hhjbubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjbubjI)�”}”(hŒ request_mask”h]”hŒ request_mask”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjbubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjaubjC)�”}”(hŒunsigned int query_flags”h]”(jf)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjªubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjªubjf)�”}”(hŒint”h]”hŒint”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjª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`jauh1jBhjaubeh}”(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]”jah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j:h´K©hj!h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒgetattr without security checks”h]”hŒgetattr without security checks”…”�”}”(hjh²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³j:h´K©ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j(jšj(j›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(hj2h]”hŒ Parameters”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj0ubah}”(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Ð)�”}”(hjQh]”hŒconst struct path *path”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjOubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:92: ./fs/stat.c”h´KªhjKubjæ)�”}”(hhh]”hÌ)�”}”(hŒfile to get attributes from”h]”hŒfile to get attributes from”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jfh´Kªhjgubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjKubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jfh´KªhjHubjÄ)�”}”(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«hjHubjÄ)�”}”(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¬hjHubjÄ)�”}”(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³jh´K­hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjöubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jh´K­hjHubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj,ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj7h]”hŒ Description”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj5ubah}”(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.”…”�”}”(hjMh²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.”…”�”•}”(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žhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œvfs_fsync_range (C function)”Œc.vfs_fsync_range”hNt”auh1hýhjVh²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj‡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Œ ”…”�”}”(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Œ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Œ 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.vfs_fsync_range”†”asbuh1hhj6ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj6ubjI)�”}”(hŒstart”h]”hŒstart”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj6ubeh}”(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”†”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`jauh1jBhjÀubjC)�”}”(hŒ int datasync”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÆ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]”j~ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j™h´K¨hj€h²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”…”�”}”(hjh²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²hhjVh³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©)�”}”(hj2h]”hŒ Parameters”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj0ubah}”(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Ð)�”}”(hjQh]”hŒstruct file *file”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjOubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒQ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:95: ./fs/sync.c”h´K©hjKubjæ)�”}”(hhh]”hÌ)�”}”(hŒ file to sync”h]”hŒ file to sync”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jfh´K©hjgubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjKubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jfh´K©hjHubjÄ)�”}”(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ªhjHubjÄ)�”}”(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«hjHubjÄ)�”}”(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¬hjHubeh}”(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³Œ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 ”…”�”}”(hjM h²hh³Nh´Nubj©)�”}”(hŒ **start**”h]”hŒstart”…”�”}”(hjU h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjM ubhŒ..**end** and metadata for ”…”�”}”(hjM h²hh³Nh´Nubj©)�”}”(hŒ**file**”h]”hŒfile”…”�”}”(hjg h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjM ubhŒ to disk. If ”…”�”}”(hjM h²hh³Nh´Nubj©)�”}”(hŒ **datasync**”h]”hŒdatasync”…”�”}”(hjy h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjM ubhŒE is set only metadata needed to access modified file data is written.”…”�”}”(hjM 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žhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œvfs_fsync (C function)”Œ c.vfs_fsync”hNt”auh1hýhjVh²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj² h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj® 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Œ*”…”�”}”(hj; h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjë ubjI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjH h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjë ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjç ubjC)�”}”(hŒ int datasync”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hja h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj] ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjo 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]”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²hhjVh³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”…”�”}”(hj: h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j6 h´KÁhj7 ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j6 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¨hjZ 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 ”…”�”}”(hjr h²hh³Nh´Nubj©)�”}”(hŒ**file**”h]”hŒfile”…”�”}”(hjz h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjr ubhŒ to disk. If ”…”�”}”(hjr h²hh³Nh´Nubj©)�”}”(hŒ **datasync**”h]”hŒdatasync”…”�”}”(hjŒ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjr ubhŒE is set only metadata needed to access modified file data is written.”…”�”}”(hjr 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žhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ"__vfs_setxattr_locked (C function)”Œc.__vfs_setxattr_locked”hNt”auh1hýhjVh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ°int __vfs_setxattr_locked (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(struct mnt_idmap *idmap, struct dentry *dentry, const char *name, const void *value, size_t size, int flags, struct delegated_inode *delegated_inode)”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjÅ h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÁ 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Œ–(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Œstruct mnt_idmap *idmap”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Œ 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_setxattr_locked”†”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Œ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”…”�”}”(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 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_setxattr_locked”†”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Œdentry”h]”hŒdentry”…”�”}”(hjË h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjp ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjú ubjC)�”}”(hŒconst char *name”h]”(j )�”}”(hj¾h]”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à ubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjÿ h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjà ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”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 )�”}”(hj¾h]”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= ubjf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj\ h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj= 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Œvalue”h]”hŒvalue”…”�”}”(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_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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjæ h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjâ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjô h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjâ ubjI)�”}”(hŒflags”h]”hŒflags”…”�”}”(hjh²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”…”�”}”(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Œdelegated_inode”h]”hŒdelegated_inode”…”�”}”(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< Œc.__vfs_setxattr_locked”†”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Œdelegated_inode”h]”hŒdelegated_inode”…”�”}”(hjrh²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<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²hhjVh³Nh´NubjŸ)�”}”(hXÓ**Parameters** ``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ŒC``struct mnt_idmap *idmap`` idmap of the mount of the target inode ”h]”(jÊ)�”}”(hŒ``struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjÝh]”hŒ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Ð)�”}”(hjh]”hŒstruct dentry *dentry”…”�”}”(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:98: ./fs/xattr.c”h´M!hjubjæ)�”}”(hhh]”hÌ)�”}”(hŒobject to perform setxattr on”h]”hŒobject to perform setxattr on”…”�”}”(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!hjÔubjÄ)�”}”(hŒ'``const char *name`` xattr name to set ”h]”(jÊ)�”}”(hŒ``const char *name``”h]”jÐ)�”}”(hjOh]”hŒconst char *name”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjMubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:98: ./fs/xattr.c”h´M"hjIubjæ)�”}”(hhh]”hÌ)�”}”(hŒxattr name to set”h]”hŒxattr name to set”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jdh´M"hjeubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjIubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jdh´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Ð)�”}”(hjh]”hŒ int flags”…”�”}”(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:98: ./fs/xattr.c”h´M%hjubjæ)�”}”(hhh]”hÌ)�”}”(hŒ(flags to pass into filesystem operations”h]”hŒ(flags to pass into filesystem operations”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j/h´M%hj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjubeh}”(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Ð)�”}”(hjSh]”hŒ'struct delegated_inode *delegated_inode”…”�”}”(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:98: ./fs/xattr.c”h´M&hjMubjæ)�”}”(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.”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jhh´M&hjiubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjMubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jhh´M&hjÔubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj¸ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œvfs_listxattr (C function)”Œc.vfs_listxattr”hNt”auh1hýhjVh²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”…”�”}”(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.vfs_listxattr”†”asbuh1hhjúubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjúubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjúubjI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjúubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjöubjC)�”}”(hŒ char *list”h]”(jf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjjubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjjubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjjubjI)�”}”(hŒlist”h]”hŒlist”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjjubeh}”(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ähjh²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²hhjVh³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”…”�”}”(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ŒT``struct dentry *dentry`` the dentry from whose inode the xattr names are retrieved ”h]”(jÊ)�”}”(hŒ``struct dentry *dentry``”h]”jÐ)�”}”(hjJh]”hŒstruct dentry *dentry”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjHubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:98: ./fs/xattr.c”h´MåhjDubjæ)�”}”(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”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j_h´Måhj`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjDubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j_h´MåhjAubjÄ)�”}”(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æhjAubjÄ)�”}”(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çhjAubeh}”(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:98: ./fs/xattr.c”h´Méhj%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”…”�”}”(hjh²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èhj%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.”…”�”}”(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%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.”…”�”}”(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%ubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hjNh]”hŒReturn”…”�”}”(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:98: ./fs/xattr.c”h´Mõhj%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.”…”�”}”(hjdh²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%ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ%__vfs_removexattr_locked (C function)”Œc.__vfs_removexattr_locked”hNt”auh1hýhjVh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒˆint __vfs_removexattr_locked (struct mnt_idmap *idmap, struct dentry *dentry, const char *name, struct delegated_inode *delegated_inode)”h]”j)�”}”(hŒ‡int __vfs_removexattr_locked(struct mnt_idmap *idmap, struct dentry *dentry, const char *name, struct delegated_inode *delegated_inode)”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj�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Œk(struct mnt_idmap *idmap, struct dentry *dentry, const char *name, struct delegated_inode *delegated_inode)”h]”(jC)�”}”(hŒstruct mnt_idmap *idmap”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Œ 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Œ ”…”�”}”(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Œ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”…”�”}”(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Œ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.__vfs_removexattr_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 )�”}”(hj¾h]”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®ubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj®ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”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”…”�”}”(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Œ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_removexattr_locked”†”asbuh1hhj ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj ubjI)�”}”(hŒdelegated_inode”h]”hŒdelegated_inode”…”�”}”(hjfh²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²hhjVh³Nh´NubjŸ)�”}”(hXH**Parameters** ``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ŒC``struct mnt_idmap *idmap`` idmap of the mount of the target inode ”h]”(jÊ)�”}”(hŒ``struct mnt_idmap *idmap``”h]”jÐ)�”}”(hjÑh]”hŒ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Ïhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:98: ./fs/xattr.c”h´M*hjubjæ)�”}”(hhh]”hÌ)�”}”(hŒobject to perform setxattr on”h]”hŒobject to perform setxattr on”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jh´M*hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jh´M*hjÈubjÄ)�”}”(hŒ-``const char *name`` name of xattr to remove ”h]”(jÊ)�”}”(hŒ``const char *name``”h]”jÐ)�”}”(hjCh]”hŒconst char *name”…”�”}”(hjEh²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:98: ./fs/xattr.c”h´M+hj=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³jXh´M+hjYubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jXh´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Ïhjzubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:98: ./fs/xattr.c”h´M,hjvubjæ)�”}”(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åhjvubeh}”(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žhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œgeneric_listxattr (C function)”Œc.generic_listxattr”hNt”auh1hýhjVh²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&]”uh1jHhjubah}”(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”…”�”}”(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Œdentry”h]”hŒdentry”…”�”}”(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.generic_listxattr”†”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Œdentry”h]”hŒdentry”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj#ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjubjC)�”}”(hŒ char *buffer”h]”(jf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj“ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”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`jauh1jBhjubjC)�”}”(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”…”�”}”(hjh²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´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”…”�”}”(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´Mshj/h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÊh²hh³jùh´Msubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jJjšjJj›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(hjTh]”hŒ Parameters”…”�”}”(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:98: ./fs/xattr.c”h´MwhjNubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ4``struct dentry *dentry`` dentry to list the xattrs ”h]”(jÊ)�”}”(hŒ``struct dentry *dentry``”h]”jÐ)�”}”(hjsh]”hŒstruct dentry *dentry”…”�”}”(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:98: ./fs/xattr.c”h´Mthjmubjæ)�”}”(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åhjmubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jˆh´MthjjubjÄ)�”}”(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´MuhjjubjÄ)�”}”(hŒ*``size_t buffer_size`` size of **buffer** ”h]”(jÊ)�”}”(hŒ``size_t buffer_size``”h]”jÐ)�”}”(hjåh]”hŒsize_t buffer_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´Mvhjßubjæ)�”}”(hhh]”hÌ)�”}”(hŒsize of **buffer**”h]”(hŒsize of ”…”�”}”(hjþh²hh³Nh´Nubj©)�”}”(hŒ **buffer**”h]”hŒbuffer”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjþubeh}”(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´Mvhjjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjNubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj.h]”hŒ Description”…”�”}”(hj0h²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´MxhjNubhÌ)�”}”(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.”…”�”}”(hjDh²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´MwhjNubhÌ)�”}”(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.”…”�”}”(hjSh²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´MzhjNubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œxattr_full_name (C function)”Œc.xattr_full_name”hNt”auh1hýhjVh²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 )�”}”(hj¾h]”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: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’ubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj~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Œxattr_full_name”h]”jI)�”}”(hŒxattr_full_name”h]”hŒxattr_full_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Œ7(const struct xattr_handler *handler, const char *name)”h]”(jC)�”}”(hŒ#const struct xattr_handler *handler”h]”(j )�”}”(hj¾h]”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Œ xattr_handler”h]”hŒ xattr_handler”…”�”}”(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.xattr_full_name”†”asbuh1hhjãubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjãubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjãubjI)�”}”(hŒhandler”h]”hŒhandler”…”�”}”(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 )�”}”(hj¾h]”hŒconst”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjpubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjpubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjpubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjpubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjpubjI)�”}”(hŒname”h]”hŒname”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjpubeh}”(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ˆuh1jjijjhjzh²hh³j�h´M’ubah}”(h]”juah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j�h´M’hjwh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ'Compute full attribute name from suffix”h]”hŒ'Compute full attribute name from suffix”…”�”}”(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&]”uh1jvhjwh²hh³j�h´M’ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jújšjúj›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(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:98: ./fs/xattr.c”h´M–hjþubj¿)�”}”(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Ð)�”}”(hj#h]”hŒ#const struct xattr_handler *handler”…”�”}”(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”hjubjæ)�”}”(hhh]”hÌ)�”}”(hŒ&handler of the xattr_handler operation”h]”hŒ&handler of the xattr_handler operation”…”�”}”(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”hjubjÄ)�”}”(hŒ@``const char *name`` name passed to the xattr_handler operation ”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ÏhjZubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:98: ./fs/xattr.c”h´M•hjVubjæ)�”}”(hhh]”hÌ)�”}”(hŒ*name passed to the xattr_handler operation”h]”hŒ*name passed to the xattr_handler operation”…”�”}”(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•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³ŒR/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:98: ./fs/xattr.c”h´M—hjþubhÌ)�”}”(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­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þ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:98: ./fs/xattr.c”h´M›hjþubhÌ)�”}”(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.”…”�”}”(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þubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²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ýhjVh²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÿh²hh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´MÈubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÿh²hh³jh´MÈubjC)�”}”(hŒmnt_get_write_access”h]”jI)�”}”(hŒmnt_get_write_access”h]”hŒmnt_get_write_access”…”�”}”(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Èubj=)�”}”(hŒ(struct vfsmount *m)”h]”jC)�”}”(hŒstruct vfsmount *m”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj<ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjMh²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.mnt_get_write_access”†”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*6h]”hŒm”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj<ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj8ubah}”(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Œ5get write access to a mount without freeze protection”h]”hŒ5get write access to a mount without freeze protection”…”�”}”(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³jh´MÈubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÚjšjÚj›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(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`` the mount on which to take a write ”h]”(jÊ)�”}”(hŒ``struct vfsmount *m``”h]”jÐ)�”}”(hjh]”hŒstruct vfsmount *m”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjubah}”(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Œ"the mount on which to take a write”h]”hŒ"the mount on which to take a write”…”�”}”(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ú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Ì)�”}”(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.”…”�”}”(hjTh²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žhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œmnt_want_write (C function)”Œc.mnt_want_write”hNt”auh1hýhjVh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ'int mnt_want_write (struct vfsmount *m)”h]”j)�”}”(hŒ&int mnt_want_write(struct vfsmount *m)”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjh²hh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjh²hh³j‘h´MubjC)�”}”(hŒmnt_want_write”h]”jI)�”}”(hŒmnt_want_write”h]”hŒmnt_want_write”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjh²hh³j‘h´Mubj=)�”}”(hŒ(struct vfsmount *m)”h]”jC)�”}”(hŒstruct vfsmount *m”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.mnt_want_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)�”}”(hj*6h]”hŒm”…”�”}”(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<hjh²hh³j‘h´Mubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj{h²hh³j‘h´Mubah}”(h]”jvah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j‘h´Mhjxh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒget write access to a mount”h]”hŒget write access to a mount”…”�”}”(hjBh²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´Mhj?h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjxh²hh³j‘h´Mubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jZjšjZj›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(hjdh]”hŒ Parameters”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjbubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´Mhj^ubj¿)�”}”(hhh]”jÄ)�”}”(hŒ:``struct vfsmount *m`` the mount on which to take a write ”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´Mhj}ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ"the mount on which to take a write”h]”hŒ"the mount on which to take a write”…”�”}”(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´Mhjzubah}”(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´Mhj^ubhÌ)�”}”(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.”…”�”}”(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´Mhj^ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²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ýhjVh²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÿh²hh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´M/ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÿh²hh³jh´M/ubjC)�”}”(hŒmnt_want_write_file”h]”jI)�”}”(hŒmnt_want_write_file”h]”hŒmnt_want_write_file”…”�”}”(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/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Œ ”…”�”}”(hjMh²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.mnt_want_write_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Œfile”h]”hŒfile”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj<ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj8ubah}”(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Œ"get write access to a file's mount”h]”hŒ$get write access to a file’s mount”…”�”}”(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³jh´M/ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÛjšjÛj›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(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´M3hjßubj¿)�”}”(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Ð)�”}”(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³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´M0hjþubjæ)�”}”(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”…”�”}”(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û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³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´M2hjßubhÌ)�”}”(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.”…”�”}”(hjU 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´M1hjßubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²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ýhjVh²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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj„ h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj€ h²hh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´MDubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“ h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj€ h²hh³j’ h´MDubjC)�”}”(hŒmnt_put_write_access”h]”jI)�”}”(hŒmnt_put_write_access”h]”hŒmnt_put_write_access”…”�”}”(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´MDubj=)�”}”(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.mnt_put_write_access”†”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´MDubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj| h²hh³j’ h´MDubah}”(h]”jw ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j’ h´MDhjy h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒgive up write access to a mount”h]”hŒgive up write access to a mount”…”�”}”(hjD!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´MDhjA!h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjy h²hh³j’ h´MDubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j\!jšj\!j›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(hjf!h]”hŒ Parameters”…”�”}”(hjh!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjd!ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´MHhj`!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Ð)�”}”(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´MEhj!ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ*the mount on which to give up write access”h]”hŒ*the mount on which to give up write access”…”�”}”(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|!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´MGhj`!ubhÌ)�”}”(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.”…”�”}”(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´MFhj`!ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œmnt_drop_write (C function)”Œc.mnt_drop_write”hNt”auh1hýhjVh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ*void mnt_drop_write (struct vfsmount *mnt)”h]”j)�”}”(hŒ)void mnt_drop_write(struct vfsmount *mnt)”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj"h²hh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´MTubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj"h²hh³j"h´MTubjC)�”}”(hŒmnt_drop_write”h]”jI)�”}”(hŒmnt_drop_write”h]”hŒmnt_drop_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´MTubj=)�”}”(hŒ(struct vfsmount *mnt)”h]”jC)�”}”(hŒstruct vfsmount *mnt”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”jb"Œmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj("sbŒc.mnt_drop_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Œ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´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Œgive up write access to a mount”h]”hŒgive up write access to a mount”…”�”}”(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´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²hhjVh³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´MXhjá"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Ð)�”}”(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´MUhj#ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ*the mount on which to give up write access”h]”hŒ*the mount on which to give up write access”…”�”}”(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ý"ubah}”(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³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´MWhjá"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.”…”�”}”(hjW#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´MVhjá"ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œvfs_create_mount (C function)”Œc.vfs_create_mount”hNt”auh1hýhjVh²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”…”�”}”(hj$h²hh³Nh´Nubah}”(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_create_mount”†”asbuh1hhjü#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Œfc”h]”hŒfc”…”�”}”(hjW$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]”jy#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²hhjVh³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.”…”�”}”(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Œ5Note that this does not attach the mount to anything.”h]”hŒ5Note that this does not attach the mount to anything.”…”�”}”(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�$ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œpath_is_mountpoint (C function)”Œc.path_is_mountpoint”hNt”auh1hýhjVh²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]”(jf)�”}”(hjih]”hŒbool”…”�”}”(hjQ%h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjM%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&]”uh1j1hjM%h²hh³j^%h´MñubjC)�”}”(hŒpath_is_mountpoint”h]”jI)�”}”(hŒpath_is_mountpoint”h]”hŒpath_is_mountpoint”…”�”}”(hjq%h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjm%ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjM%h²hh³j^%h´Mñubj=)�”}”(hŒ(const struct path *path)”h]”jC)�”}”(hŒconst struct path *path”h]”(j )�”}”(hj¾h]”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)�”}”jjs%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”…”�”}”(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<hjM%h²hh³j^%h´Mñubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjI%h²hh³j^%h´Mñubah}”(h]”jD%ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j^%h´MñhjF%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.”…”�”}”(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&]”uh1jvhjF%h²hh³j^%h´Mñubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jC&jšjC&j›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(hjM&h]”hŒ Parameters”…”�”}”(hjO&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjK&ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´MõhjG&ubj¿)�”}”(hhh]”jÄ)�”}”(hŒ*``const struct path *path`` path to check ”h]”(jÊ)�”}”(hŒ``const struct path *path``”h]”jÐ)�”}”(hjl&h]”hŒconst struct path *path”…”�”}”(hjn&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´Mòhjf&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åhjf&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j�&h´Mòhjc&ubah}”(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³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´MôhjG&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óhjG&ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œmay_umount_tree (C function)”Œc.may_umount_tree”hNt”auh1hýhjVh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ(int may_umount_tree (struct vfsmount *m)”h]”j)�”}”(hŒ'int may_umount_tree(struct vfsmount *m)”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjö&h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjò&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_tree”h]”jI)�”}”(hŒmay_umount_tree”h]”hŒmay_umount_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´M�ubj=)�”}”(hŒ(struct vfsmount *m)”h]”jC)�”}”(hŒstruct vfsmount *m”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Œvfsmount”h]”hŒvfsmount”…”�”}”(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.may_umount_tree”†”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)�”}”(hj*6h]”hŒm”…”�”}”(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 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³j'h´M�ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÍ'jšjÍ'j›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(hj1(h]”hŒ Description”…”�”}”(hj3(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.”…”�”}”(hjG(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žhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œmay_umount (C function)”Œ c.may_umount”hNt”auh1hýhjVh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ%int may_umount (struct vfsmount *mnt)”h]”j)�”}”(hŒ$int may_umount(struct vfsmount *mnt)”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjv(h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjr(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&]”uh1j1hjr(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`jauh1jBhjr(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<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Œcheck if a mount point is busy”h]”hŒcheck if a mount point is busy”…”�”}”(hj6)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�hj3)h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjk(h²hh³j„(h´M�ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jN)jšjN)j›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(hjX)h]”hŒ Parameters”…”�”}”(hjZ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjV)ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´M¡hjR)ubj¿)�”}”(hhh]”jÄ)�”}”(hŒ'``struct vfsmount *mnt`` root of mount ”h]”(jÊ)�”}”(hŒ``struct vfsmount *mnt``”h]”jÐ)�”}”(hjw)h]”hŒstruct vfsmount *mnt”…”�”}”(hjy)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhju)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´Mžhjq)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åhjq)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jŒ)h´Mžhjn)ubah}”(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³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:101: ./fs/namespace.c”h´M hjR)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ŸhjR)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.”…”�”}”(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¤hjR)ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ clone_private_mount (C function)”Œc.clone_private_mount”hNt”auh1hýhjVh²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”…”�”}”(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Œclone_private_mount”sbŒc.clone_private_mount”†”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Œclone_private_mount”h]”jI)�”}”(hjC*h]”hŒclone_private_mount”…”�”}”(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Œ(const struct path *path)”h]”jC)�”}”(hŒconst struct path *path”h]”(j )�”}”(hj¾h]”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 ]”jA*Œc.clone_private_mount”†”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`jauh1jBhjx*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 private clone of a path”h]”hŒ create a private clone of a path”…”�”}”(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™j4+jšj4+j›‰jœ‰j�‰uh1jh²hhjVh³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©)�”}”(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„ hj8+ubj¿)�”}”(hhh]”jÄ)�”}”(hŒ*``const struct path *path`` path to clone ”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� hjW+ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ path to clone”h]”hŒ path to clone”…”�”}”(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+ubah}”(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¨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ƒ hj8+ubhÌ)�”}”(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®+h²hh³Nh´Nubj©)�”}”(hŒ**path**”h]”hŒpath”…”�”}”(hj¶+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj®+ubhŒœ. 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®+h²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‚ hj8+ubhÌ)�”}”(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Ï+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† hj8+ubhÌ)�”}”(hŒRelease with mntput().”h]”hŒRelease with mntput().”…”�”}”(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ˆ hj8+ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œmnt_set_expiry (C function)”Œc.mnt_set_expiry”hNt”auh1hýhjVh²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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj ,h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj ,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Œmnt_set_expiry”h]”jI)�”}”(hŒmnt_set_expiry”h]”hŒmnt_set_expiry”…”�”}”(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Œ5(struct vfsmount *mnt, struct list_head *expiry_list)”h]”(jC)�”}”(hŒstruct vfsmount *mnt”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Œvfsmount”h]”hŒvfsmount”…”�”}”(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)�”}”jj0,sbŒc.mnt_set_expiry”†”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Œmnt”h]”hŒmnt”…”�”}”(hj£,h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjF,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjB,ubjC)�”}”(hŒstruct list_head *expiry_list”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Œ list_head”h]”hŒ list_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.mnt_set_expiry”†”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Œ expiry_list”h]”hŒ expiry_list”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¸,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjB,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Œ!Put a mount on an expiration list”h]”hŒ!Put a mount on an expiration list”…”�”}”(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™jU-jšjU-j›‰jœ‰j�‰uh1jh²hhjVh³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_-h]”hŒ Parameters”…”�”}”(hja-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ÄhjY-ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ,``struct vfsmount *mnt`` The mount to list. ”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Áhjx-ubjæ)�”}”(hhh]”hÌ)�”}”(hŒThe mount to list.”h]”hŒThe mount to list.”…”�”}”(hj—-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j“-h´MÁhj”-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjx-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j“-h´MÁhju-ubjÄ)�”}”(hŒ?``struct list_head *expiry_list`` The list to add the mount to.”h]”(jÊ)�”}”(hŒ!``struct list_head *expiry_list``”h]”jÐ)�”}”(hj·-h]”hŒstruct list_head *expiry_list”…”�”}”(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ŒThe list to add the mount to.”h]”hŒThe list to add the mount to.”…”�”}”(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åhj±-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÌ-h´MÃhju-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjY-ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjVh²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 .h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj.h²hh³hÊh´Kiubh¶)�”}”(hhh]”(h»)�”}”(hŒsysctl interface”h]”hŒsysctl interface”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj.h²hh³hÊh´Klubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œproc_dostring (C function)”Œc.proc_dostring”hNt”auh1hýhj.h²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjC.h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj?.h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´K­ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjR.h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj?.h²hh³jQ.h´K­ubjC)�”}”(hŒ proc_dostring”h]”jI)�”}”(hŒ proc_dostring”h]”hŒ proc_dostring”…”�”}”(hjd.h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj`.ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj?.h²hh³jQ.h´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 )�”}”(hj¾h]”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Œ 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)�”}”jjf.sbŒc.proc_dostring”†”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Œtable”h]”hŒtable”…”�”}”(hjô.h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj|.ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjx.ubjC)�”}”(hŒint dir”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj /h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj /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`jauh1jBhjx.ubjC)�”}”(hŒ void *buffer”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjB/h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj>/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Œbuffer”h]”hŒbuffer”…”�”}”(hjk/h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj>/ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjx.ubjC)�”}”(hŒ size_t *lenp”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.proc_dostring”†”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Œlenp”h]”hŒlenp”…”�”}”(hjÀ/h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj€/ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjx.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_dostring”†”asbuh1hhjÕ/ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjú/h²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Œppos”h]”hŒppos”…”�”}”(hj0h²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³jQ.h´K­ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj;.h²hh³jQ.h´K­ubah}”(h]”j6.ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jQ.h´K­hj8.h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒread a string sysctl”h]”hŒread a string sysctl”…”�”}”(hj?0h²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­hj<0h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj8.h²hh³jQ.h´K­ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jW0jšjW0j›‰jœ‰j�‰uh1jh²hhj.h³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©)�”}”(hja0h]”hŒ Parameters”…”�”}”(hjc0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj_0ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´K±hj[0ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ3``const struct ctl_table *table`` the sysctl table ”h]”(jÊ)�”}”(hŒ!``const struct ctl_table *table``”h]”jÐ)�”}”(hj€0h]”hŒconst struct ctl_table *table”…”�”}”(hj‚0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj~0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´K®hjz0ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe sysctl table”h]”hŒthe sysctl table”…”�”}”(hj™0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j•0h´K®hj–0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjz0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j•0h´K®hjw0ubjÄ)�”}”(hŒ;``int dir`` ``TRUE`` if this is a write to the sysctl file ”h]”(jÊ)�”}”(hŒ ``int dir``”h]”jÐ)�”}”(hj¹0h]”hŒint dir”…”�”}”(hj»0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj·0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´K¯hj³0ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ.``TRUE`` if this is a write to the sysctl file”h]”(jÐ)�”}”(hŒ``TRUE``”h]”hŒTRUE”…”�”}”(hjÖ0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÒ0ubhŒ& if this is a write to the sysctl file”…”�”}”(hjÒ0h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÎ0h´K¯hjÏ0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj³0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÎ0h´K¯hjw0ubjÄ)�”}”(hŒ!``void *buffer`` the user buffer ”h]”(jÊ)�”}”(hŒ``void *buffer``”h]”jÐ)�”}”(hj1h]”hŒ void *buffer”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjþ0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´K°hjú0ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe user buffer”h]”hŒthe user buffer”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j1h´K°hj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjú0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j1h´K°hjw0ubjÄ)�”}”(hŒ-``size_t *lenp`` the size of the user buffer ”h]”(jÊ)�”}”(hŒ``size_t *lenp``”h]”jÐ)�”}”(hj91h]”hŒ size_t *lenp”…”�”}”(hj;1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj71ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´K±hj31ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe size of the user buffer”h]”hŒthe size of the user buffer”…”�”}”(hjR1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jN1h´K±hjO1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj31ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jN1h´K±hjw0ubjÄ)�”}”(hŒ``loff_t *ppos`` file position ”h]”(jÊ)�”}”(hŒ``loff_t *ppos``”h]”jÐ)�”}”(hjr1h]”hŒ loff_t *ppos”…”�”}”(hjt1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjp1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´K²hjl1ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ file position”h]”hŒ file position”…”�”}”(hj‹1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‡1h´K²hjˆ1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjl1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j‡1h´K²hjw0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj[0ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj­1h]”hŒ Description”…”�”}”(hj¯1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj«1ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´K´hj[0ubhÌ)�”}”(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Ã1h²hh³Nh´NubjÐ)�”}”(hŒ``NULL-terminated``”h]”hŒNULL-terminated”…”�”}”(hjË1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÃ1ubhŒ“. 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Ã1h²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[0ubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hjæ1h]”hŒReturn”…”�”}”(hjè1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjä1ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´Kºhj[0ubhÌ)�”}”(hŒ``0`` on success.”h]”(jÐ)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjü1ubhŒ on success.”…”�”}”(hjü1h²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[0ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj.h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œproc_dobool (C function)”Œ c.proc_dobool”hNt”auh1hýhj.h²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj92h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj52h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjH2h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj52h²hh³jG2h´MubjC)�”}”(hŒ proc_dobool”h]”jI)�”}”(hŒ proc_dobool”h]”hŒ proc_dobool”…”�”}”(hjZ2h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjV2ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj52h²hh³jG2h´Mubj=)�”}”(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 )�”}”(hj¾h]”hŒconst”…”�”}”(hjv2h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjr2ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒ2h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjr2ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj‘2h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjr2ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjž2h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjr2ubh)�”}”(hhh]”jI)�”}”(hŒ ctl_table”h]”hŒ ctl_table”…”�”}”(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.proc_dobool”†”asbuh1hhjr2ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏ2h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjr2ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjÝ2h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjr2ubjI)�”}”(hŒtable”h]”hŒtable”…”�”}”(hjê2h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjr2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjn2ubjC)�”}”(hŒint dir”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÿ2ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÿ2ubjI)�”}”(hŒdir”h]”hŒdir”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÿ2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjn2ubjC)�”}”(hŒ void *buffer”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj83h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj43ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjF3h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj43ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjT3h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj43ubjI)�”}”(hŒbuffer”h]”hŒbuffer”…”�”}”(hja3h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj43ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjn2ubjC)�”}”(hŒ size_t *lenp”h]”(h)�”}”(hhh]”jI)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj}3h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjz3ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j3Œmodname”NŒ classname”Njj )�”}”j ]”jË2Œ c.proc_dobool”†”asbuh1hhjv3ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›3h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjv3ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj©3h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjv3ubjI)�”}”(hŒlenp”h]”hŒlenp”…”�”}”(hj¶3h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjv3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjn2ubjC)�”}”(hŒ loff_t *ppos”h]”(h)�”}”(hhh]”jI)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(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Ë2Œ c.proc_dobool”†”asbuh1hhjË3ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjð3h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjË3ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjþ3h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjË3ubjI)�”}”(hŒppos”h]”hŒppos”…”�”}”(hj 4h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjË3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjn2ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj52h²hh³jG2h´Mubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj12h²hh³jG2h´Mubah}”(h]”j,2ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jG2h´Mhj.2h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒread/write a bool”h]”hŒread/write a bool”…”�”}”(hj54h²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´Mhj24h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj.2h²hh³jG2h´Mubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jM4jšjM4j›‰jœ‰j�‰uh1jh²hhj.h³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©)�”}”(hjW4h]”hŒ Parameters”…”�”}”(hjY4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjU4ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´MhjQ4ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ3``const struct ctl_table *table`` the sysctl table ”h]”(jÊ)�”}”(hŒ!``const struct ctl_table *table``”h]”jÐ)�”}”(hjv4h]”hŒconst struct ctl_table *table”…”�”}”(hjx4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjt4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´Mhjp4ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe sysctl table”h]”hŒthe sysctl table”…”�”}”(hj�4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‹4h´MhjŒ4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjp4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j‹4h´Mhjm4ubjÄ)�”}”(hŒ;``int dir`` ``TRUE`` if this is a write to the sysctl file ”h]”(jÊ)�”}”(hŒ ``int dir``”h]”jÐ)�”}”(hj¯4h]”hŒint dir”…”�”}”(hj±4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj­4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´Mhj©4ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ.``TRUE`` if this is a write to the sysctl file”h]”(jÐ)�”}”(hŒ``TRUE``”h]”hŒTRUE”…”�”}”(hjÌ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÈ4ubhŒ& if this is a write to the sysctl file”…”�”}”(hjÈ4h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÄ4h´MhjÅ4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj©4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÄ4h´Mhjm4ubjÄ)�”}”(hŒ!``void *buffer`` the user buffer ”h]”(jÊ)�”}”(hŒ``void *buffer``”h]”jÐ)�”}”(hjö4h]”hŒ void *buffer”…”�”}”(hjø4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjô4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´Mhjð4ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe user buffer”h]”hŒthe user buffer”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j 5h´Mhj 5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjð4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j 5h´Mhjm4ubjÄ)�”}”(hŒ-``size_t *lenp`` the size of the user buffer ”h]”(jÊ)�”}”(hŒ``size_t *lenp``”h]”jÐ)�”}”(hj/5h]”hŒ size_t *lenp”…”�”}”(hj15h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj-5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´Mhj)5ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe size of the user buffer”h]”hŒthe size of the user buffer”…”�”}”(hjH5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jD5h´MhjE5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj)5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jD5h´Mhjm4ubjÄ)�”}”(hŒ``loff_t *ppos`` file position ”h]”(jÊ)�”}”(hŒ``loff_t *ppos``”h]”jÐ)�”}”(hjh5h]”hŒ loff_t *ppos”…”�”}”(hjj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjf5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´Mhjb5ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ file position”h]”hŒ file position”…”�”}”(hj�5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j}5h´Mhj~5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjb5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j}5h´Mhjm4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjQ4ubhÌ)�”}”(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³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´MhjQ4ubhÌ)�”}”(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¹5h²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´MhjQ4ubhÌ)�”}”(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È5h²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 hjQ4ubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hjÙ5h]”hŒReturn”…”�”}”(hjÛ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj×5ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M hjQ4ubhÌ)�”}”(hŒ``0`` on success.”h]”(jÐ)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hjó5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjï5ubhŒ on success.”…”�”}”(hjï5h²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 hjQ4ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj.h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œproc_dointvec (C function)”Œc.proc_dointvec”hNt”auh1hýhj.h²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj,6h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj(6h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.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Œ proc_dointvec”h]”jI)�”}”(hŒ proc_dointvec”h]”hŒ proc_dointvec”…”�”}”(hjM6h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjI6ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj(6h²hh³j:6h´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 )�”}”(hj¾h]”hŒconst”…”�”}”(hji6h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhje6ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjv6h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hje6ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj„6h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhje6ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘6h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hje6ubh)�”}”(hhh]”jI)�”}”(hŒ ctl_table”h]”hŒ ctl_table”…”�”}”(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)�”}”jjO6sbŒc.proc_dointvec”†”asbuh1hhje6ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂ6h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hje6ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjÐ6h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hje6ubjI)�”}”(hŒtable”h]”hŒtable”…”�”}”(hjÝ6h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhje6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhja6ubjC)�”}”(hŒint dir”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjö6h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjò6ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjò6ubjI)�”}”(hŒdir”h]”hŒdir”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjò6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhja6ubjC)�”}”(hŒ void *buffer”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj+7h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj'7ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj97h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj'7ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjG7h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj'7ubjI)�”}”(hŒbuffer”h]”hŒbuffer”…”�”}”(hjT7h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj'7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhja6ubjC)�”}”(hŒ size_t *lenp”h]”(h)�”}”(hhh]”jI)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjp7h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjm7ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jr7Œmodname”NŒ classname”Njj )�”}”j ]”j¾6Œc.proc_dointvec”†”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Œlenp”h]”hŒlenp”…”�”}”(hj©7h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhji7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhja6ubjC)�”}”(hŒ loff_t *ppos”h]”(h)�”}”(hhh]”jI)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(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¾6Œc.proc_dointvec”†”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Œppos”h]”hŒppos”…”�”}”(hjþ7h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¾7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhja6ubeh}”(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]”j6ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j:6h´M(hj!6h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒread a vector of integers”h]”hŒread a vector of integers”…”�”}”(hj(8h²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%8h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj!6h²hh³j:6h´M(ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j@8jšj@8j›‰jœ‰j�‰uh1jh²hhj.h³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©)�”}”(hjJ8h]”hŒ Parameters”…”�”}”(hjL8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjH8ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M,hjD8ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ3``const struct ctl_table *table`` the sysctl table ”h]”(jÊ)�”}”(hŒ!``const struct ctl_table *table``”h]”jÐ)�”}”(hji8h]”hŒconst struct ctl_table *table”…”�”}”(hjk8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjg8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M)hjc8ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe sysctl table”h]”hŒthe sysctl table”…”�”}”(hj‚8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j~8h´M)hj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjc8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j~8h´M)hj`8ubjÄ)�”}”(hŒ;``int dir`` ``TRUE`` if this is a write to the sysctl file ”h]”(jÊ)�”}”(hŒ ``int dir``”h]”jÐ)�”}”(hj¢8h]”hŒint dir”…”�”}”(hj¤8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj 8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M*hjœ8ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ.``TRUE`` if this is a write to the sysctl file”h]”(jÐ)�”}”(hŒ``TRUE``”h]”hŒTRUE”…”�”}”(hj¿8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj»8ubhŒ& if this is a write to the sysctl file”…”�”}”(hj»8h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j·8h´M*hj¸8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjœ8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j·8h´M*hj`8ubjÄ)�”}”(hŒ!``void *buffer`` the user buffer ”h]”(jÊ)�”}”(hŒ``void *buffer``”h]”jÐ)�”}”(hjé8h]”hŒ void *buffer”…”�”}”(hjë8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjç8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M+hjã8ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe user buffer”h]”hŒthe user buffer”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jþ8h´M+hjÿ8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjã8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jþ8h´M+hj`8ubjÄ)�”}”(hŒ-``size_t *lenp`` the size of the user buffer ”h]”(jÊ)�”}”(hŒ``size_t *lenp``”h]”jÐ)�”}”(hj"9h]”hŒ size_t *lenp”…”�”}”(hj$9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj 9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M,hj9ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe size of the user buffer”h]”hŒthe size of the user buffer”…”�”}”(hj;9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j79h´M,hj89ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j79h´M,hj`8ubjÄ)�”}”(hŒ``loff_t *ppos`` file position ”h]”(jÊ)�”}”(hŒ``loff_t *ppos``”h]”jÐ)�”}”(hj[9h]”hŒ loff_t *ppos”…”�”}”(hj]9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjY9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M-hjU9ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ file position”h]”hŒ file position”…”�”}”(hjt9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jp9h´M-hjq9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjU9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jp9h´M-hj`8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjD8ubhÌ)�”}”(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³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M/hjD8ubhÌ)�”}”(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¬9h²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.hjD8ubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hj½9h]”hŒReturn”…”�”}”(hj¿9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj»9ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M1hjD8ubhÌ)�”}”(hŒ``0`` on success.”h]”(jÐ)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hj×9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÓ9ubhŒ on success.”…”�”}”(hjÓ9h²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´M2hjD8ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj.h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œproc_douintvec (C function)”Œc.proc_douintvec”hNt”auh1hýhj.h²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj :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_douintvec”h]”jI)�”}”(hŒproc_douintvec”h]”hŒproc_douintvec”…”�”}”(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Œ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 )�”}”(hj¾h]”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 )�”}”(hjŽh]”hŒstruct”…”�”}”(hjh:h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjI:ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hju:h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjI: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)�”}”jj3:sbŒc.proc_douintvec”†”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Œtable”h]”hŒtable”…”�”}”(hjÁ:h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjI:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjE:ubjC)�”}”(hŒint dir”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjÚ:h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÖ: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`jauh1jBhjE:ubjC)�”}”(hŒ void *buffer”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj ;ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”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”…”�”}”(hj8;h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj ;ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjE:ubjC)�”}”(hŒ size_t *lenp”h]”(h)�”}”(hhh]”jI)�”}”(hŒsize_t”h]”hŒsize_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¢:Œc.proc_douintvec”†”asbuh1hhjM;ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjr;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Œlenp”h]”hŒlenp”…”�”}”(hj�;h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjM;ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjE: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_douintvec”†”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`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Œ"read a vector of unsigned integers”h]”hŒ"read a vector of unsigned integers”…”�”}”(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²hhj.h³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.<h]”hŒ Parameters”…”�”}”(hj0<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Ð)�”}”(hjM<h]”hŒconst struct ctl_table *table”…”�”}”(hjO<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjK<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M=hjG<ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe sysctl table”h]”hŒthe sysctl table”…”�”}”(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=hjD<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>hjD<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?hjD<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@hjD<ubjÄ)�”}”(hŒ``loff_t *ppos`` file position ”h]”(jÊ)�”}”(hŒ``loff_t *ppos``”h]”jÐ)�”}”(hj?=h]”hŒ loff_t *ppos”…”�”}”(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:110: ./kernel/sysctl.c”h´MAhj9=ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ file position”h]”hŒ file position”…”�”}”(hjX=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jT=h´MAhjU=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj9=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jT=h´MAhjD<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³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´MChj(<ubhÌ)�”}”(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�=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´MBhj(<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´MEhj(<ubhÌ)�”}”(hŒ``0`` on success.”h]”(jÐ)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hj»=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj·=ubhŒ on success.”…”�”}”(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´MFhj(<ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj.h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ!proc_dointvec_minmax (C function)”Œc.proc_dointvec_minmax”hNt”auh1hýhj.h²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjô=h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjð=h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´MPubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjð=h²hh³j>h´MPubjC)�”}”(hŒproc_dointvec_minmax”h]”jI)�”}”(hŒproc_dointvec_minmax”h]”hŒproc_dointvec_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´MPubj=)�”}”(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 )�”}”(hj¾h]”hŒconst”…”�”}”(hj1>h²hh³Nh´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”…”�”}”(hjL>h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj->ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjY>h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj->ubh)�”}”(hhh]”jI)�”}”(hŒ ctl_table”h]”hŒ ctl_table”…”�”}”(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.proc_dointvec_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Œtable”h]”hŒtable”…”�”}”(hj¥>h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj->ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj)>ubjC)�”}”(hŒint dir”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj¾>h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjº>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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjó>h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjï>ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”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Œ size_t *lenp”h]”(h)�”}”(hhh]”jI)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj8?h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj5?ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j:?Œmodname”NŒ classname”Njj )�”}”j ]”j†>Œc.proc_dointvec_minmax”†”asbuh1hhj1?ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjV?h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj1?ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjd?h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj1?ubjI)�”}”(hŒlenp”h]”hŒlenp”…”�”}”(hjq?h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj1?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_dointvec_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´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Œ-read a vector of integers with min/max values”h]”hŒ-read a vector of integers 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´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²hhj.h³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©)�”}”(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´MThj @ubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ3``const struct ctl_table *table`` the sysctl table ”h]”(jÊ)�”}”(hŒ!``const struct ctl_table *table``”h]”jÐ)�”}”(hj1@h]”hŒconst struct ctl_table *table”…”�”}”(hj3@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´MQhj+@ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe sysctl table”h]”hŒthe sysctl table”…”�”}”(hjJ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jF@h´MQhjG@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj+@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jF@h´MQhj(@ubjÄ)�”}”(hŒ;``int dir`` ``TRUE`` if this is a write to the sysctl file ”h]”(jÊ)�”}”(hŒ ``int dir``”h]”jÐ)�”}”(hjj@h]”hŒint dir”…”�”}”(hjl@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjh@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´MRhjd@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´MRhj€@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjd@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j@h´MRhj(@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´MShj«@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´MShjÇ@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj«@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÆ@h´MShj(@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´MThjä@ubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe size of the user buffer”h]”hŒthe size of the user buffer”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÿ@h´MThjAubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjä@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÿ@h´MThj(@ubjÄ)�”}”(hŒ``loff_t *ppos`` file position ”h]”(jÊ)�”}”(hŒ``loff_t *ppos``”h]”jÐ)�”}”(hj#Ah]”hŒ loff_t *ppos”…”�”}”(hj%Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj!Aubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´MUhjAubjæ)�”}”(hhh]”hÌ)�”}”(hŒ file position”h]”hŒ file position”…”�”}”(hjmaxlen/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.”…”�”}”(hjtAh²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´MVhj @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ƒAh²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´MYhj @ubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hj”Ah]”hŒReturn”…”�”}”(hj–Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj’Aubah}”(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 -EINVAL when the range check fails and SYSCTL_USER_TO_KERN(dir) == true”h]”(jÐ)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hj®Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjªAubhŒV on success or -EINVAL when the range check fails and SYSCTL_USER_TO_KERN(dir) == true”…”�”}”(hjªAh²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žhj.h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ"proc_douintvec_minmax (C function)”Œc.proc_douintvec_minmax”hNt”auh1hýhj.h²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjçAh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjãAh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´Mhubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjöAh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjãAh²hh³jõAh´MhubjC)�”}”(hŒproc_douintvec_minmax”h]”jI)�”}”(hŒproc_douintvec_minmax”h]”hŒproc_douintvec_minmax”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjBubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjãAh²hh³jõAh´Mhubj=)�”}”(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 )�”}”(hj¾h]”hŒconst”…”�”}”(hj$Bh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj Bubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1Bh²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Œ ”…”�”}”(hjLBh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj Bubh)�”}”(hhh]”jI)�”}”(hŒ ctl_table”h]”hŒ ctl_table”…”�”}”(hj]Bh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjZBubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j_BŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jj BsbŒc.proc_douintvec_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Œtable”h]”hŒtable”…”�”}”(hj˜Bh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj Bubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjBubjC)�”}”(hŒint dir”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj±Bh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj­Bubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿Bh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj­BubjI)�”}”(hŒdir”h]”hŒdir”…”�”}”(hjÍBh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj­Bubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjBubjC)�”}”(hŒ void *buffer”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjæBh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjâBubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjôBh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjâBubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjâBubjI)�”}”(hŒbuffer”h]”hŒbuffer”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjâBubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjBubjC)�”}”(hŒ size_t *lenp”h]”(h)�”}”(hhh]”jI)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(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 ]”jyBŒc.proc_douintvec_minmax”†”asbuh1hhj$Cubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjICh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj$Cubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjWCh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj$CubjI)�”}”(hŒlenp”h]”hŒlenp”…”�”}”(hjdCh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj$Cubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjBubjC)�”}”(hŒ loff_t *ppos”h]”(h)�”}”(hhh]”jI)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(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 ]”jyBŒc.proc_douintvec_minmax”†”asbuh1hhjyCubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjžCh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjyCubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj¬Ch²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjyCubjI)�”}”(hŒppos”h]”hŒppos”…”�”}”(hj¹Ch²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjyCubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjBubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjãAh²hh³jõAh´Mhubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjßAh²hh³jõAh´Mhubah}”(h]”jÚAah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jõAh´MhhjÜAh²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ãCh²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´MhhjàCh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÜAh²hh³jõAh´Mhubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jûCjšjûCj›‰jœ‰j�‰uh1jh²hhj.h³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©)�”}”(hjDh]”hŒ Parameters”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjDubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´MlhjÿCubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ3``const struct ctl_table *table`` the sysctl table ”h]”(jÊ)�”}”(hŒ!``const struct ctl_table *table``”h]”jÐ)�”}”(hj$Dh]”hŒconst struct ctl_table *table”…”�”}”(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´MihjDubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe sysctl table”h]”hŒthe sysctl table”…”�”}”(hj=Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j9Dh´Mihj:Dubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjDubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j9Dh´MihjDubjÄ)�”}”(hŒ;``int dir`` ``TRUE`` if this is a write to the sysctl file ”h]”(jÊ)�”}”(hŒ ``int dir``”h]”jÐ)�”}”(hj]Dh]”hŒint dir”…”�”}”(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´MjhjWDubjæ)�”}”(hhh]”hÌ)�”}”(hŒ.``TRUE`` if this is a write to the sysctl file”h]”(jÐ)�”}”(hŒ``TRUE``”h]”hŒTRUE”…”�”}”(hjzDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjvDubhŒ& if this is a write to the sysctl file”…”�”}”(hjvDh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jrDh´MjhjsDubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjWDubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jrDh´MjhjDubjÄ)�”}”(hŒ!``void *buffer`` the user buffer ”h]”(jÊ)�”}”(hŒ``void *buffer``”h]”jÐ)�”}”(hj¤Dh]”hŒ void *buffer”…”�”}”(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´MkhjžDubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe user buffer”h]”hŒthe user buffer”…”�”}”(hj½Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¹Dh´MkhjºDubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjžDubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¹Dh´MkhjDubjÄ)�”}”(hŒ-``size_t *lenp`` the size of the user buffer ”h]”(jÊ)�”}”(hŒ``size_t *lenp``”h]”jÐ)�”}”(hjÝDh]”hŒ size_t *lenp”…”�”}”(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´Mlhj×Dubjæ)�”}”(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³jòDh´MlhjóDubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj×Dubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jòDh´MlhjDubjÄ)�”}”(hŒ``loff_t *ppos`` file position ”h]”(jÊ)�”}”(hŒ``loff_t *ppos``”h]”jÐ)�”}”(hjEh]”hŒ loff_t *ppos”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjEubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´MmhjEubjæ)�”}”(hhh]”hÌ)�”}”(hŒ file position”h]”hŒ file position”…”�”}”(hj/Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j+Eh´Mmhj,Eubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjEubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j+Eh´MmhjDubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÿCubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjQEh]”hŒ Description”…”�”}”(hjSEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjOEubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´MohjÿCubhÌ)�”}”(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.”…”�”}”(hjgEh²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ÿCubhÌ)�”}”(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.”…”�”}”(hjvEh²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´MrhjÿCubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hj‡Eh]”hŒReturn”…”�”}”(hj‰Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj…Eubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´MwhjÿCubhÌ)�”}”(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¡Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj�EubhŒS on success or -ERANGE when range check failes and SYSCTL_USER_TO_KERN(dir) == true”…”�”}”(hj�Eh²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´MxhjÿCubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj.h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ proc_dou8vec_minmax (C function)”Œc.proc_dou8vec_minmax”hNt”auh1hýhj.h²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjÚEh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÖEh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´Mƒubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjéEh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÖEh²hh³jèEh´MƒubjC)�”}”(hŒproc_dou8vec_minmax”h]”jI)�”}”(hŒproc_dou8vec_minmax”h]”hŒproc_dou8vec_minmax”…”�”}”(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´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 )�”}”(hj¾h]”hŒconst”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjFubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$Fh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjFubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj2Fh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjFubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?Fh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjFubh)�”}”(hhh]”jI)�”}”(hŒ ctl_table”h]”hŒ ctl_table”…”�”}”(hjPFh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjMFubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jRFŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjýEsbŒc.proc_dou8vec_minmax”†”asbuh1hhjFubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjpFh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjFubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj~Fh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjFubjI)�”}”(hŒtable”h]”hŒtable”…”�”}”(hj‹Fh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjFubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjFubjC)�”}”(hŒint dir”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj¤Fh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj Fubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²Fh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj FubjI)�”}”(hŒdir”h]”hŒdir”…”�”}”(hjÀFh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj Fubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjFubjC)�”}”(hŒ void *buffer”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÙFh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÕ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Œbuffer”h]”hŒbuffer”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÕFubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjFubjC)�”}”(hŒ size_t *lenp”h]”(h)�”}”(hhh]”jI)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjGh²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 ]”jlFŒc.proc_dou8vec_minmax”†”asbuh1hhjGubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjah"]”h$]”h&]”uh1j1hjGubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjJGh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjGubjI)�”}”(hŒlenp”h]”hŒlenp”…”�”}”(hjWGh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjGubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjFubjC)�”}”(hŒ loff_t *ppos”h]”(h)�”}”(hhh]”jI)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hjsGh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjpGubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”juGŒmodname”NŒ classname”Njj )�”}”j ]”jlFŒc.proc_dou8vec_minmax”†”asbuh1hhjlGubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘Gh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjlGubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjŸGh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjlGubjI)�”}”(hŒppos”h]”hŒppos”…”�”}”(hj¬Gh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjlGubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjFubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjÖEh²hh³jèEh´Mƒubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjÒEh²hh³jèEh´Mƒubah}”(h]”jÍEah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jèEh´MƒhjÏEh²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ÖGh²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ÓGh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÏEh²hh³jèEh´Mƒubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jîGjšjîGj›‰jœ‰j�‰uh1jh²hhj.h³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ø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´M‡hjòGubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ3``const struct ctl_table *table`` the sysctl table ”h]”(jÊ)�”}”(hŒ!``const struct ctl_table *table``”h]”jÐ)�”}”(hjHh]”hŒconst struct ctl_table *table”…”�”}”(hjHh²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Œthe sysctl table”h]”hŒthe sysctl table”…”�”}”(hj0Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j,Hh´M„hj-Hubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjHubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j,Hh´M„hjHubjÄ)�”}”(hŒ;``int dir`` ``TRUE`` if this is a write to the sysctl file ”h]”(jÊ)�”}”(hŒ ``int dir``”h]”jÐ)�”}”(hjPHh]”hŒint dir”…”�”}”(hjRHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjNHubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M…hjJHubjæ)�”}”(hhh]”hÌ)�”}”(hŒ.``TRUE`` if this is a write to the sysctl file”h]”(jÐ)�”}”(hŒ``TRUE``”h]”hŒTRUE”…”�”}”(hjmHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjiHubhŒ& if this is a write to the sysctl file”…”�”}”(hjiHh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jeHh´M…hjfHubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjJHubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jeHh´M…hjHubjÄ)�”}”(hŒ!``void *buffer`` the user buffer ”h]”(jÊ)�”}”(hŒ``void *buffer``”h]”jÐ)�”}”(hj—Hh]”hŒ void *buffer”…”�”}”(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´M†hj‘Hubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe user buffer”h]”hŒthe user buffer”…”�”}”(hj°Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¬Hh´M†hj­Hubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj‘Hubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j¬Hh´M†hjHubjÄ)�”}”(hŒ-``size_t *lenp`` the size of the user buffer ”h]”(jÊ)�”}”(hŒ``size_t *lenp``”h]”jÐ)�”}”(hjÐHh]”hŒ size_t *lenp”…”�”}”(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´M‡hjÊHubjæ)�”}”(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´M‡hjæHubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÊHubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jåHh´M‡hjHubjÄ)�”}”(hŒ``loff_t *ppos`` file position ”•h]”(jÊ)�”}”(hŒ``loff_t *ppos``”h]”jÐ)�”}”(hj Ih]”hŒ loff_t *ppos”…”�”}”(hj Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjIubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´MˆhjIubjæ)�”}”(hhh]”hÌ)�”}”(hŒ file position”h]”hŒ file position”…”�”}”(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ˆhjHubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjòGubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjDIh]”hŒ Description”…”�”}”(hjFIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjBIubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´MŠhjòGubhÌ)�”}”(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.”…”�”}”(hjZIh²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òGubhÌ)�”}”(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).”…”�”}”(hjiIh²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òGubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hjzIh]”hŒReturn”…”�”}”(hj|Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjxIubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M�hjòGubhÌ)�”}”(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”Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj�IubhŒV on success or an error on SYSCTL_USER_TO_KERN(dir) == true and the range check fails.”…”�”}”(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´M‘hjòGubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj.h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ#proc_doulongvec_minmax (C function)”Œc.proc_doulongvec_minmax”hNt”auh1hýhj.h²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjÍIh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÉIh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M2ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜIh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÉIh²hh³jÛIh´M2ubjC)�”}”(hŒproc_doulongvec_minmax”h]”jI)�”}”(hŒproc_doulongvec_minmax”h]”hŒproc_doulongvec_minmax”…”�”}”(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´M2ubj=)�”}”(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 )�”}”(hj¾h]”hŒconst”…”�”}”(hj Jh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjJubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjJubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj%Jh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjJubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2Jh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjJubh)�”}”(hhh]”jI)�”}”(hŒ ctl_table”h]”hŒ ctl_table”…”�”}”(hjCJh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj@Jubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jEJŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjðIsbŒc.proc_doulongvec_minmax”†”asbuh1hhjJubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjcJh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjJubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjqJh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjJubjI)�”}”(hŒtable”h]”hŒtable”…”�”}”(hj~Jh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjJubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjJubjC)�”}”(hŒint dir”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj—Jh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj“Jubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥Jh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj“JubjI)�”}”(hŒdir”h]”hŒdir”…”�”}”(hj³Jh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj“Jubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjJubjC)�”}”(hŒ void *buffer”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÌJh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÈ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Œbuffer”h]”hŒbuffer”…”�”}”(hjõJh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÈJubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjJubjC)�”}”(hŒ size_t *lenp”h]”(h)�”}”(hhh]”jI)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(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.proc_doulongvec_minmax”†”asbuh1hhj 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Œlenp”h]”hŒlenp”…”�”}”(hjJKh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj Kubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjJubjC)�”}”(hŒ loff_t *ppos”h]”(h)�”}”(hhh]”jI)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hjfKh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjcKubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jhKŒmodname”NŒ classname”Njj )�”}”j ]”j_JŒc.proc_doulongvec_minmax”†”asbuh1hhj_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Œppos”h]”hŒppos”…”�”}”(hjŸKh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj_Kubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjJubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjÉIh²hh³jÛIh´M2ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjÅIh²hh³jÛIh´M2ubah}”(h]”jÀIah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÛIh´M2hjÂIh²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ÉKh²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´M2hjÆKh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÂIh²hh³jÛIh´M2ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jáKjšjáKj›‰jœ‰j�‰uh1jh²hhj.h³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©)�”}”(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´M6hjåKubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ3``const struct ctl_table *table`` the sysctl table ”h]”(jÊ)�”}”(hŒ!``const struct ctl_table *table``”h]”jÐ)�”}”(hj Lh]”hŒconst struct ctl_table *table”…”�”}”(hj Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjLubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M3hjLubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe sysctl table”h]”hŒthe sysctl table”…”�”}”(hj#Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jLh´M3hj Lubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjLubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jLh´M3hjLubjÄ)�”}”(hŒ;``int dir`` ``TRUE`` if this is a write to the sysctl file ”h]”(jÊ)�”}”(hŒ ``int dir``”h]”jÐ)�”}”(hjCLh]”hŒint dir”…”�”}”(hjELh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjALubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M4hj=Lubjæ)�”}”(hhh]”hÌ)�”}”(hŒ.``TRUE`` if this is a write to the sysctl file”h]”(jÐ)�”}”(hŒ``TRUE``”h]”hŒTRUE”…”�”}”(hj`Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj\LubhŒ& if this is a write to the sysctl file”…”�”}”(hj\Lh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jXLh´M4hjYLubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj=Lubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jXLh´M4hjLubjÄ)�”}”(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´M5hj„Lubjæ)�”}”(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´M5hj Lubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj„Lubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jŸLh´M5hjLubjÄ)�”}”(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´M6hj½Lubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe size of the user buffer”h]”hŒthe size of the user buffer”…”�”}”(hjÜLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jØLh´M6hjÙLubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj½Lubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jØLh´M6hjLubjÄ)�”}”(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´M7hjöLubjæ)�”}”(hhh]”hÌ)�”}”(hŒ file position”h]”hŒ file position”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jMh´M7hjMubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjöLubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jMh´M7hjLubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjåKubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj7Mh]”hŒ Description”…”�”}”(hj9Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj5Mubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M9hjåKubhÌ)�”}”(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.”…”�”}”(hjMMh²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´M8hjåKubhÌ)�”}”(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\Mh²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åKubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hjmMh]”hŒReturn”…”�”}”(hjoMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjkMubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´M>hjåKubhÌ)�”}”(hŒ``0`` on success.”h]”(jÐ)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hj‡Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjƒMubhŒ on success.”…”�”}”(hjƒMh²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åKubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj.h²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ýhj.h²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjÀMh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj¼Mh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´Mbubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏMh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¼Mh²hh³jÎMh´MbubjC)�”}”(hŒproc_do_large_bitmap”h]”jI)�”}”(hŒproc_do_large_bitmap”h]”hŒproc_do_large_bitmap”…”�”}”(hjáMh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÝMubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj¼Mh²hh³jÎMh´Mbubj=)�”}”(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 )�”}”(hj¾h]”hŒconst”…”�”}”(hjýMh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjùMubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Nh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjùMubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjùMubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%Nh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjùMubh)�”}”(hhh]”jI)�”}”(hŒ ctl_table”h]”hŒ ctl_table”…”�”}”(hj6Nh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj3Nubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j8NŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjãMsbŒc.proc_do_large_bitmap”†”asbuh1hhjùMubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVNh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjùMubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjdNh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjùMubjI)�”}”(hŒtable”h]”hŒtable”…”�”}”(hjqNh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjùMubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjõMubjC)�”}”(hŒint dir”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjŠNh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj†Nubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜Nh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj†NubjI)�”}”(hŒdir”h]”hŒdir”…”�”}”(hj¦Nh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj†Nubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjõMubjC)�”}”(hŒ void *buffer”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¿Nh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj»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Œbuffer”h]”hŒbuffer”…”�”}”(hjèNh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj»Nubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjõMubjC)�”}”(hŒ size_t *lenp”h]”(h)�”}”(hhh]”jI)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjOubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jOŒmodname”NŒ classname”Njj )�”}”j ]”jRNŒc.proc_do_large_bitmap”†”asbuh1hhjýNubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"Oh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjýNubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj0Oh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjýNubjI)�”}”(hŒlenp”h]”hŒlenp”…”�”}”(hj=Oh²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”…”�”}”(hjYOh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjVOubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j[OŒmodname”NŒ classname”Njj )�”}”j ]”jRNŒc.proc_do_large_bitmap”†”asbuh1hhjROubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwOh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjROubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj…Oh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjROubjI)�”}”(hŒppos”h]”hŒppos”…”�”}”(hj’Oh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjROubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjõMubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj¼Mh²hh³jÎMh´Mbubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj¸Mh²hh³jÎMh´Mbubah}”(h]”j³Mah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÎMh´MbhjµMh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ!read/write from/to a large bitmap”h]”hŒ!read/write from/to a large bitmap”…”�”}”(hj¼Oh²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´Mbhj¹Oh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjµMh²hh³jÎMh´Mbubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÔOjšjÔOj›‰jœ‰j�‰uh1jh²hhj.h³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ÞOh]”hŒ Parameters”…”�”}”(hjàOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÜOubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´MfhjØOubj¿)�”}”(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´Mchj÷Oubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe sysctl table”h]”hŒthe sysctl table”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jPh´MchjPubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj÷Oubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jPh´MchjôOubjÄ)�”}”(hŒ;``int dir`` ``TRUE`` if this is a write to the sysctl file ”h]”(jÊ)�”}”(hŒ ``int dir``”h]”jÐ)�”}”(hj6Ph]”hŒint dir”…”�”}”(hj8Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj4Pubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´Mdhj0Pubjæ)�”}”(hhh]”hÌ)�”}”(hŒ.``TRUE`` if this is a write to the sysctl file”h]”(jÐ)�”}”(hŒ``TRUE``”h]”hŒTRUE”…”�”}”(hjSPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjOPubhŒ& if this is a write to the sysctl file”…”�”}”(hjOPh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jKPh´MdhjLPubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj0Pubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jKPh´MdhjôOubjÄ)�”}”(hŒ!``void *buffer`` the user buffer ”h]”(jÊ)�”}”(hŒ``void *buffer``”h]”jÐ)�”}”(hj}Ph]”hŒ void *buffer”…”�”}”(hjPh²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´MehjwPubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe user buffer”h]”hŒthe user buffer”…”�”}”(hj–Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j’Ph´Mehj“Pubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjwPubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j’Ph´MehjôOubjÄ)�”}”(hŒ-``size_t *lenp`` the size of the user buffer ”h]”(jÊ)�”}”(hŒ``size_t *lenp``”h]”jÐ)�”}”(hj¶Ph]”hŒ size_t *lenp”…”�”}”(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´Mfhj°Pubjæ)�”}”(hhh]”hÌ)�”}”(hŒthe size of the user buffer”h]”hŒthe size of the user buffer”…”�”}”(hjÏPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jËPh´MfhjÌPubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj°Pubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jËPh´Mfhjô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´MghjéPubjæ)�”}”(hhh]”hÌ)�”}”(hŒ file position”h]”hŒ file position”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jQh´MghjQubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjéPubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jQh´MghjôOubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjØOubhÌ)�”}”(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³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:110: ./kernel/sysctl.c”h´MihjØOubhÌ)�”}”(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.”…”�”}”(hj@Qh²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´MhhjØOubhÌ)�”}”(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.”…”�”}”(hjOQh²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ØOubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hj`Qh]”hŒReturn”…”�”}”(hjbQh²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:110: ./kernel/sysctl.c”h´MohjØOubhÌ)�”}”(hŒ``0`` on success.”h]”(jÐ)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hjzQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjvQubhŒ on success.”…”�”}”(hjvQh²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´MphjØOubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj.h²hh³Nh´Nubeh}”(h]”Œsysctl-interface”ah ]”h"]”Œsysctl interface”ah$]”h&]”uh1hµhj.h²hh³hÊh´Klubh¶)�”}”(hhh]”(h»)�”}”(hŒproc filesystem interface”h]”hŒproc filesystem interface”…”�”}”(hj¥Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj¢Qh²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¢Qh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ%void proc_flush_pid (struct pid *pid)”h]”j)�”}”(hŒ$void proc_flush_pid(struct pid *pid)”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÌQh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÈQh²hh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:116: ./fs/proc/base.c”h´Mg ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛQh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÈQh²hh³jÚQh´Mg ubjC)�”}”(hŒproc_flush_pid”h]”jI)�”}”(hŒproc_flush_pid”h]”hŒproc_flush_pid”…”�”}”(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´Mg ubj=)�”}”(hŒ(struct pid *pid)”h]”jC)�”}”(hŒstruct pid *pid”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj Rh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjRubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjRubh)�”}”(hhh]”jI)�”}”(hŒpid”h]”hŒpid”…”�”}”(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ïQsbŒc.proc_flush_pid”†”asbuh1hhjRubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGRh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjRubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjURh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjRubjI)�”}”(hŒpid”h]”hŒpid”…”�”}”(hjbRh²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´Mg ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjÄQh²hh³jÚQh´Mg ubah}”(h]”j¿Qah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÚQh´Mg hjÁQh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ8Remove dcache entries for **pid** from the /proc dcache.”h]”(hŒRemove dcache entries for ”…”�”}”(hjŒRh²hh³Nh´Nubj©)�”}”(hŒ**pid**”h]”hŒpid”…”�”}”(hj”Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjŒRubhŒ from the /proc dcache.”…”�”}”(hjŒRh²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´Mg hj‰Rh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÁQh²hh³jÚQh´Mg ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j¶Rjšj¶Rj›‰jœ‰j�‰uh1jh²hhj¢Qh³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ÀRh]”hŒ Parameters”…”�”}”(hjÂRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¾Rubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:116: ./fs/proc/base.c”h´Mk hjºRubj¿)�”}”(hhh]”jÄ)�”}”(hŒ0``struct pid *pid`` pid that should be flushed. ”h]”(jÊ)�”}”(hŒ``struct pid *pid``”h]”jÐ)�”}”(hjßRh]”hŒstruct pid *pid”…”�”}”(hjáRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÝRubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:116: ./fs/proc/base.c”h´Mh hjÙRubjæ)�”}”(hhh]”hÌ)�”}”(hŒpid that should be flushed.”h]”hŒpid that should be flushed.”…”�”}”(hjøRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jôRh´Mh hjõRubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÙRubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jôRh´Mh hjÖRubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjºRubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjSh]”hŒ Description”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjSubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:116: ./fs/proc/base.c”h´Mj hjºRubhÌ)�”}”(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.”…”�”}”(hj0Sh²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´Mi hjºRubhÌ)�”}”(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.”…”�”}”(hj?Sh²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´Mm hjºRubhÌ)�”}”(hŒ**NOTE**”h]”j©)�”}”(hjPSh]”hŒNOTE”…”�”}”(hjRSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjNSubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:116: ./fs/proc/base.c”h´Ms hjºRubj¿)�”}”(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”…”�”}”(hjmSh²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´Mu hjiSubjæ)�”}”(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.”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j{Sh´Mu hj|Subah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjiSubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j{Sh´Mu hjfSubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjºRubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj¢Qh²hh³Nh´Nubeh}”(h]”Œproc-filesystem-interface”ah ]”h"]”Œproc filesystem interface”ah$]”h&]”uh1hµhj.h²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¹Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj¶Sh²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¶Sh²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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjàSh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÜSh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´K/ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïSh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÜSh²hh³jîSh´K/ubjC)�”}”(hŒeventfd_signal_mask”h]”jI)�”}”(hŒeventfd_signal_mask”h]”hŒeventfd_signal_mask”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjýSubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjÜSh²hh³jîSh´K/ubj=)�”}”(hŒ((struct eventfd_ctx *ctx, __poll_t mask)”h]”(jC)�”}”(hŒstruct eventfd_ctx *ctx”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjTubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*Th²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjTubh)�”}”(hhh]”jI)�”}”(hŒ eventfd_ctx”h]”hŒ eventfd_ctx”…”�”}”(hj;Th²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj8Tubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j=TŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjTsbŒc.eventfd_signal_mask”†”asbuh1hhjTubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[Th²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjTubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjiTh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjTubjI)�”}”(hŒctx”h]”hŒctx”…”�”}”(hjvTh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjTubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjTubjC)�”}”(hŒ __poll_t mask”h]”(h)�”}”(hhh]”jI)�”}”(hŒ__poll_t”h]”hŒ__poll_t”…”�”}”(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 ]”jWTŒc.eventfd_signal_mask”†”asbuh1hhj‹Tubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°Th²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‹TubjI)�”}”(hŒmask”h]”hŒmask”…”�”}”(hj¾Th²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‹Tubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjTubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjÜSh²hh³jîSh´K/ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjØSh²hh³jîSh´K/ubah}”(h]”jÓSah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jîSh´K/hjÕSh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒIncrement the event counter”h]”hŒIncrement the event counter”…”�”}”(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´K/hjåTh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÕSh²hh³jîSh´K/ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jUjšjUj›‰jœ‰j�‰uh1jh²hhj¶Sh³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©)�”}”(hj Uh]”hŒ Parameters”…”�”}”(hj Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjUubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´K3hjUubj¿)�”}”(hhh]”(jÄ)�”}”(hŒA``struct eventfd_ctx *ctx`` [in] Pointer to the eventfd context. ”h]”(jÊ)�”}”(hŒ``struct eventfd_ctx *ctx``”h]”jÐ)�”}”(hj)Uh]”hŒstruct eventfd_ctx *ctx”…”�”}”(hj+Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj'Uubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´K0hj#Uubjæ)�”}”(hhh]”hÌ)�”}”(hŒ$[in] Pointer to the eventfd context.”h]”hŒ$[in] Pointer to the eventfd context.”…”�”}”(hjBUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j>Uh´K0hj?Uubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj#Uubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j>Uh´K0hj UubjÄ)�”}”(hŒ!``__poll_t mask`` [in] poll mask ”h]”(jÊ)�”}”(hŒ``__poll_t mask``”h]”jÐ)�”}”(hjbUh]”hŒ __poll_t mask”…”�”}”(hjdUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj`Uubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´K1hj\Uubjæ)�”}”(hhh]”hÌ)�”}”(hŒ[in] poll mask”h]”hŒ[in] poll mask”…”�”}”(hj{Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jwUh´K1hjxUubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj\Uubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jwUh´K1hj Uubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjUubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hj�Uh]”hŒ Description”…”�”}”(hjŸUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj›Uubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´K3hjUubhÌ)�”}”(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³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´K2hjUubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj¶Sh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œeventfd_ctx_put (C function)”Œc.eventfd_ctx_put”hNt”auh1hýhj¶Sh²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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjâUh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÞUh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´Kaubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñUh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÞUh²hh³jðUh´KaubjC)�”}”(hŒeventfd_ctx_put”h]”jI)�”}”(hŒeventfd_ctx_put”h]”hŒeventfd_ctx_put”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÿUubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjÞUh²hh³jðUh´Kaubj=)�”}”(hŒ(struct eventfd_ctx *ctx)”h]”jC)�”}”(hŒstruct eventfd_ctx *ctx”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Œ eventfd_ctx”h]”hŒ eventfd_ctx”…”�”}”(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)�”}”jjVsbŒc.eventfd_ctx_put”†”asbuh1hhjVubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]Vh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjVubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjkVh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjVubjI)�”}”(hŒctx”h]”hŒctx”…”�”}”(hjxVh²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´Kaubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjÚUh²hh³jðUh´Kaubah}”(h]”jÕUah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jðUh´Kahj×Uh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ5Releases a reference to the internal eventfd context.”h]”hŒ5Releases 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´KahjŸVh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj×Uh²hh³jðUh´Kaubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jºVjšjºVj›‰jœ‰j�‰uh1jh²hhj¶Sh³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Ä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´Kehj¾Vubj¿)�”}”(hhh]”jÄ)�”}”(hŒ=``struct eventfd_ctx *ctx`` [in] Pointer to eventfd context. ”h]”(jÊ)�”}”(hŒ``struct eventfd_ctx *ctx``”h]”jÐ)�”}”(hjãVh]”hŒstruct eventfd_ctx *ctx”…”�”}”(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´KbhjÝVubjæ)�”}”(hhh]”hÌ)�”}”(hŒ [in] Pointer to eventfd context.”h]”hŒ [in] Pointer to eventfd context.”…”�”}”(hjüVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jøVh´KbhjùVubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÝVubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jøVh´KbhjÚVubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj¾VubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjWh]”hŒ Description”…”�”}”(hj Wh²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´Kdhj¾VubhÌ)�”}”(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().”…”�”}”(hj4Wh²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¾Vubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj¶Sh²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¶Sh²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjcWh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj_Wh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´Kºubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrWh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj_Wh²hh³jqWh´KºubjC)�”}”(hŒeventfd_ctx_remove_wait_queue”h]”jI)�”}”(hŒeventfd_ctx_remove_wait_queue”h]”hŒeventfd_ctx_remove_wait_queue”…”�”}”(hj„Wh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj€Wubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj_Wh²hh³jqWh´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 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Œ eventfd_ctx”h]”hŒ eventfd_ctx”…”�”}”(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†WsbŒc.eventfd_ctx_remove_wait_queue”†”asbuh1hhjœWubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞWh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjœWubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjìWh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjœWubjI)�”}”(hŒctx”h]”hŒctx”…”�”}”(hjùWh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjœWubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj˜WubjC)�”}”(hŒwait_queue_entry_t *wait”h]”(h)�”}”(hhh]”jI)�”}”(hŒwait_queue_entry_t”h]”hŒwait_queue_entry_t”…”�”}”(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ÚWŒc.eventfd_ctx_remove_wait_queue”†”asbuh1hhjXubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3Xh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjXubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjAXh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjXubjI)�”}”(hŒwait”h]”hŒwait”…”�”}”(hjNXh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjXubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj˜WubjC)�”}”(hŒ __u64 *cnt”h]”(h)�”}”(hhh]”jI)�”}”(hŒ__u64”h]”hŒ__u64”…”�”}”(hjjXh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjgXubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jlXŒmodname”NŒ classname”Njj )�”}”j ]”jÚWŒc.eventfd_ctx_remove_wait_queue”†”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Œcnt”h]”hŒcnt”…”�”}”(hj£Xh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjcXubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj˜Wubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj_Wh²hh³jqWh´Kºubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj[Wh²hh³jqWh´Kºubah}”(h]”jVWah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jqWh´KºhjXWh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ0Read the current counter and removes wait queue.”h]”hŒ0Read the current counter and removes wait queue.”…”�”}”(hjÍXh²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ÊXh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjXWh²hh³jqWh´Kºubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jåXjšjåXj›‰jœ‰j�‰uh1jh²hhj¶Sh³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©)�”}”(hjïXh]”hŒ Parameters”…”�”}”(hjñXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjíXubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´K¾hjéXubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ=``struct eventfd_ctx *ctx`` [in] Pointer to eventfd context. ”h]”(jÊ)�”}”(hŒ``struct eventfd_ctx *ctx``”h]”jÐ)�”}”(hjYh]”hŒstruct eventfd_ctx *ctx”…”�”}”(hjYh²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:122: ./fs/eventfd.c”h´K»hjYubjæ)�”}”(hhh]”hÌ)�”}”(hŒ [in] Pointer to eventfd context.”h]”hŒ [in] Pointer to eventfd context.”…”�”}”(hj'Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j#Yh´K»hj$Yubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjYubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j#Yh´K»hjYubjÄ)�”}”(hŒ<``wait_queue_entry_t *wait`` [in] Wait queue to be removed. ”h]”(jÊ)�”}”(hŒ``wait_queue_entry_t *wait``”h]”jÐ)�”}”(hjGYh]”hŒwait_queue_entry_t *wait”…”�”}”(hjIYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjEYubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´K¼hjAYubjæ)�”}”(hhh]”hÌ)�”}”(hŒ[in] Wait queue to be removed.”h]”hŒ[in] Wait queue to be removed.”…”�”}”(hj`Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j\Yh´K¼hj]Yubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjAYubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j\Yh´K¼hjYubjÄ)�”}”(hŒ:``__u64 *cnt`` [out] Pointer to the 64-bit counter value. ”h]”(jÊ)�”}”(hŒ``__u64 *cnt``”h]”jÐ)�”}”(hj€Yh]”hŒ __u64 *cnt”…”�”}”(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:122: ./fs/eventfd.c”h´K½hjzYubjæ)�”}”(hhh]”hÌ)�”}”(hŒ*[out] Pointer to the 64-bit counter value.”h]”hŒ*[out] Pointer to the 64-bit counter value.”…”�”}”(hj™Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j•Yh´K½hj–Yubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjzYubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j•Yh´K½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³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´K¿hjéXubhÌ)�”}”(hŒ:Returns ``0`` if successful, or the following error codes:”h]”(hŒReturns ”…”�”}”(hjÑYh²hh³Nh´NubjÐ)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hjÙYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÑYubhŒ- if successful, or the following error codes:”…”�”}”(hjÑYh²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¾hjéXubhŒ 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”…”�”}”hj Zsbah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjZubhŒoption_argument”“”)�”}”(hŒAGAIN”h]”hŒAGAIN”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œ delimiter”huh1jZhjZubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZhjþYubah}”(h]”h ]”h"]”h$]”h&]”uh1jüYhjùYubhŒ description”“”)�”}”(hŒ$: The operation would have blocked. ”h]”hÌ)�”}”(hŒ#: The operation would have blocked.”h]”hŒ#: The operation would have blocked.”…”�”}”(hj:Zh²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Àhj6Zubah}”(h]”h ]”h"]”h$]”h&]”uh1j4ZhjùYubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷YhjôYubah}”(h]”h ]”h"]”h$]”h&]”uh1jòYh³jHZh´KÀhjéXubhÌ)�”}”(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[Zh²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éXubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj¶Sh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œeventfd_fget (C function)”Œc.eventfd_fget”hNt”auh1hýhj¶Sh²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ŠZh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj†Zh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´M:ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜Zh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj†Zh²hh³j—Zh´M:ubh)�”}”(hhh]”jI)�”}”(hŒfile”h]”hŒ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)�”}”jŒ eventfd_fget”sbŒc.eventfd_fget”†”asbuh1hhj†Zh²hh³j—Zh´M:ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊZh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj†Zh²hh³j—Zh´M:ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjØZh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj†Zh²hh³j—Zh´M:ubjC)�”}”(hŒ eventfd_fget”h]”jI)�”}”(hjÇZh]”hŒ eventfd_fget”…”�”}”(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Œ(int fd)”h]”jC)�”}”(hŒint fd”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj[ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj[ubjI)�”}”(hŒfd”h]”hŒfd”…”�”}”(hj [h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj[ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjüZubah}”(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:hjZh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ2Acquire a reference of an eventfd file descriptor.”h]”hŒ2Acquire a reference of an eventfd file descriptor.”…”�”}”(hjJ[h²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:hjG[h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjZh²hh³j—Zh´M:ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jb[jšjb[j›‰jœ‰j�‰uh1jh²hhj¶Sh³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©)�”}”(hjl[h]”hŒ Parameters”…”�”}”(hjn[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´M>hjf[ubj¿)�”}”(hhh]”jÄ)�”}”(hŒ)``int fd`` [in] Eventfd file descriptor. ”h]”(jÊ)�”}”(hŒ ``int fd``”h]”jÐ)�”}”(hj‹[h]”hŒint fd”…”�”}”(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:122: ./fs/eventfd.c”h´M;hj…[ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ[in] Eventfd file descriptor.”h]”hŒ[in] Eventfd 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‚[ubah}”(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³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´M=hjf[ubhÌ)�”}”(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Ü[h²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<hjf[ubjóY)�”}”(hhh]”(jøY)�”}”(hhh]”(jýY)�”}”(hhh]”jZ)�”}”(hŒ-EBADF”h]”(jZ)�”}”(hŒ-E”h]”hŒ-E”…”�”}”hjø[sbah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjô[ubjZ)�”}”(hŒBADF”h]”hŒBADF”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œ delimiter”huh1jZhjô[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZhjñ[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jüYhjî[ubj5Z)�”}”(hŒ!: Invalid **fd** file descriptor.”h]”hÌ)�”}”(hj#\h]”(hŒ : Invalid ”…”�”}”(hj%\h²hh³Nh´Nubj©)�”}”(hŒ**fd**”h]”hŒfd”…”�”}”(hj,\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj%\ubhŒ file descriptor.”…”�”}”(hj%\h²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!\ubah}”(h]”h ]”h"]”h$]”h&]”uh1j4Zhjî[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷Yhjë[ubjøY)�”}”(hhh]”(jýY)�”}”(hhh]”jZ)�”}”(hŒ-EINVAL”h]”(jZ)�”}”(hŒ-E”h]”hŒ-E”…”�”}”hj[\sbah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjW\ubjZ)�”}”(hŒINVAL”h]”hŒINVAL”…”�”}”(hji\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œ delimiter”huh1jZhjW\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZhjT\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jüYhjQ\ubj5Z)�”}”(hŒ4: The **fd** file descriptor is not an eventfd file.”h]”hÌ)�”}”(hj†\h]”(hŒ: The ”…”�”}”(hjˆ\h²hh³Nh´Nubj©)�”}”(hŒ**fd**”h]”hŒfd”…”�”}”(hj�\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjˆ\ubhŒ( file descriptor is not an eventfd file.”…”�”}”(hjˆ\h²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„\ubah}”(h]”h ]”h"]”h$]”h&]”uh1j4ZhjQ\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷Yhjë[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jòYh³jD\h´M?hjf[ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj¶Sh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œeventfd_ctx_fdget (C function)”Œc.eventfd_ctx_fdget”hNt”auh1hýhj¶Sh²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Ú\h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjÖ\h²hh³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´MTubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjè\h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÖ\h²hh³jç\h´MTubh)�”}”(hhh]”jI)�”}”(hŒ eventfd_ctx”h]”hŒ eventfd_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)�”}”jŒeventfd_ctx_fdget”sbŒc.eventfd_ctx_fdget”†”asbuh1hhjÖ\h²hh³jç\h´MTubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÖ\h²hh³jç\h´MTubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj(]h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjÖ\h²hh³jç\h´MTubjC)�”}”(hŒeventfd_ctx_fdget”h]”jI)�”}”(hj]h]”hŒeventfd_ctx_fdget”…”�”}”(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´MTubj=)�”}”(hŒ(int fd)”h]”jC)�”}”(hŒint fd”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjT]h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjP]ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjb]h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjP]ubjI)�”}”(hŒfd”h]”hŒfd”…”�”}”(hjp]h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjP]ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjL]ubah}”(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Œ5Acquires a reference to the internal eventfd context.”h]”hŒ5Acquires a reference to the internal eventfd context.”…”�”}”(hjš]h²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—]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²hhj¶Sh³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¼]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:122: ./fs/eventfd.c”h´MXhj¶]ubj¿)�”}”(hhh]”jÄ)�”}”(hŒ)``int fd`` [in] Eventfd file descriptor. ”h]”(jÊ)�”}”(hŒ ``int fd``”h]”jÐ)�”}”(hjÛ]h]”hŒint fd”…”�”}”(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:122: ./fs/eventfd.c”h´MUhjÕ]ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ[in] Eventfd file descriptor.”h]”hŒ[in] Eventfd file descriptor.”…”�”}”(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Ò]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³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´MWhj¶]ubhÌ)�”}”(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,^h²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¶]ubhÌ)�”}”(hŒ eventfd_fget”h]”hŒ eventfd_fget”…”�”}”(hj;^h²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¶]ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj¶Sh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ eventfd_ctx_fileget (C function)”Œc.eventfd_ctx_fileget”hNt”auh1hýhj¶Sh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒah"]”h$]”h&]”uh1j1hjf^h²hh³jw^h´Mfubh)�”}”(hhh]”jI)�”}”(hŒ eventfd_ctx”h]”hŒ eventfd_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)�”}”jŒeventfd_ctx_fileget”sbŒc.eventfd_ctx_fileget”†”asbuh1hhjf^h²hh³jw^h´Mfubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjª^h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjf^h²hh³jw^h´Mfubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj¸^h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjf^h²hh³jw^h´MfubjC)�”}”(hŒeventfd_ctx_fileget”h]”jI)�”}”(hj§^h]”hŒeventfd_ctx_fileget”…”�”}”(hjÉ^h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÅ^ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jau•Bh1jBhjf^h²hh³jw^h´Mfubj=)�”}”(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¥^Œc.eventfd_ctx_fileget”†”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<hjf^h²hh³jw^h´Mfubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjb^h²hh³jw^h´Mfubah}”(h]”j]^ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jw^h´Mfhj_^h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ5Acquires a reference to the internal eventfd context.”h]”hŒ5Acquires a reference to the internal eventfd context.”…”�”}”(hje_h²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´Mfhjb_h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj_^h²hh³jw^h´Mfubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j}_jšj}_j›‰jœ‰j�‰uh1jh²hhj¶Sh³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‡_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:122: ./fs/eventfd.c”h´Mjhj�_ubj¿)�”}”(hhh]”jÄ)�”}”(hŒ1``struct file *file`` [in] Eventfd 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³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´Mghj _ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ[in] Eventfd file pointer.”h]”hŒ[in] Eventfd file pointer.”…”�”}”(hj¿_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j»_h´Mghj¼_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj _ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j»_h´Mghj�_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³ŒU/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:122: ./fs/eventfd.c”h´Mihj�_ubhÌ)�”}”(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÷_h²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�_ubjóY)�”}”(hhh]”jøY)�”}”(hhh]”(jýY)�”}”(hhh]”jZ)�”}”(hŒ-EINVAL”h]”(jZ)�”}”(hŒ-E”h]”hŒ-E”…”�”}”hj`sbah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj`ubjZ)�”}”(hŒINVAL”h]”hŒINVAL”…”�”}”(hj!`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œ delimiter”huh1jZhj`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZhj `ubah}”(h]”h ]”h"]”h$]”h&]”uh1jüYhj `ubj5Z)�”}”(hŒ4: The **fd** file descriptor is not an eventfd file.”h]”hÌ)�”}”(hj>`h]”(hŒ: The ”…”�”}”(hj@`h²hh³Nh´Nubj©)�”}”(hŒ**fd**”h]”hŒfd”…”�”}”(hjG`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj@`ubhŒ( file descriptor is not an eventfd file.”…”�”}”(hj@`h²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´Mkhj<`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j4Zhj `ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j÷Yhj`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jòYh³j_`h´Mkhj�_ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj¶Sh²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„`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 Œ!busy_loop_ep_timeout (C function)”Œc.busy_loop_ep_timeout”hNt”auh1hýhj�`h²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]”(jf)�”}”(hjih]”hŒbool”…”�”}”(hj«`h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj§`h²hh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´Mqubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹`h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj§`h²hh³j¸`h´MqubjC)�”}”(hŒbusy_loop_ep_timeout”h]”jI)�”}”(hŒbusy_loop_ep_timeout”h]”hŒbusy_loop_ep_timeout”…”�”}”(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´Mqubj=)�”}”(hŒ0(unsigned long start_time, struct eventpoll *ep)”h]”(jC)�”}”(hŒunsigned long start_time”h]”(jf)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjç`h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjã`ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõ`h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjã`ubjf)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjã`ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjã`ubjI)�”}”(hŒ start_time”h]”hŒ start_time”…”�”}”(hjah²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”…”�”}”(hj8ah²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj4aubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjEah²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj4aubh)�”}”(hhh]”jI)�”}”(hŒ eventpoll”h]”hŒ eventpoll”…”�”}”(hjVah²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjSaubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jXaŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjÍ`sbŒc.busy_loop_ep_timeout”†”asbuh1hhj4aubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvah²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj4aubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj„ah²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj4aubjI)�”}”(hŒep”h]”hŒep”…”�”}”(hj‘ah²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj4aubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjß`ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj§`h²hh³j¸`h´Mqubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj£`h²hh³j¸`h´Mqubah}”(h]”jž`ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j¸`h´Mqhj `h²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»ah²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¸ah²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj `h²hh³j¸`h´Mqubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÓajšjÓaj›‰jœ‰j�‰uh1jh²hhj�`h³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Ýah]”hŒ Parameters”…”�”}”(hjßah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjÛaubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´Muhj×aubj¿)�”}”(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üah]”hŒunsigned long start_time”…”�”}”(hjþah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjúaubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´Muhjöaubjæ)�”}”(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.”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jbh´Muhjbubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjöaubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jbh´MuhjóaubjÄ)�”}”(hŒ;``struct eventpoll *ep`` Pointer to the eventpoll context. ”h]”(jÊ)�”}”(hŒ``struct eventpoll *ep``”h]”jÐ)�”}”(hj5bh]”hŒstruct eventpoll *ep”…”�”}”(hj7bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj3bubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´Mvhj/bubjæ)�”}”(hhh]”hÌ)�”}”(hŒ!Pointer to the eventpoll context.”h]”hŒ!Pointer to the eventpoll context.”…”�”}”(hjNbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jJbh´MvhjKbubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj/bubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jJbh´Mvhjóaubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj×aubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hjpbh]”hŒReturn”…”�”}”(hjrbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjnbubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´Mxhj×aubhÌ)�”}”(hŒ1true if the timeout has expired, false otherwise.”h]”hŒ1true if the timeout has expired, false otherwise.”…”�”}”(hj†bh²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´Mxhj×aubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj�`h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œreverse_path_check (C function)”Œc.reverse_path_check”hNt”auh1hýhj�`h²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjµbh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj±bh²hh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´M²ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄbh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj±bh²hh³jÃbh´M²ubjC)�”}”(hŒreverse_path_check”h]”jI)�”}”(hŒreverse_path_check”h]”hŒreverse_path_check”…”�”}”(hjÖbh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÒbubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj±bh²hh³jÃbh´M²ubj=)�”}”(hŒ(struct ep_ctl_ctx *ctx)”h]”jC)�”}”(hŒstruct ep_ctl_ctx *ctx”h]”(j )�”}”(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Œ ep_ctl_ctx”h]”hŒ ep_ctl_ctx”…”�”}”(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 ]”j)�”}”jjØbsbŒc.reverse_path_check”†”asbuh1hhjîbubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0ch²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Œctx”h]”hŒctx”…”�”}”(hjKch²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjîbubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjêbubah}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj±bh²hh³jÃbh´M²ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj­bh²hh³jÃbh´M²ubah}”(h]”j¨bah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÃbh´M²hjªbh²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[].”…”�”}”(hjuch²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²hjrch²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjªbh²hh³jÃbh´M²ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j�cjšj�cj›‰jœ‰j�‰uh1jh²hhj�`h³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—ch]”hŒ Parameters”…”�”}”(hj™ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj•cubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´M¶hj‘cubj¿)�”}”(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¶ch]”hŒstruct ep_ctl_ctx *ctx”…”�”}”(hj¸ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj´cubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´M¶hj°cubjæ)�”}”(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Ï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­cubah}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj‘cubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hjñch]”hŒReturn”…”�”}”(hjóch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjïcubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´M¸hj‘cubhÌ)�”}”(hŒM``zero`` if the proposed links don't create too many paths, ``-1`` otherwise.”h]”(jÐ)�”}”(hŒ``zero``”h]”hŒzero”…”�”}”(hj dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjdubhŒ6 if the proposed links don’t create too many paths, ”…”�”}”(hjdh²hh³Nh´NubjÐ)�”}”(hŒ``-1``”h]”hŒ-1”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjdubhŒ otherwise.”…”�”}”(hjdh²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‘cubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj�`h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œep_poll (C function)”Œ c.ep_poll”hNt”auh1hýhj�`h²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjVdh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjRdh²hh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´M¿ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjedh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjRdh²hh³jddh´M¿ubjC)�”}”(hŒep_poll”h]”jI)�”}”(hŒep_poll”h]”hŒep_poll”…”�”}”(hjwdh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjsdubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjRdh²hh³jddh´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“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Œ eventpoll”h]”hŒ eventpoll”…”�”}”(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)�”}”jjydsbŒ c.ep_poll”†”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Œep”h]”hŒep”…”�”}”(hjìdh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj�dubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj‹dubjC)�”}”(hŒ!struct epoll_event __user *events”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjeubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjeubh)�”}”(hhh]”jI)�”}”(hŒ epoll_event”h]”hŒ epoll_event”…”�”}”(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.ep_poll”†”asbuh1hhjeubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjAeh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjeubhŒ__user”…”�”}”(hjeh²hh³Nh´Nubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSeh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjeubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjaeh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjeubjI)�”}”(hŒevents”h]”hŒevents”…”�”}”(hjneh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjeubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj‹dubjC)�”}”(hŒ int maxevents”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj‡eh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjƒeubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•eh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjƒeubjI)�”}”(hŒ maxevents”h]”hŒ maxevents”…”�”}”(hj£eh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjƒeubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj‹dubjC)�”}”(hŒstruct timespec64 *timeout”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Œ timespec64”h]”hŒ timespec64”…”�”}”(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.ep_poll”†”asbuh1hhj¸eubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjøeh²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Œtimeout”h]”hŒtimeout”…”�”}”(hjfh²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<hjRdh²hh³jddh´M¿ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjNdh²hh³jddh´M¿ubah}”(h]”jIdah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jddh´M¿hjKdh²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.”…”�”}”(hj=fh²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:fh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjKdh²hh³jddh´M¿ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jUfjšjUfj›‰jœ‰j�‰uh1jh²hhj�`h³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_fh]”hŒ Parameters”…”�”}”(hjafh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj]fubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´MÃhjYfubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ;``struct eventpoll *ep`` Pointer to the eventpoll context. ”h]”(jÊ)�”}”(hŒ``struct eventpoll *ep``”h]”jÐ)�”}”(hj~fh]”hŒstruct eventpoll *ep”…”�”}”(hj€fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj|fubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´MÂhjxfubjæ)�”}”(hhh]”hÌ)�”}”(hŒ!Pointer to the eventpoll context.”h]”hŒ!Pointer to the eventpoll context.”…”�”}”(hj—fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j“fh´MÂhj”fubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjxfubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j“fh´MÂhjufubjÄ)�”}”(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·fh]”hŒ!struct epoll_event __user *events”…”�”}”(hj¹fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjµfubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´MÄhj±fubjæ)�”}”(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Ðfh²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Ífubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj±fubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÌfh´MÄhjufubjÄ)�”}”(hŒR``int maxevents`` Size (in terms of number of events) of the caller event buffer. ”h]”(jÊ)�”}”(hŒ``int maxevents``”h]”jÐ)�”}”(hjñfh]”hŒ int maxevents”…”�”}”(hjófh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjïfubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´MÅhjëfubjæ)�”}”(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.”…”�”}”(hj gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jgh´MÅhjgubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjëfubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jgh´MÅhjufubjÄ)�”}”(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Ð)�”}”(hj*gh]”hŒstruct timespec64 *timeout”…”�”}”(hj,gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj(gubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´MÊhj$gubjæ)�”}”(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 ”…”�”}”(hjCgh²hh³Nh´Nubj©)�”}”(hŒ **timeout**”h]”hŒtimeout”…”�”}”(hjKgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjCgubhŒi ptr is NULL, the function will block until at least one event has been retrieved (or an error occurred).”…”�”}”(hjCgh²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@gubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj$gubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j?gh´MÊhjufubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjYfubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hjxgh]”hŒReturn”…”�”}”(hjzgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjvgubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´MÌhjYfubhÌ)�”}”(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Žgh²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ÌhjYfubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj�`h²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�`h²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj½gh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj¹gh²hh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´MK ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌgh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¹gh²hh³jËgh´MK ubjC)�”}”(hŒep_loop_check_proc”h]”jI)�”}”(hŒep_loop_check_proc”h]”hŒep_loop_check_proc”…”�”}”(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´MK 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ú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Œ ep_ctl_ctx”h]”hŒ ep_ctl_ctx”…”�”}”(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.ep_loop_check_proc”†”asbuh1hhjögubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8hh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjögubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjFhh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjögubjI)�”}”(hŒctx”h]”hŒctx”…”�”}”(hjShh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjögubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjògubjC)�”}”(hŒstruct eventpoll *ep”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjlhh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjhhubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyhh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjhhubh)�”}”(hhh]”jI)�”}”(hŒ eventpoll”h]”hŒ eventpoll”…”�”}”(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 ]”j4hŒc.ep_loop_check_proc”†”asbuh1hhjhhubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨hh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjhhubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj¶hh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjhhubjI)�”}”(hŒep”h]”hŒep”…”�”}”(hjÃhh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjhhubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjògubjC)�”}”(hŒ int depth”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjÜhh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjØhubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjêhh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjØhubjI)�”}”(hŒdepth”h]”hŒdepth”…”�”}”(hjøhh²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<hj¹gh²hh³jËgh´MK ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjµgh²hh³jËgh´MK ubah}”(h]”j°gah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jËgh´MK hj²gh²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 ”…”�”}”(hj"ih²hh³Nh´Nubj©)�”}”(hŒ**ep**”h]”hŒep”…”�”}”(hj*ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj"iubhŒl inside another epoll file does not create closed loops, and determine the depth of the subtree starting at ”…”�”}”(hj"ih²hh³Nh´Nubj©)�”}”(hŒ**ep**”h]”hŒep”…”�”}”(hj` 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©)�”}”(hjdih]”hŒ Parameters”…”�”}”(hjfih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjbiubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´MO hj^iubj¿)�”}”(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ƒih]”hŒstruct ep_ctl_ctx *ctx”…”�”}”(hj…ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj�iubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´MO hj}iubjæ)�”}”(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œih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j˜ih´MO hj™iubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj}iubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j˜ih´MO hjziubjÄ)�”}”(hŒ]``struct eventpoll *ep`` the :c:type:`struct eventpoll ` to be currently checked. ”h]”(jÊ)�”}”(hŒ``struct eventpoll *ep``”h]”jÐ)�”}”(hj¼ih]”hŒstruct eventpoll *ep”…”�”}”(hj¾ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjºiubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´MP hj¶iubjæ)�”}”(hhh]”hÌ)�”}”(hŒCthe :c:type:`struct eventpoll ` to be currently checked.”h]”(hŒthe ”…”�”}”(hjÕih²hh³Nh´Nubh)�”}”(hŒ&:c:type:`struct eventpoll `”h]”jÐ)�”}”(hjßih]”hŒstruct eventpoll”…”�”}”(hjáih²hh³Nh´Nubah}”(h]”h ]”(j› j“Œc-type”eh"]”h$]”h&]”uh1jÏhjÝiubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j§ Œ refdomain”j“Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jj­ j° Œ eventpoll”uh1hh³jÑih´MP hjÕiubhŒ to be currently checked.”…”�”}”(hjÕih²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÑih´MP hjÒiubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¶iubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÑih´MP hjziubjÄ)�”}”(hŒ7``int depth`` Current depth of the path being checked. ”h]”(jÊ)�”}”(hŒ ``int depth``”h]”jÐ)�”}”(hjjh]”hŒ int depth”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´MQ hjjubjæ)�”}”(hhh]”hÌ)�”}”(hŒ(Current depth of the path being checked.”h]”hŒ(Current depth of the path being checked.”…”�”}”(hj1jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j-jh´MQ hj.jubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j-jh´MQ hjziubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj^iubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hjSjh]”hŒReturn”…”�”}”(hjUjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjQjubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´MS hj^iubhÌ)�”}”(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.”…”�”}”(hjijh²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´MS hj^iubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj�`h²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œep_loop_check (C function)”Œc.ep_loop_check”hNt”auh1hýhj�`h²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj˜jh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj”jh²hh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´M� ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§jh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj”jh²hh³j¦jh´M� ubjC)�”}”(hŒ ep_loop_check”h]”jI)�”}”(hŒ ep_loop_check”h]”hŒ ep_loop_check”…”�”}”(hj¹jh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjµjubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj”jh²hh³j¦jh´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Õ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Œ ep_ctl_ctx”h]”hŒ ep_ctl_ctx”…”�”}”(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.ep_loop_check”†”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Œctx”h]”hŒctx”…”�”}”(hj.kh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÑjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÍjubjC)�”}”(hŒstruct eventpoll *ep”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjGkh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjCkubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTkh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjCkubh)�”}”(hhh]”jI)�”}”(hŒ eventpoll”h]”hŒ eventpoll”…”�”}”(hjekh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjbkubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jgkŒmodname”NŒ classname”Njj )�”}”j ]”jkŒc.ep_loop_check”†”asbuh1hhjCkubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒkh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjCkubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj‘kh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjCkubjI)�”}”(hŒep”h]”hŒep”…”�”}”(hjžkh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjCkubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÍjubjC)�”}”(hŒstruct eventpoll *to”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hj·kh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj³kubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄkh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj³kubh)�”}”(hhh]”jI)�”}”(hŒ eventpoll”h]”hŒ eventpoll”…”�”}”(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 ]”jkŒc.ep_loop_check”†”asbuh1hhj³kubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjókh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj³kubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj³kubjI)�”}”(hŒto”h]”hŒto”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj³kubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjÍjubeh}”(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Œž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 (”…”�”}”(hj8lh²hh³Nh´Nubj©)�”}”(hŒ**to**”h]”hŒto”…”�”}”(hj@lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj8lubhŒ*) into another epoll file (represented by ”…”�”}”(hj8lh²hh³Nh´Nubj©)�”}”(hŒ**ep**”h]”hŒep”…”�”}”(hjRlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj8lubhŒ2) does not create closed loops or too deep chains.”…”�”}”(hj8lh²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� hj5lh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj�jh²hh³j¦jh´M� ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jtljšjtlj›‰jœ‰j�‰uh1jh²hhj�`h³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~lh]”hŒ Parameters”…”�”}”(hj€lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj|lubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´M” hjxlubj¿)�”}”(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�lh]”hŒstruct ep_ctl_ctx *ctx”…”�”}”(hjŸlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj›lubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´M” hj—lubjæ)�”}”(hhh]”hÌ)�”}”(hŒPer-CTL_ADD scratch context.”h]”hŒPer-CTL_ADD scratch context.”…”�”}”(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” hj”lubjÄ)�”}”(hŒE``struct eventpoll *ep`` Pointer to the epoll we are inserting into. ”h]”(jÊ)�”}”(hŒ``struct eventpoll *ep``”h]”jÐ)�”}”(hjÖlh]”hŒstruct eventpoll *ep”…”�”}”(hjØlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÔlubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´M• hjÐlubjæ)�”}”(hhh]”hÌ)�”}”(hŒ+Pointer to the epoll we are inserting into.”h]”hŒ+Pointer to the epoll we are inserting into.”…”�”}”(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• hj”lubjÄ)�”}”(hŒ>``struct eventpoll *to`` Pointer to the epoll to be inserted. ”h]”(jÊ)�”}”(hŒ``struct eventpoll *to``”h]”jÐ)�”}”(hjmh]”hŒstruct eventpoll *to”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj mubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´M– hj mubjæ)�”}”(hhh]”hÌ)�”}”(hŒ$Pointer to the epoll to be inserted.”h]”hŒ$Pointer to the epoll to be inserted.”…”�”}”(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– hj”lubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjxlubhÌ)�”}”(hŒ **Return**”h]”j©)�”}”(hjJmh]”hŒReturn”…”�”}”(hjLmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjHmubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒW/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:128: ./fs/eventpoll.c”h´M˜ hjxlubhÌ)�”}”(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”…”�”}”(hjdmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj`mubhŒ if adding the epoll ”…”�”}”(hj`mh²hh³Nh´Nubj©)�”}”(hŒ**to**”h]”hŒto”…”�”}”(hjvmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj`mubhŒ inside the epoll ”…”�”}”(hj`mh²hh³Nh´Nubj©)�”}”(hŒ**from**”h]”hŒfrom”…”�”}”(hjˆmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj`mubhŒ& does not violate the constraints, or ”…”�”}”(hj`mh²hh³Nh´NubjÐ)�”}”(hŒ``-1``”h]”hŒ-1”…”�”}”(hjšmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj`mubhŒ otherwise.”…”�”}”(hj`mh²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˜ hjxlubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhj�`h²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Åmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjÂmh²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Âmh²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjìmh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjèmh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´Mjubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjûmh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjèmh²hh³júmh´MjubjC)�”}”(hŒsysfs_create_file_ns”h]”jI)�”}”(hŒsysfs_create_file_ns”h]”hŒsysfs_create_file_ns”…”�”}”(hj nh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj nubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjèmh²hh³júmh´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”…”�”}”(hj)nh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj%nubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6nh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj%nubh)�”}”(hhh]”jI)�”}”(hŒkobject”h]”hŒkobject”…”�”}”(hjGnh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjDnubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jInŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjnsbŒc.sysfs_create_file_ns”†”asbuh1hhj%nubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjgnh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj%nubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjunh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj%nubjI)�”}”(hŒkobj”h]”hŒkobj”…”�”}”(hj‚nh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj%nubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj!nubjC)�”}”(hŒconst struct attribute *attr”h]”(j )�”}”(hj¾h]”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 )�”}”(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Œ attribute”h]”hŒ attribute”…”�”}”(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 ]”jcnŒc.sysfs_create_file_ns”†”asbuh1hhj—nubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjònh²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Œattr”h]”hŒattr”…”�”}”(hj oh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj—nubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj!nubjC)�”}”(hŒconst struct ns_common *ns”h]”(j )�”}”(hj¾h]”hŒconst”…”�”}”(hj&oh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj"oubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3oh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj"oubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjAoh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj"oubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNoh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj"oubh)�”}”(hhh]”jI)�”}”(hŒ ns_common”h]”hŒ ns_common”…”�”}”(hj_oh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj\oubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jaoŒmodname”NŒ classname”Njj )�”}”j ]”jcnŒc.sysfs_create_file_ns”†”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Œns”h]”hŒns”…”�”}”(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èmh²hh³júmh´Mjubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjämh²hh³júmh´Mjubah}”(h]”jßmah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³júmh´Mjhjámh²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Âoh²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¿oh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjámh²hh³júmh´Mjubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÚojšjÚoj›‰jœ‰j�‰uh1jh²hhjÂmh³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äoh]”hŒ Parameters”…”�”}”(hjæoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjâoubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´MnhjÞoubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ3``struct kobject *kobj`` object we're creating for ”h]”(jÊ)�”}”(hŒ``struct kobject *kobj``”h]”jÐ)�”}”(hjph]”hŒstruct kobject *kobj”…”�”}”(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:134: ./fs/sysfs/file.c”h´Mkhjýoubjæ)�”}”(hhh]”hÌ)�”}”(hŒobject we're creating for”h]”hŒobject we’re creating for”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jph´Mkhjpubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjýoubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jph´MkhjúoubjÄ)�”}”(hŒ6``const struct attribute *attr`` attribute descriptor ”h]”(jÊ)�”}”(hŒ ``const struct attribute *attr``”h]”jÐ)�”}”(hjph²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:134: ./fs/sysfs/file.c”h´Mlhj6pubjæ)�”}”(hhh]”hÌ)�”}”(hŒattribute descriptor”h]”hŒattribute descriptor”…”�”}”(hjUph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jQph´MlhjRpubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj6pubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jQph´MlhjúoubjÄ)�”}”(hŒF``const struct ns_common *ns`` namespace the new file should belong to”h]”(jÊ)�”}”(hŒ``const struct ns_common *ns``”h]”jÐ)�”}”(hjuph]”hŒconst struct ns_common *ns”…”�”}”(hjwph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjspubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´Mnhjopubjæ)�”}”(hhh]”hÌ)�”}”(hŒ'namespace the new file should belong to”h]”hŒ'namespace the new file should belong to”…”�”}”(hjŽph²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‹pubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjopubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jŠph´Mnhjúoubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÞoubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjÂmh²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Âmh²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjÏph²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjËph²hh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´MŒubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞph²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjËph²hh³jÝph´MŒubjC)�”}”(hŒsysfs_add_file_to_group”h]”jI)�”}”(hŒsysfs_add_file_to_group”h]”hŒsysfs_add_file_to_group”…”�”}”(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´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 qh²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Œkobject”h]”hŒkobject”…”�”}”(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.sysfs_add_file_to_group”†”asbuh1hhjqubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJqh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjqubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjXqh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjqubjI)�”}”(hŒkobj”h]”hŒkobj”…”�”}”(hjeqh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjqubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjqubjC)�”}”(hŒconst struct attribute *attr”h]”(j )�”}”(hj¾h]”hŒconst”…”�”}”(hj~qh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjzqubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹qh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjzqubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj™qh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjzqubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦qh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjzqubh)�”}”(hhh]”jI)�”}”(hŒ attribute”h]”hŒ attribute”…”�”}”(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 ]”jFqŒc.sysfs_add_file_to_group”†”asbuh1hhjzqubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕqh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjzqubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjãqh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjzqubjI)�”}”(hŒattr”h]”hŒattr”…”�”}”(hjðqh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjzqubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjqubjC)�”}”(hŒconst char *group”h]”(j )�”}”(hj¾h]”hŒconst”…”�”}”(hj rh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjrubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjrubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj$rh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjrubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2rh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjrubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj@rh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjrubjI)�”}”(hŒgroup”h]”hŒgroup”…”�”}”(hjMrh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjrubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjqubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjËph²hh³jÝph´MŒubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjÇph²hh³jÝph´MŒubah}”(h]”jÂpah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÝph´MŒhjÄph²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ.add an attribute file to a pre-existing group.”h]”hŒ.add an attribute file to a pre-existing group.”…”�”}”(hjwrh²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Œhjtrh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjÄph²hh³jÝph´MŒubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j�rjšj�rj›‰jœ‰j�‰uh1jh²hhjÂmh³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™rh]”hŒ Parameters”…”�”}”(hj›rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj—rubah}”(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“rubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ2``struct kobject *kobj`` object we're acting for. ”h]”(jÊ)�”}”(hŒ``struct kobject *kobj``”h]”jÐ)�”}”(hj¸rh]”hŒstruct kobject *kobj”…”�”}”(hjºrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj¶rubah}”(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²rubjæ)�”}”(hhh]”hÌ)�”}”(hŒobject we're acting for.”h]”hŒobject we’re acting for.”…”�”}”(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¯rubjÄ)�”}”(hŒ7``const struct attribute *attr`` attribute descriptor. ”h]”(jÊ)�”}”(hŒ ``const struct attribute *attr``”h]”jÐ)�”}”(hjñrh]”hŒconst struct attribute *attr”…”�”}”(hjórh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjïrubah}”(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ërubjæ)�”}”(hhh]”hÌ)�”}”(hŒattribute descriptor.”h]”hŒattribute descriptor.”…”�”}”(hj sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jsh´MŽhjsubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjërubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jsh´MŽhj¯rubjÄ)�”}”(hŒ!``const char *group`` group name.”h]”(jÊ)�”}”(hŒ``const char *group``”h]”jÐ)�”}”(hj*sh]”hŒconst char *group”…”�”}”(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:134: ./fs/sysfs/file.c”h´M�hj$subjæ)�”}”(hhh]”hÌ)�”}”(hŒ group name.”h]”hŒ group name.”…”�”}”(hjCsh²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@subah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj$subeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j?sh´M�hj¯rubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj“rubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjÂmh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œsysfs_chmod_file (C function)”Œc.sysfs_chmod_file”hNt”auh1hýhjÂmh²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj„sh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj€sh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´M­ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“sh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj€sh²hh³j’sh´M­ubjC)�”}”(hŒsysfs_chmod_file”h]”jI)�”}”(hŒsysfs_chmod_file”h]”hŒsysfs_chmod_file”…”�”}”(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´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Á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Œkobject”h]”hŒkobject”…”�”}”(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.sysfs_chmod_file”†”asbuh1hhj½subj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿsh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj½subj“)�”}”(hj–h]”hŒ*”…”�”}”(hj th²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj½subjI)�”}”(hŒkobj”h]”hŒkobj”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj½subeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¹subjC)�”}”(hŒconst struct attribute *attr”h]”(j )�”}”(hj¾h]”hŒconst”…”�”}”(hj3th²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/tubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hjNth²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Œ attribute”h]”hŒ attribute”…”�”}”(hjlth²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjitubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jntŒmodname”NŒ classname”Njj )�”}”j ]”jûsŒc.sysfs_chmod_file”†”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Œattr”h]”hŒattr”…”�”}”(hj¥th²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj/tubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¹subjC)�”}”(hŒ umode_t mode”h]”(h)�”}”(hhh]”jI)�”}”(hŒumode_t”h]”hŒumode_t”…”�”}”(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ûsŒc.sysfs_chmod_file”†”asbuh1hhjºtubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjßth²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjºtubjI)�”}”(hŒmode”h]”hŒmode”…”�”}”(hjíth²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjºtubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¹subeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj€sh²hh³j’sh´M­ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj|sh²hh³j’sh´M­ubah}”(h]”jwsah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j’sh´M­hjysh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ6update the modified mode value on an object attribute.”h]”hŒ6update the modified mode value on an object attribute.”…”�”}”(hjuh²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­hjuh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjysh²hh³j’sh´M­ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j/ujšj/uj›‰jœ‰j�‰uh1jh²hhjÂmh³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©)�”}”(hj9uh]”hŒ Parameters”…”�”}”(hj;uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj7uubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´M±hj3uubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ2``struct kobject *kobj`` object we're acting for. ”h]”(jÊ)�”}”(hŒ``struct kobject *kobj``”h]”jÐ)�”}”(hjXuh]”hŒstruct kobject *kobj”…”�”}”(hjZuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjVuubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´M®hjRuubjæ)�”}”(hhh]”hÌ)�”}”(hŒobject we're acting for.”h]”hŒobject we’re acting for.”…”�”}”(hjquh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jmuh´M®hjnuubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjRuubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jmuh´M®hjOuubjÄ)�”}”(hŒ7``const struct attribute *attr`` attribute descriptor. ”h]”(jÊ)�”}”(hŒ ``const struct attribute *attr``”h]”jÐ)�”}”(hj‘uh]”hŒconst struct attribute *attr”…”�”}”(hj“uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj�uubah}”(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‹uubjæ)�”}”(hhh]”hÌ)�”}”(hŒattribute descriptor.”h]”hŒattribute descriptor.”…”�”}”(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¯hjOuubjÄ)�”}”(hŒ"``umode_t mode`` file permissions.”h]”(jÊ)�”}”(hŒ``umode_t mode``”h]”jÐ)�”}”(hjÊuh]”hŒ umode_t mode”…”�”}”(hjÌuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjÈuubah}”(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Äuubjæ)�”}”(hhh]”hÌ)�”}”(hŒfile permissions.”h]”hŒfile permissions.”…”�”}”(hjãuh²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àuubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÄuubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jßuh´M±hjOuubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj3uubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjÂmh²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Âmh²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”…”�”}”(hj$vh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj vh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´MÉubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2vh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj vh²hh³j1vh´MÉubh)�”}”(hhh]”jI)�”}”(hŒ kernfs_node”h]”hŒ kernfs_node”…”�”}”(hjCvh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj@vubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jEvŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒsysfs_break_active_protection”sbŒc.sysfs_break_active_protection”†”asbuh1hhj vh²hh³j1vh´MÉubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdvh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj vh²hh³j1vh´MÉubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjrvh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj vh²hh³j1vh´MÉubjC)�”}”(hŒsysfs_break_active_protection”h]”jI)�”}”(hjavh]”hŒsysfs_break_active_protection”…”�”}”(hjƒvh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjvubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj vh²hh³j1vh´MÉubj=)�”}”(hŒ4(struct kobject *kobj, const struct attribute *attr)”h]”(jC)�”}”(hŒstruct kobject *kobj”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Œkobject”h]”hŒkobject”…”�”}”(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_vŒc.sysfs_break_active_protection”†”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Œkobj”h]”hŒkobj”…”�”}”(hjõvh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjšvubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj–vubjC)�”}”(hŒconst struct attribute *attr”h]”(j )�”}”(hj¾h]”hŒconst”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj wubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj wubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj)wh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj wubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6wh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj wubh)�”}”(hhh]”jI)�”}”(hŒ attribute”h]”hŒ attribute”…”�”}”(hjGwh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjDwubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jIwŒmodname”NŒ classname”Njj )�”}”j ]”j_vŒc.sysfs_break_active_protection”†”asbuh1hhj wubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjewh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj wubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjswh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj wubjI)�”}”(hŒattr”h]”hŒattr”…”�”}”(hj€wh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj wubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj–vubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj vh²hh³j1vh´MÉubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjvh²hh³j1vh´MÉubah}”(h]”jvah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j1vh´MÉhjvh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒbreak "active" protection”h]”hŒbreak “activeâ€� protection”…”�”}”(hjªwh²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§wh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjvh²hh³j1vh´MÉubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÂwjšjÂwj›‰jœ‰j�‰uh1jh²hhjÂmh³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Ìwh]”hŒ Parameters”…”�”}”(hjÎwh²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:134: ./fs/sysfs/file.c”h´MÍhjÆwubj¿)�”}”(hhh]”(jÄ)�”}”(hŒH``struct kobject *kobj`` The kernel object **attr** is associated with. ”h]”(jÊ)�”}”(hŒ``struct kobject *kobj``”h]”jÐ)�”}”(hjëwh]”hŒstruct kobject *kobj”…”�”}”(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:134: ./fs/sysfs/file.c”h´MÊhjåwubjæ)�”}”(hhh]”hÌ)�”}”(hŒ.The kernel object **attr** is associated with.”h]”(hŒThe kernel object ”…”�”}”(hjxh²hh³Nh´Nubj©)�”}”(hŒ**attr**”h]”hŒattr”…”�”}”(hj xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjxubhŒ is associated with.”…”�”}”(hjxh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jxh´MÊhjxubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjåwubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jxh´MÊhjâwubjÄ)�”}”(hŒU``const struct attribute *attr`` The attribute to break the "active" protection for. ”h]”(jÊ)�”}”(hŒ ``const struct attribute *attr``”h]”jÐ)�”}”(hj6xh]”hŒconst struct attribute *attr”…”�”}”(hj8xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj4xubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´MËhj0xubjæ)�”}”(hhh]”hÌ)�”}”(hŒ3The attribute to break the "active" protection for.”h]”hŒ7The attribute to break the “activeâ€� protection for.”…”�”}”(hjOxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jKxh´MËhjLxubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj0xubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jKxh´MËhjâwubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÆwubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjqxh]”hŒ Description”…”�”}”(hjsxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjoxubah}”(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ÆwubhÌ)�”}”(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‡xh²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Æwubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjÂmh²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Âmh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ=void sysfs_unbreak_active_protection (struct kernfs_node *kn)”h]”j)�”}”(hŒah"]”h$]”h&]”uh1j1hj²xh²hh³jÄxh´MâubjC)�”}”(hŒsysfs_unbreak_active_protection”h]”jI)�”}”(hŒsysfs_unbreak_active_protection”h]”hŒsysfs_unbreak_active_protection”…”�”}”(hj×xh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÓxubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj²xh²hh³jÄxh´Mâubj=)�”}”(hŒ(struct kernfs_node *kn)”h]”jC)�”}”(hŒstruct kernfs_node *kn”h]”(j )�”}”(hjŽh]”hŒstruct”…”�”}”(hjóxh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjïxubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjïxubh)�”}”(hhh]”jI)�”}”(hŒ kernfs_node”h]”hŒ kernfs_node”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjyubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jyŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjÙxsbŒ!c.sysfs_unbreak_active_protection”†”asbuh1hhjïxubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1yh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjïxubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj?yh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjïxubjI)�”}”(hŒkn”h]”hŒkn”…”�”}”(hjLyh²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<hj²xh²hh³jÄxh´Mâubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj®xh²hh³jÄxh´Mâubah}”(h]”j©xah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jÄxh´Mâhj«xh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒrestore "active" protection”h]”hŒrestore “activeâ€� protection”…”�”}”(hjvyh²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âhjsyh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj«xh²hh³jÄxh´Mâubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jŽyjšjŽyj›‰jœ‰j�‰uh1jh²hhjÂmh³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˜yh]”hŒ Parameters”…”�”}”(hjšyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj–yubah}”(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’yubj¿)�”}”(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·yh]”hŒstruct kernfs_node *kn”…”�”}”(hj¹yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjµyubah}”(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±yubjæ)�”}”(hhh]”hÌ)�”}”(hŒ4Pointer returned by sysfs_break_active_protection().”h]”hŒ4Pointer returned by sysfs_break_active_protection().”…”�”}”(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ãhj®yubah}”(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³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´Måhj’yubhÌ)�”}”(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 ”…”�”}”(hjzh²hh³Nh´Nubj©)�”}”(hŒ**kn**”h]”hŒkn”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjzubhŒ" after this function has returned.”…”�”}”(hjzh²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’yubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjÂmh²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Âmh²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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjIzh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjEzh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´M÷ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXzh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjEzh²hh³jWzh´M÷ubjC)�”}”(hŒsysfs_remove_file_ns”h]”jI)�”}”(hŒsysfs_remove_file_ns”h]”hŒsysfs_remove_file_ns”…”�”}”(hjjzh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjfzubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjEzh²hh³jWzh´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†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Œkobject”h]”hŒkobject”…”�”}”(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)�”}”jjlzsbŒc.sysfs_remove_file_ns”†”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Œkobj”h]”hŒkobj”…”�”}”(hjßzh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‚zubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj~zubjC)�”}”(hŒconst struct attribute *attr”h]”(j )�”}”(hj¾h]”hŒconst”…”�”}”(hjøzh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjôzubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjôzubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjôzubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj {h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjôzubh)�”}”(hhh]”jI)�”}”(hŒ attribute”h]”hŒ attribute”…”�”}”(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ÀzŒc.sysfs_remove_file_ns”†”asbuh1hhjôzubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjO{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Œattr”h]”hŒattr”…”�”}”(hjj{h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjôzubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj~zubjC)�”}”(hŒconst struct ns_common *ns”h]”(j )�”}”(hj¾h]”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ÀzŒ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~zubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjEzh²hh³jWzh´M÷ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjAzh²hh³jWzh´M÷ubah}”(h]”jzh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ/remove an object attribute with a custom ns tag”h]”hŒ/remove an object attribute with a custom ns tag”…”�”}”(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>zh²hh³jWzh´M÷ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j7|jšj7|j›‰jœ‰j�‰uh1jh²hhjÂmh³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©)�”}”(hjA|h]”hŒ Parameters”…”�”}”(hjC|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”…”�”}”(hjb|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øhjZ|ubjæ)�”}”(hhh]”hÌ)�”}”(hŒobject we're acting for”h]”hŒobject we’re acting for”…”�”}”(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Œ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ùhjW|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ú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³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´Mühj;|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.”…”�”}”(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Âmh²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Âmh²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]”(jf)�”}”(hjih]”hŒbool”…”�”}”(hjR}h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjN}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&]”uh1j1hjN}h²hh³j_}h´MubjC)�”}”(hŒsysfs_remove_file_self”h]”jI)�”}”(hŒsysfs_remove_file_self”h]”hŒsysfs_remove_file_self”…”�”}”(hjr}h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjn}ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjN}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)�”}”jjt}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 )�”}”(hj¾h]”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”…”�”}”(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È}Œc.sysfs_remove_file_self”†”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Œattr”h]”hŒattr”…”�”}”(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<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Œ.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&]”uh1jvhjG}h²hh³j_}h´Mubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j´~jšj´~j›‰jœ‰j�‰uh1jh²hhjÂmh³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Ð)�”}”(hjh]”hŒconst struct attribute *attr”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´M hjubjæ)�”}”(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åhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j+h´M hjÔ~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj¸~ubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjQh]”hŒ Description”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjOubah}”(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.”…”�”}”(hjgh²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Âmh²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Âmh²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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj’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Œ*”…”�”}”(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 )�”}”(hj¾h]”hŒconst”…”�”}”(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€ubj )�”}”(hjŽh]”hŒstruct”…”�”}”(hj`€h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjA€ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjm€h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjA€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”†”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Œattr”h]”hŒattr”…”�”}”(hj·€h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjA€ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjËubjC)�”}”(hŒconst char *group”h]”(j )�”}”(hj¾h]”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Ì€ubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjë€h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÌ€ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjù€h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÌ€ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjÌ€ubjI)�”}”(hŒgroup”h]”hŒgroup”…”�”}”(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Œ&remove an attribute file from a group.”h]”hŒ&remove an attribute file from a 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™jV�jšjV�j›‰jœ‰j�‰uh1jh²hhjÂmh³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”…”�”}”(hjb�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-hjZ�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*hjy�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åhjy�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j”�h´M*hjv�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+hjv�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.”…”�”}”(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-hjv�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjZ�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjÂmh²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Âmh²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjK‚h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjG‚h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´MBubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZ‚h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjG‚h²hh³jY‚h´MBubjC)�”}”(hŒsysfs_create_bin_file”h]”jI)�”}”(hŒsysfs_create_bin_file”h]”hŒsysfs_create_bin_file”…”�”}”(hjl‚h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjh‚ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjG‚h²hh³jY‚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)�”}”jjn‚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 )�”}”(hj¾h]”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Œ bin_attribute”h]”hŒ bin_attribute”…”�”}”(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 ]”j‚Œc.sysfs_create_bin_file”†”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Œattr”h]”hŒattr”…”�”}”(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<hjG‚h²hh³jY‚h´MBubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjC‚h²hh³jY‚h´MBubah}”(h]”j>‚ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jY‚h´MBhj@‚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&]”uh1jvhj@‚h²hh³jY‚h´MBubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j®ƒjšj®ƒj›‰jœ‰j�‰uh1jh²hhjÂmh³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”…”�”}”(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´MEhj „ubjæ)�”}”(hhh]”hÌ)�”}”(hŒattribute descriptor.”h]”hŒattribute descriptor.”…”�”}”(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´MDhj&„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj „ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j%„h´MEhj΃ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj²ƒubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjÂmh²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Âmh²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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjj„h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjf„h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´MVubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjy„h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjf„h²hh³jx„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`jauh1jBhjf„h²hh³jx„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 )�”}”(hj¾h]”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”…”�”}”(hj4…h²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj…ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjA…h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj…ubh)�”}”(hhh]”jI)�”}”(hŒ bin_attribute”h]”hŒ bin_attribute”…”�”}”(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.sysfs_remove_bin_file”†”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Œ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<hjf„h²hh³jx„h´MVubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjb„h²hh³jx„h´MVubah}”(h]”j]„ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jx„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³jx„h´MVubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÍ…jšjÍ…j›‰jœ‰j�‰uh1jh²hhjÂmh³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”…”�”}”(hj1†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´MYhj)†ubjæ)�”}”(hhh]”hÌ)�”}”(hŒattribute descriptor.”h]”hŒattribute descriptor.”…”�”}”(hjH†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´MXhjE†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj)†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jD†h´MYhjí…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjÑ…ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjÂmh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œsysfs_emit (C function)”Œ c.sysfs_emit”hNt”auh1hýhjÂmh²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj‰†h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj…†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]”(jf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjƆh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj†ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔ†h²hh³Nh´Nubah}”(h]”h ]”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 )�”}”(hj¾h]”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‡ubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj#‡h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj‡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Œfmt”h]”hŒfmt”…”�”}”(hjL‡h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj¾†ubjC)�”}”(hŒ...”h]”j“)�”}”(hŒ...”h]”hŒ...”…”�”}”(hje‡h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hja‡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Âmh³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èhjLJubjÄ)�”}”(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´Méhjˆubjæ)�”}”(hhh]”hÌ)�”}”(hŒformat”h]”hŒformat”…”�”}”(hj"ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jˆh´Méhjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jˆh´MéhjLJubjÄ)�”}”(hŒ)``...`` optional arguments to **format** ”h]”(jÊ)�”}”(hŒ``...``”h]”jÐ)�”}”(hjBˆh]”hŒ...”…”�”}”(hjDˆ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Œ optional arguments to **format**”h]”(hŒoptional arguments to ”…”�”}”(hj[ˆh²hh³Nh´Nubj©)�”}”(hŒ **format**”h]”hŒformat”…”�”}”(hjcˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj[ˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jWˆh´MêhjXˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj<ˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jWˆh´MêhjLJubeh}”(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Âmh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œsysfs_emit_at (C function)”Œc.sysfs_emit_at”hNt”auh1hýhjÂmh²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjâˆh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÞˆ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”…”�”}”(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Œ)(char *buf, int at, const char *fmt, ...)”h]”(jC)�”}”(hŒ char *buf”h]”(jf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj‰ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-‰h²hh³Nh´Nubah}”(h]”h ]”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”…”�”}”(hjH‰h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj‰ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj‰ubjC)�”}”(hŒint at”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hja‰h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj]‰ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjo‰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`jauh1jBhj‰ubjC)�”}”(hŒconst char *fmt”h]”(j )�”}”(hj¾h]”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’‰ubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj±‰h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj’‰ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿‰h²hh³Nh´Nubah}”(h]”h ]”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`jauh1jBhj‰ubjC)�”}”(hŒ...”h]”j“)�”}”(hjg‡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´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.”…”�”}”(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™j4Šjšj4Šj›‰jœ‰j�‰uh1jh²hhjÂmh³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©)�”}”(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´Mhj8Š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´MhjWŠubjæ)�”}”(hhh]”hÌ)�”}”(hŒstart of PAGE_SIZE buffer.”h]”hŒstart of PAGE_SIZE buffer.”…”�”}”(hjvŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jrŠh´MhjsŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjWŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jrŠh´MhjTŠ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´MhjTŠ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³j ‹h´Mhj ‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjîŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j ‹h´MhjTŠ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Ï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Œoptional arguments to **fmt**”h]”(hŒoptional arguments to ”…”�”}”(hjF‹h²hh³Nh´Nubj©)�”}”(hŒ**fmt**”h]”hŒfmt”…”�”}”(hjN‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjF‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jB‹h´MhjC‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj'‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jB‹h´MhjTŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj8ŠubhÌ)�”}”(hŒ**Description**”h]”j©)�”}”(hjv‹h]”hŒ Description”…”�”}”(hjx‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjt‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒX/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:134: ./fs/sysfs/file.c”h´Mhj8Š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´Mhj8Šubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjÂmh²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Âmh²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”…”�”}”(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Œ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”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”j,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싌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Œ*”…”�”}”(hjiŒh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjŒubjI)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjvŒh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjŒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjŒ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`jauh1jBhjŒubjC)�”}”(hŒ const struct bin_attribute *attr”h]”(•‘j )�”}”(hj¾h]”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Œ bin_attribute”h]”hŒ bin_attribute”…”�”}”(hj8�h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj5�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Œ ”…”�”}”(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Œattr”h]”hŒattr”…”�”}”(hjq�h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjûŒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjŒubjC)�”}”(hŒ char *buf”h]”(jf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjŠ�h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj†�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜�h²hh³Nh´Nubah}”(h]”h ]”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Œ 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`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 ]”j싌c.sysfs_bin_attr_simple_read”†”asbuh1hhjŽubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5Žh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjŽubjI)�”}”(hŒcount”h]”hŒcount”…”�”}”(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´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.”…”�”}”(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´MhjjŽ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Âmh³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Ð)�”}”(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´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Œ"``char *buf`` destination buffer. ”h]”(jÊ)�”}”(hŒ ``char *buf``”h]”jÐ)�”}”(hjY�h]”hŒ char *buf”…”�”}”(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Œdestination buffer.”h]”hŒdestination buffer.”…”�”}”(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Œ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©)�”}”(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Œâ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 ”…”�”}”(hj�h²hh³Nh´Nubj©)�”}”(hŒ **private**”h]”hŒprivate”…”�”}”(hj$�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj�ubhŒ and ”…”�”}”(hj�h²hh³Nh´Nubj©)�”}”(hŒ**size**”h]”hŒsize”…”�”}”(hj6�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj�ubhŒ~ members in struct bin_attribute must be set to the buffer’s location and size before the bin_attribute is created in sysfs.”…”�”}”(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Œ•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 ”…”�”}”(hjO�h²hh³Nh´Nubj©)�”}”(hŒ**off**”h]”hŒoff”…”�”}”(hjW�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjO�ubhŒ and ”…”�”}”(hjO�h²hh³Nh´Nubj©)�”}”(hŒ **count**”h]”hŒcount”…”�”}”(hji�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjO�ubhŒ: is done in sysfs_kf_bin_read(). Negative value check for ”…”�”}”(hjO�h²hh³Nh´Nubj©)�”}”(hŒ**off**”h]”hŒoff”…”�”}”(hj{�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjO�ubhŒ. is done in vfs_setpos() and default_llseek().”…”�”}”(hjO�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Âmh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œsysfs_create_link (C function)”Œc.sysfs_create_link”hNt”auh1hýhjÂmh²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjÕ�h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÑ�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”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”j,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”…”�”}”(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.sysfs_create_link”†”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Œkobj”h]”hŒkobj”…”�”}”(hjk‘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”…”�”}”(hj„‘h²hh³Nh´Nubah}”(h]”h ]”j,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 ]”jL‘Œ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`jauh1jBhj ‘ubjC)�”}”(hŒconst char *name”h]”(j )�”}”(hj¾h]”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ð‘ubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjð‘ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”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 ‘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.”…”�”}”(hjb’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™jz’jšjz’j›‰jœ‰j�‰uh1jh²hhjÂmh³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Ð)�”}”(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´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´KWhj+“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j*“h´KXhjš’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj~’ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjÂmh²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Âmh²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjo“h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjk“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&]”uh1j1hjk“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`jauh1jBhjk“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”…”�”}”(hj”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”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”j,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&]”uh1jHhj9”ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j>”Œmodname”NŒ classname”Njj )�”}”j ]”j擌c.sysfs_create_link_nowarn”†”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Œtarget”h]”hŒtarget”…”�”}”(hju”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 )�”}”(hj¾h]”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Š”ubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj©”h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjŠ”ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·”h²hh³Nh´Nubah}”(h]”h ]”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<hjk“h²hh³j}“h´Kaubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjg“h²hh³j}“h´Kaubah}”(h]”jb“ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j}“h´Kahjd“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&]”uh1jvhjd“h²hh³j}“h´Kaubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j•jšj•j›‰jœ‰j�‰uh1jh²hhjÂmh³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©)�”}”(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´Kehj•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´Kbhj7•ubjæ)�”}”(hhh]”hÌ)�”}”(hŒ2object whose directory we're creating the link in.”h]”hŒ4object whose directory we’re creating the link in.”…”�”}”(hjV•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jR•h´KbhjS•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj7•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jR•h´Kbhj4•ubjÄ)�”}”(hŒ5``struct kobject *target`` object we're pointing to. ”h]”(jÊ)�”}”(hŒ``struct kobject *target``”h]”jÐ)�”}”(hjv•h]”hŒstruct kobject *target”…”�”}”(hjx•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjt•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:137: ./fs/sysfs/symlink.c”h´Kchjp•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åhjp•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j‹•h´Kchj4•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´Kdhj4•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:137: ./fs/sysfs/symlink.c”h´Kfhj•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.”…”�”}”(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´Kehj–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœ�h³j–h´Kehj•ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjÂmh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œsysfs_remove_link (C function)”Œc.sysfs_remove_link”hNt”auh1hýhjÂmh²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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj9–h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj5–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&]”uh1j1hj5–h²hh³jG–h´K‹ubjC)�”}”(hŒsysfs_remove_link”h]”jI)�”}”(hŒsysfs_remove_link”h]”hŒsysfs_remove_link”…”�”}”(hjZ–h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjV–ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj5–h²hh³jG–h´K‹ubj=)�”}”(hŒ((struct kobject *kobj, const char *name)”h]”(jC)�”}”(hŒstruct kobject *kobj”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Œ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”†”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Œkobj”h]”hŒkobj”…”�”}”(hjÏ–h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjr–ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjn–ubjC)�”}”(hŒconst char *name”h]”(j )�”}”(hj¾h]”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ä–ubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjä–ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”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`jauh1jBhjn–ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj5–h²hh³jG–h´K‹ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj1–h²hh³jG–h´K‹ubah}”(h]”j,–ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jG–h´K‹hj.–h²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ%remove symlink in object's directory.”h]”hŒ'remove symlink in object’s directory.”…”�”}”(hjV—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‹hjS—h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj.–h²hh³jG–h´K‹ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jn—jšjn—j›‰jœ‰j�‰uh1jh²hhjÂmh³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©)�”}”(hjx—h]”hŒ Parameters”…”�”}”(hjz—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjv—ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:137: ./fs/sysfs/symlink.c”h´K�hjr—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¾hjr—ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjÂmh²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Âmh²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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hj*˜h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj&˜h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:137: ./fs/sysfs/symlink.c”h´K�ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9˜h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj&˜h²hh³j8˜h´K�ubjC)�”}”(hŒsysfs_rename_link_ns”h]”jI)�”}”(hŒsysfs_rename_link_ns”h]”hŒsysfs_rename_link_ns”…”�”}”(hjK˜h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjG˜ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj&˜h²hh³j8˜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”…”�”}”(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˜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)�”}”jjM˜sbŒc.sysfs_rename_link_ns”†”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Œkobj”h]”hŒkobj”…”�”}”(hjÀ˜h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjc˜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Œ ”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÕ˜ubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj#™h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjÕ˜ubjI)�”}”(hŒtarg”h]”hŒtarg”…”�”}”(hj0™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 )�”}”(hj¾h]”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™ubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjd™h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjE™ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjr™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Œold”h]”hŒold”…”�”}”(hj�™h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjE™ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj_˜ubjC)�”}”(hŒconst char *new”h]”(j )�”}”(hj¾h]”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¢™ubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjÁ™h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj¢™ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏ™h²hh³Nh´Nubah}”(h]”h ]”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 )�”}”(hj¾h]”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&]”uh1jHhj9š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Œ ”…”�”}”(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Œnew_ns”h]”hŒnew_ns”…”�”}”(hjuš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´K�ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj"˜h²hh³j8˜h´K�ubah}”(h]”j˜ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j8˜h´K�hj˜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&]”uh1jvhj˜h²hh³j8˜h´K�ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j·šjšj·šj›‰jœ‰j�‰uh1jh²hhjÂmh³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Ð)�”}”(hj›h]”hŒstruct kobject *targ”…”�”}”(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 pointing to.”h]”hŒobject we’re pointing to.”…”�”}”(hj2›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Œ2``const char *old`` previous name of the symlink. ”h]”(jÊ)�”}”(hŒ``const char *old``”h]”jÐ)�”}”(hjR›h]”hŒconst char *old”…”�”}”(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:137: ./fs/sysfs/symlink.c”h´K hjL›ubjæ)�”}”(hhh]”hÌ)�”}”(hŒprevious name of the symlink.”h]”hŒprevious name of the symlink.”…”�”}”(hjk›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jg›h´K hjh›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjL›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jg›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”…”�”}”(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��)�”}”(hŒ6A helper function for the common rename symlink idiom.”h]”hÌ)�”}”(hjœh]”hŒ6A helper function for the common rename symlink idiom.”…”�”}”(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œ�h³j&œh´K£hj»šubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjÂmh²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”…”�”}”(hj?œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj<œh²hh³hÊh´K�ubh¶)�”}”(hhh]”(h»)�”}”(hŒdebugfs interface”h]”hŒdebugfs interface”…”�”}”(hjPœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjMœh²hh³hÊh´K�ubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œdebugfs_lookup (C function)”Œc.debugfs_lookup”hNt”auh1hýhjMœ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”…”�”}”(hjwœh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjsœ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&]”uh1j1hjsœ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”j˜œŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jŒdebugfs_lookup”sbŒc.debugfs_lookup”†”asbuh1hhjsœh²hh³j„œh´MNubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·œh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjsœh²hh³j„œh´MNubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjÅœh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjsœ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`jauh1jBhjsœh²hh³j„œh´MNubj=)�”}”(hŒ)(const char *name, struct dentry *parent)”h]”(jC)�”}”(hŒconst char *name”h]”(j )�”}”(hj¾h]”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íœubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj �h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjíœubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”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Œstruct dentry *parent”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Œdentry”h]”hŒdentry”…”�”}”(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.debugfs_lookup”†”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Œparent”h]”hŒparent”…”�”}”(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<hjsœh²hh³j„œh´MNubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjoœh²hh³j„œh´MNubah}”(h]”jjœah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j„œh´MNhjlœ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&]”uh1jvhjlœh²hh³j„œh´MNubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jç�jšjç�j›‰jœ‰j�‰uh1jh²hhjMœ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”…”�”}”(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´MOhj ž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.”…”�”}”(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ŒF``struct dentry *parent`` a pointer to the parent dentry of the file. ”h]”(jÊ)�”}”(hŒ``struct dentry *parent``”h]”jÐ)�”}”(hjIžh]”hŒstruct dentry *parent”…”�”}”(hjKžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjGžubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´MPhjCžubjæ)�”}”(hhh]”hÌ)�”}”(hŒ+a pointer to the parent dentry of the file.”h]”hŒ+a pointer to the parent dentry of the file.”…”�”}”(hjbžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j^žh´MPhj_žubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjCžubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j^žh´MPhjž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žhjMœ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ýhjMœ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Œ ”…”�”}”(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_file_unsafe”sbŒc.debugfs_create_file_unsafe”†”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Œdebugfs_create_file_unsafe”h]”jI)�”}”(hj9Ÿh]”hŒdebugfs_create_file_unsafe”…”�”}”(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Œ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 )�”}”(hj¾h]”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Ÿubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj‘Ÿh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjrŸ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Œname”h]”hŒname”…”�”}”(hjºŸh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjrŸubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjnŸ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 ]”j7ŸŒ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”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÏŸ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”…”�”}”(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 ]”j7ŸŒc.debugfs_create_file_unsafe”†”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Œparent”h]”hŒparent”…”�”}”(hjr h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjnŸubjC)�”}”(hŒ void *data”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj‹ h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj‡ ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™ h²hh³Nh´Nubah}”(h]”h ]”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`jauh1jBhjnŸubjC)�”}”(hŒ"const struct file_operations *fops”h]”(j )�”}”(hj¾h]”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 ]”j7ŸŒc.debugfs_create_file_unsafe”†”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Œfops”h]”hŒfops”…”�”}”(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Œ'create a file in the debugfs filesystem”h]”hŒ'create a file in the debugfs filesystem”…”�”}”(hji¡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á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™j�¡jšj�¡j›‰jœ‰j�‰uh1jh²hhjMœ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Ð)�”}”(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.”…”�”}”(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´Mähj2¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j1¢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Ð)�”}”(hjV¢h]”hŒ void *data”…”�”}”(hjX¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjT¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´MéhjP¢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.”…”�”}”(hjo¢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çhjl¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjP¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jk¢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Ž¢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Œ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žhjMœ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ýhjMœ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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj/£h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj+£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&]”uh1j1hj+£h²hh³j=£h´MubjC)�”}”(hŒdebugfs_create_file_size”h]”jI)�”}”(hŒdebugfs_create_file_size”h]”hŒdebugfs_create_file_size”…”�”}”(hjP£h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjL£ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj+£h²hh³j=£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 )�”}”(hj¾h]”hŒconst”…”�”}”(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£ubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj‡£h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjh£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Œname”h]”hŒname”…”�”}”(hj°£h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjh£ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjd£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)�”}”jjR£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`jauh1jBhjd£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”…”�”}”(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.debugfs_create_file_size”†”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Œparent”h]”hŒparent”…”�”}”(hjj¤h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj¤ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjd£ubjC)�”}”(hŒ void *data”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjƒ¤h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj¤ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘¤h²hh³Nh´Nubah}”(h]”h ]”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`jauh1jBhjd£ubjC)�”}”(hŒ"const struct file_operations *fops”h]”(j )�”}”(hj¾h]”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Œ ”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”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”…”�”}”(hj7¥h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÁ¤ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjd£ubjC)�”}”(hŒloff_t file_size”h]”(h)�”}”(hhh]”jI)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(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.debugfs_create_file_size”†”asbuh1hhjL¥ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjq¥h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjL¥ubjI)�”}”(hŒ file_size”h]”hŒ file_size”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjL¥ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjd£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Œ'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&]”uh1jvhj$£h²hh³j=£h´Mubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÁ¥jšjÁ¥j›‰jœ‰j�‰uh1jh²hhjMœ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.”…”�”}”(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³Œ[/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³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 *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ÏhjZ¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´M hjV¦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.”…”�”}”(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¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjV¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jq¦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Ð)�”}”(hj §h]”hŒloff_t file_size”…”�”}”(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Œinitial file size”h]”hŒinitial file size”…”�”}”(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©)�”}”(hjE§h]”hŒ Description”…”�”}”(hjG§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjC§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žhjMœh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œdebugfs_create_dir (C function)”Œc.debugfs_create_dir”hNt”auh1hýhjMœ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 )�”}”(hj¾h]”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¨ubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj¨ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-¨h²hh³Nh´Nubah}”(h]”h ]”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¨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”…”�”}”(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Œ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²hhjMœ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©)�”}”(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 directory 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Œ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.”…”�”}”(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'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 *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+hjW©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.”…”�”}”(hjv©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)hjs©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjW©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jr©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Œ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.”…”�”}”(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´M8hjþ¨ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjMœh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ%debugfs_create_automount (C function)”Œc.debugfs_create_automount”hNt”auh1hýhjMœ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”…”�”}”(hj5ªh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhj1ªh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´MZubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCªh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj1ªh²hh³jBªh´MZubh)�”}”(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)�”}”jŒdebugfs_create_automount”sbŒc.debugfs_create_automount”†”asbuh1hhj1ªh²hh³jBªh´MZubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjuªh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj1ªh²hh³jBªh´MZubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjƒªh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj1ªh²hh³jBªh´MZubjC)�”}”(hŒdebugfs_create_automount”h]”jI)�”}”(hjrª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`jauh1jBhj1ªh²hh³jBªh´MZubj=)�”}”(hŒL(const char *name, struct dentry *parent, debugfs_automount_t f, void *data)”h]”(jC)�”}”(hŒconst char *name”h]”(j )�”}”(hj¾h]”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«ªubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjʪh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj«ªubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjتh²hh³Nh´Nubah}”(h]”h ]”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 ]”jpªŒc.debugfs_create_automount”†”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Œparent”h]”hŒparent”…”�”}”(hjc«h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj«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 ]”jpªŒc.debugfs_create_automount”†”asbuh1hhjx«ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�«h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjx«ubjI)�”}”(hjæh]”hŒf”…”�”}”(hj««h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjx«ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj§ªubjC)�”}”(hŒ void *data”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj¿«ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑ«h²hh³Nh´Nubah}”(h]”h ]”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<hj1ªh²hh³jBªh´MZubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj-ªh²hh³jBªh´MZubah}”(h]”j(ªah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jBªh´MZhj*ªh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒ0create automount point in the debugfs filesystem”h]”hŒ0create automount point 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´MZhj¬h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj*ªh²hh³jBªh´MZubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j.¬jšj.¬j›‰jœ‰j�‰uh1jh²hhjMœ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©)�”}”(hj8¬h]”hŒ Parameters”…”�”}”(hj:¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj6¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´M^hj2¬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Ð)�”}”(hjW¬h]”hŒconst char *name”…”�”}”(hjY¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjU¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´M[hjQ¬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.”…”�”}”(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ŒÔ``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^hjN¬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_hjN¬ubjÄ)�”}”(hŒ/``void *data`` opaque argument to pass to f(). ”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Œopaque argument to pass to f().”h]”hŒopaque argument to pass to f().”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hË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³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´Mbhj2¬ubhÌ)�”}”(hŒ/**f** should return what ->d_automount() would.”h]”(j©)�”}”(hŒ**f**”h]”hŒf”…”�”}”(hjX­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjT­ubhŒ* should return what ->d_automount() would.”…”�”}”(hjT­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´Mahj2¬ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjMœh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ#debugfs_create_symlink (C function)”Œc.debugfs_create_symlink”hNt”auh1hýhjMœ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 )�”}”(hj¾h]”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®ubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj&®h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj®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Œstruct dentry *parent”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Œ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”†”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Œparent”h]”hŒparent”…”�”}”(hj¿®h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjd®ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj®ubjC)�”}”(hŒconst char *target”h]”(j )�”}”(hj¾h]”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Ô®ubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjó®h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÔ®ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”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`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Œ0create a symbolic link in the debugfs filesystem”h]”hŒ0create a symbolic link in the debugfs filesystem”…”�”}”(hjF¯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„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²hhjMœ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©)�”}”(hjh¯h]”hŒ Parameters”…”�”}”(hjj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjf¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´Mˆhjb¯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.”…”�”}”(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¾hjb¯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:146: ./fs/debugfs/inode.c”h´MŽhjb¯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.”…”�”}”(hjM°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�hjb¯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�hjb¯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 -”…”�”}”(hjk°h²hh³Nh´NubjÐ)�”}”(hŒ ``ENODEV``”h]”hŒENODEV”…”�”}”(hjs°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjk°ubhŒ will be returned.”…”�”}”(hjk°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–hjb¯ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjMœh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œdebugfs_remove (C function)”Œc.debugfs_remove”hNt”auh1hýhjMœh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ+void debugfs_remove (struct dentry *dentry)”h]”j)�”}”(hŒ*void debugfs_remove(struct dentry *dentry)”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¬°h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj¨°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”…”�”}”(hj±h²hh³Nh´Nubah}”(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_remove”†”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<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”…”�”}”(hjl±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þhji±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²hhjMœ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žhjMœ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ýhjMœ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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj=²h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj9²h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjL²h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj9²h²hh³jK²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&]”uh1jHhjZ²ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj9²h²hh³jK²h´Mubj=)�”}”(hŒ)(const char *name, struct dentry *parent)”h]”(jC)�”}”(hŒconst char *name”h]”(j )�”}”(hj¾h]”hŒconst”…”�”}”(hjz²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²ubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj•²h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjv²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Œname”h]”hŒname”…”�”}”(hj¾²h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjv²ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjr²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Œ ”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”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”…”�”}”(hj0³h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÓ²ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjr²ubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj9²h²hh³jK²h´Mubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj5²h²hh³jK²h´Mubah}”(h]”j0²ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jK²h´Mhj2²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”…”�”}”(hjZ³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´MhjW³h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj2²h²hh³jK²h´Mubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jr³jšjr³j›‰jœ‰j�‰uh1jh²hhjMœ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¨hjz³ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´Mhjv³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¾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³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´Mhjv³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.”…”�”}”(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´Mhjv³ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjMœh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ debugfs_change_name (C function)”Œc.debugfs_change_name”hNt”auh1hýhjMœ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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjT´h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjP´h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´M,ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjc´h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjP´h²hh³jb´h´M,ubjC)�”}”(hŒdebugfs_change_name”h]”jI)�”}”(hŒdebugfs_change_name”h]”hŒdebugfs_change_name”…”�”}”(hju´h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjq´ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjP´h²hh³jb´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)�”}”jjw´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 )�”}”(hj¾h]”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ÿ´ubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÿ´ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,µh²hh³Nh´Nubah}”(h]”h ]”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”…”�”}”(hjGµh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÿ´ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj‰´ubjC)�”}”(hŒ...”h]”j“)�”}”(hjg‡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<hjP´h²hh³jb´h´M,ubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjL´h²hh³jb´h´M,ubah}”(h]”jG´ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jb´h´M,hjI´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&]”uh1jvhjI´h²hh³jb´h´M,ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j¡µjšj¡µj›‰jœ‰j�‰uh1jh²hhjMœ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Ð)�”}”(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´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Ð)�”}”(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³Œ[/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”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hË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Œ``...`` variable arguments ”h]”(jÊ)�”}”(hŒ``...``”h]”jÐ)�”}”(hj<¶h]”hŒ...”…”�”}”(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´Khj6¶ubjæ)�”}”(hhh]”hÌ)�”}”(hŒvariable arguments”h]”hŒvariable arguments”…”�”}”(hjU¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jQ¶h´KhjR¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj6¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jQ¶h´KhjÁµ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³Œ[/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&]”uh1jHhj·ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjè¶h²hh³jù¶h´Mmubj=)�”}”(hŒ(void)”h]”jC)�”}”(hŒvoid”h]”jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj(·h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj$·ubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj ·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”…”�”}”(hjR·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´MmhjO·h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjá¶h²hh³jù¶h´Mmubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jj·jšjj·j›‰jœ‰j�‰uh1jh²hhjMœh³Nh´NubjŸ)�”}”(hŒ'**Parameters** ``void`` no arguments”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³Œ[/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:146: ./fs/debugfs/inode.c”h´Mqhjn·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¾hjn·ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjMœh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œdebugfs_file_get (C function)”Œc.debugfs_file_get”hNt”auh1hýhjMœ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]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjí·h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjé·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&]”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Œ ”…”�”}”(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)�”}”jj¸sbŒc.debugfs_file_get”†”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Œ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´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²hhjMœ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.”…”�”}”(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”…”�”}”(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Ì)�”}”(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.”…”�”}”(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Ì)�”}”(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 -”…”�”}”(hjN¹h²hh³Nh´NubjÐ)�”}”(hŒ``EIO``”h]”hŒEIO”…”�”}”(hjV¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjN¹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.”…”�”}”(hjN¹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žhjMœh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œdebugfs_file_put (C function)”Œc.debugfs_file_put”hNt”auh1hýhjMœ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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj�¹h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj‹¹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Œ ”…”�”}”(hj ºh²hh³Nh´Nubah}”(h]”h ]”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´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”…”�”}”(hjOº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§hjLºh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj„¹h²hh³j�¹h´K§ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jgºjšjgºj›‰jœ‰j�‰uh1jh²hhjMœ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©)�”}”(hjqºh]”hŒ Parameters”…”�”}”(hjsºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjoº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«hjkº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¾hjkº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«hjkº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ªhjkºubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjMœh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ'debugfs_enter_cancellation (C function)”Œc.debugfs_enter_cancellation”hNt”auh1hýhjMœ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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj »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_enter_cancellation”h]”jI)�”}”(hŒdebugfs_enter_cancellation”h]”hŒdebugfs_enter_cancellation”…”�”}”(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´K¹ubj=)�”}”(hŒ>(struct file *file, struct debugfs_cancellation *cancellation)”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)�”}”jj4»sbŒc.debugfs_enter_cancellation”†”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 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Œ*”…”�”}”(hj ¼h²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj¼»ubjI)�”}”(hŒ cancellation”h]”hŒ cancellation”…”�”}”(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´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Œenter a debugfs cancellation”h]”hŒenter a debugfs cancellation”…”�”}”(hjA¼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™jY¼jšjY¼j›‰jœ‰j�‰uh1jh²hhjMœ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©)�”}”(hjc¼h]”hŒ Parameters”…”�”}”(hje¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hja¼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ºhjy¼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¼hjy¼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().”…”�”}”(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Ì)�”}”(hŒ?This function must be paired with debugfs_leave_cancellation().”h]”hŒ?This function must be paired with debugfs_leave_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žhjMœh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ'debugfs_leave_cancellation (C function)”Œc.debugfs_leave_cancellation”hNt”auh1hýhjMœ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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjZ½h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjV½h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Këubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hji½h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjV½h²hh³jh½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&]”uh1jHhjw½ubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjV½h²hh³jh½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”…”�”}”(hj ¾h²hh³Nh´Nubah}”(h]”h ]”j,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_leave_cancellation”†”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Œ cancellation”h]”hŒ cancellation”…”�”}”(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³jh½h´Këubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjR½h²hh³jh½h´Këubah}”(h]”jM½ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jh½h´KëhjO½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&]”uh1jvhjO½h²hh³jh½h´Këubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j¢¾jšj¢¾j›‰jœ‰j�‰uh1jh²hhjMœ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Ð)�”}”(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ŒHthe cancellation previously registered with debugfs_enter_cancellation()”h]”hŒHthe cancellation previously registered with 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¿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”…”�”}”(hjB¿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Œ6See the documentation of debugfs_enter_cancellation().”h]”hŒ6See the documentation of debugfs_enter_cancellation().”…”�”}”(hjV¿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žhjMœh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œdebugfs_create_u8 (C function)”Œc.debugfs_create_u8”hNt”auh1hýhjMœ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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj…¿h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj�¿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 )�”}”(hj¾h]”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¾¿ubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjÝ¿h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj¾¿ubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjë¿h²hh³Nh´Nubah}”(h]”h ]”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_u8”†”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”…”�”}”(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.debugfs_create_u8”†”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Œparent”h]”hŒparent”…”�”}”(hjÀÀh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjeÀ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 ]”j>ÀŒ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Œ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´MRubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj}¿h²hh³j“¿h´MRubah}”(h]”jx¿ah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j“¿h´MRhjz¿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”…”�”}”(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´MRhj<Áh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjz¿h²hh³j“¿h´MRubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jWÁjšjWÁj›‰jœ‰j�‰uh1jh²hhjMœ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©)�”}”(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: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´MShjzÁ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åhjzÁubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j•Áh´MShjwÁ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´MThjwÁ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”…”�”}”(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´MUhjÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjìÁubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÂh´MWhjwÁ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Ð)�”}”(hj>Âh]”hŒ u8 *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´MYhj8Â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³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MXhjTÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj8Âubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jSÂh´MYhjwÁ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³Œ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žhjMœh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œdebugfs_create_u16 (C function)”Œc.debugfs_create_u16”hNt”auh1hýhjMœ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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjãÂh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjßÂ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”…”�”}”(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ŒC(const char *name, umode_t mode, struct dentry *parent, u16 *value)”h]”(jC)�”}”(hŒconst char *name”h]”(j )�”}”(hj¾h]”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Ãubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj;Ãh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÃ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Œ 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_u16”†”asbuh1hhjyÃubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Ãh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjyÃubjI)�”}”(hŒmode”h]”hŒmode”…”�”}”(hj®Ãh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjyÃ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_u16”†”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&]”uh1jHhj7Äubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j<ÄŒmodname”NŒ classname”Njj )�”}”j ]”jœÃŒc.debugfs_create_u16”†”asbuh1hhj3Äubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXÄh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj3Äubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjfÄh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj3ÄubjI)�”}”(hŒvalue”h]”hŒvalue”…”�”}”(hjsÄ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³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²hhjMœ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Ð)�”}”(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´MxhjÅubjæ)�”}”(hhh]”hÌ)�”}”(hŒ(the permission that the file should have”h]”hŒ(the permission that the file should have”…”�”}”(hj0Å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Ð)�”}”(hjPÅh]”hŒstruct dentry *parent”…”�”}”(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´M{hjJÅ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 ”…”�”}”(hjiÅh²hh³Nh´NubjÐ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjqÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjiÅubhŒF, then the file will be created in the root of the debugfs filesystem.”…”�”}”(hjiÅ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´MyhjfÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjJÅubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jeÅ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”…”�”}”(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žhjMœh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œdebugfs_create_u32 (C function)”Œc.debugfs_create_u32”hNt”auh1hýhjMœ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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjAÆh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj=Æh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Mšubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPÆh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj=Æh²hh³jOÆh´MšubjC)�”}”(hŒdebugfs_create_u32”h]”jI)�”}”(hŒdebugfs_create_u32”h]”hŒdebugfs_create_u32”…”�”}”(hjbÆh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj^Æubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhj=Æh²hh³jOÆh´Mšubj=)�”}”(hŒC(const char *name, umode_t mode, struct dentry *parent, u32 *value)”h]”(jC)�”}”(hŒconst char *name”h]”(j )�”}”(hj¾h]”hŒconst”…”�”}”(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Æubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj™Æh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjzÆ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Œname”h]”hŒname”…”�”}”(hjÂÆh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjzÆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjvÆ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)�”}”jjdÆ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`jauh1jBhjvÆ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Œ ”…”�”}”(hj2Çh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj!Çubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(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.debugfs_create_u32”†”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Œparent”h]”hŒparent”…”�”}”(hj|Çh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj!Çubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjvÆ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`jauh1jBhjvÆubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hj=Æh²hh³jOÆh´Mšubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj9Æh²hh³jOÆh´Mšubah}”(h]”j4Æah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jOÆh´Mšhj6Æ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&]”uh1jvhj6Æh²hh³jOÆh´Mšubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jÈjšjÈj›‰jœ‰j�‰uh1jh²hhjMœ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©)�”}”(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›hj6È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.”…”�”}”(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›hj3ÈubjÄ)�”}”(hŒ:``umode_t mode`` the permission that the file should have ”h]”(jÊ)�”}”(hŒ``umode_t mode``”h]”jÐ)�”}”(hjuÈh]”hŒ umode_t mode”…”�”}”(hjwÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjsÈ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œhjoÈ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åhjoÈubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jŠÈh´Mœhj3È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Ÿhj3È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.”…”�”}”(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¡hj3Èubeh}”(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³Œ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 ”…”�”}”(hjLÉh²hh³Nh´Nubj©)�”}”(hŒ **value**”h]”hŒvalue”…”�”}”(hjTÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjLÉubhŒ . If the ”…”�”}”(hjLÉh²hh³Nh´Nubj©)�”}”(hŒ**mode**”h]”hŒmode”…”�”}”(hjfÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjLÉubhŒ9 variable is so set, it can be read from, and written to.”…”�”}”(hjLÉ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žhjMœh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œdebugfs_create_u64 (C function)”Œc.debugfs_create_u64”hNt”auh1hýhjMœ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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjŸÉh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj›É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_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 )�”}”(hj¾h]”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ØÉubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj÷Éh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjØÉubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”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&]”uh1jHhj9Êubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”j>ÊŒmodname”NŒ classname”Njj )�”}”j ]”j)�”}”jjÂÉsbŒc.debugfs_create_u64”†”asbuh1hhj5Êubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\Êh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj5ÊubjI)�”}”(hŒmode”h]”hŒmode”…”�”}”(hjjÊh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj5Ê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 ]”jXÊŒ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 ]”jXÊŒ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Œ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”…”�”}”(hjYË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¿hjVËh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj”Éh²hh³j­Éh´M¿ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jqËjšjqËj›‰jœ‰j�‰uh1jh²hhjMœ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¨hjyË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ÃhjuË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”…”�”}”(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ŒV``u64 *value`` a pointer to the variable that the file should read to and write from. ”h]”(jÊ)�”}”(hŒ``u64 *value``”h]”jÐ)�”}”(hjXÌh]”hŒ u64 *value”…”�”}”(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Œ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.”…”�”}”(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Ìubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjRÌubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jmÌh´MÆhj‘Ë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³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MÈhjuË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ÇhjuËubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjMœh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ!debugfs_create_ulong (C function)”Œc.debugfs_create_ulong”hNt”auh1hýhjMœ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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjýÌh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjùÌ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”…”�”}”(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(const char *name, umode_t mode, struct dentry *parent, unsigned long *value)”h]”(jC)�”}”(hŒconst char *name”h]”(j )�”}”(hj¾h]”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Íubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjUÍh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj6Í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Œ 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_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`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_ulong”†”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”…”�”}”(hj8Îh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÝÍubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj2ÍubjC)�”}”(hŒunsigned long *value”h]”(jf)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjQÎh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjMÎubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_Îh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjMÎubjf)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjmÎh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjMÎ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Œvalue”h]”hŒvalue”…”�”}”(hj–Îh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjMÎ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Œ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²hhjMœ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Ð)�”}”(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Ïhj8Ï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èhj4Ïubjæ)�”}”(hhh]”hÌ)�”}”(hŒ(the permission that the file should have”h]”hŒ(the permission that the file should have”…”�”}”(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øÎ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Ð)�”}”(hjsÏh]”hŒstruct dentry *parent”…”�”}”(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Œ½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åhjmÏ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”…”�”}”(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žhjMœh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œdebugfs_create_x8 (C function)”Œc.debugfs_create_x8”hNt”auh1hýhjMœ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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjdÐh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj`Ðh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjsÐh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj`Ðh²hh³jrÐ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³jrÐh´Mubj=)�”}”(hŒB(const char *name, umode_t mode, struct dentry *parent, u8 *value)”h]”(jC)�”}”(hŒconst char *name”h]”(j )�”}”(hj¾h]”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�Ðubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj¼Ðh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj�Ðubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊÐh²hh³Nh´Nubah}”(h]”h ]”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_x8”†”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”…”�”}”(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Œ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ÑŒc.debugfs_create_x8”†”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Œparent”h]”hŒparent”…”�”}”(hjŸÑh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjDÑ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 ]”jÑŒ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³jrÐh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhj\Ðh²hh³jrÐh´Mubah}”(h]”jWÐah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jrÐh´MhjYÐ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”…”�”}”(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&]”uh1jvhjYÐh²hh³jrÐh´Mubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™j6Òjšj6Òj›‰jœ‰j�‰uh1jh²hhjMœ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©)�”}”(hj@Òh]”hŒ Parameters”…”�”}”(hjBÒ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”…”�”}”(hjaÒ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´MhjYÒ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.”…”�”}”(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Œ:``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´MhjVÒ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´MhjVÒ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Ð)�”}”(hjÓh]”hŒ u8 *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´MhjÓ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.”…”�”}”(hj6Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j2Óh´Mhj3Óubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÓubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j2Óh´MhjVÒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj:Òubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjMœh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œdebugfs_create_x16 (C function)”Œc.debugfs_create_x16”hNt”auh1hýhjMœ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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjvÓh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjrÓ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&]”uh1j1hjrÓ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`jauh1jBhjrÓ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 )�”}”(hj¾h]”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¯Óubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjÎÓh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj¯Óubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜÓh²hh³Nh´Nubah}”(h]”h ]”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_x16”†”asbuh1hhj Ôubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3Ôh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj ÔubjI)�”}”(hŒmode”h]”hŒmode”…”�”}”(hjAÔ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”…”�”}”(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Œdentry”h]”hŒdentry”…”�”}”(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.debugfs_create_x16”†”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Œparent”h]”hŒparent”…”�”}”(hj±Ôh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjVÔ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”…”�”}”(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Œ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”…”�”}”(hj0Õ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&]”uh1jvhjkÓh²hh³j„Óh´M)ubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jHÕjšjHÕj›‰jœ‰j�‰uh1jh²hhjMœ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©)�”}”(hjRÕh]”hŒ Parameters”…”�”}”(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-hjLÕ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Ð)�”}”(hjqÕh]”hŒconst char *name”…”�”}”(hjsÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjoÕ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*hjkÕ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åhjkÕubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j†Õh´M*hjhÕ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+hjhÕ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.hjhÕ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”…”�”}”(hj1Ö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.”…”�”}”(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/hjhÕubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjLÕubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjMœh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œdebugfs_create_x32 (C function)”Œc.debugfs_create_x32”hNt”auh1hýhjMœ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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjˆÖh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj„Ö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 )�”}”(hj¾h]”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ÁÖubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjàÖh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÁÖubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîÖh²hh³Nh´Nubah}”(h]”h ]”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_x32”†”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Œstruct dentry *parent”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Œ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.debugfs_create_x32”†”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Œparent”h]”hŒparent”…”�”}”(hjÃ×h²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjh×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 ]”jA׌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”…”�”}”(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 32-bit value”h]”hŒMcreate a debugfs file that is used to read and write an unsigned 32-bit value”…”�”}”(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?Ø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²hhjMœ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©)�”}”(hjdØh]”hŒ Parameters”…”�”}”(hjfØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjbØ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<hjzØ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=hjzØ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@hjzØ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Ð)�”}”(hjAÙh]”hŒ u32 *value”…”�”}”(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:149: ./fs/debugfs/file.c”h´MAhj;Ù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.”…”�”}”(hjZÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jVÙh´MAhjWÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj;Ùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jVÙh´MAhjzØubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj^Øubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjMœh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œdebugfs_create_x64 (C function)”Œc.debugfs_create_x64”hNt”auh1hýhjMœ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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjšÙh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj–Ù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 )�”}”(hj¾h]”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ÓÙubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjòÙh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÓÙubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”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”…”�”}”(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.debugfs_create_x64”†”asbuh1hhj0Úubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWÚh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj0ÚubjI)�”}”(hŒmode”h]”hŒmode”…”�”}”(hjeÚh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj0Ú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&]”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 ]”jSÚŒc.debugfs_create_x64”†”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`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 ]”jSÚŒ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Œ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´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”…”�”}”(hjTÛ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´MMhjQÛh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj�Ùh²hh³j¨Ùh´MMubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jlÛjšjlÛj›‰jœ‰j�‰uh1jh²hhjMœ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©)�”}”(hjvÛh]”hŒ Parameters”…”�”}”(hjxÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjtÛubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MQhjpÛ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Ð)�”}”(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´MRhjÜ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´MPhjÜubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÜubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jÜ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Ð)�”}”(hjSÜh]”hŒ u64 *value”…”�”}”(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´MShjMÜ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.”…”�”}”(hjlÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jhÜh´MShjiÜubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjMÜubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jhÜh´MShjŒÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjpÛubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjMœ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ýhjMœ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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¬Üh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj¨Ü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 )�”}”(hj¾h]”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åÜubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjåÜubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”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”…”�”}”(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)�”}”jjÏÜsbŒc.debugfs_create_size_t”†”asbuh1hhjBÝubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjiÝh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjBÝubjI)�”}”(hŒmode”h]”hŒmode”…”�”}”(hjwÝh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjBÝ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 ]”jeÝŒ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”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjÞubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j“Œreftype”jŒ reftarget”jÞŒmodname”NŒ classname”Njj )�”}”j ]”jeÝŒ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Œ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´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”…”�”}”(hjfÞ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´MohjcÞ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²hhjMœ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Ð)�”}”(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´Mthjß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 ”…”�”}”(hj2ßh²hh³Nh´NubjÐ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj:ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhj2ßubhŒF, then the file will be created in the root of the debugfs filesystem.”…”�”}”(hj2ß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åhjß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Ð)�”}”(hjeßh]”hŒ size_t *value”…”�”}”(hjgßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjcß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³jzßh´Muhj{ßubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj_ßubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jzßh´MuhjžÞubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hj‚Þubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjMœ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ýhjMœ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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¾ßh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjºß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 )�”}”(hj¾h]”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÷ßubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”jra•ch"]”h$]”h&]”uh1jehj÷ß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Œ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&]”uh1jHhjXà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”†”asbuh1hhjTàubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{à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Œ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 ]”jwàŒ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”…”�”}”(hjáh²hh³Nh´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.debugfs_create_atomic_t”†”asbuh1hhjáubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3á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Œvalue”h]”hŒvalue”…”�”}”(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´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”…”�”}”(hjxá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’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™j�ájšj�áj›‰jœ‰j�‰uh1jh²hhjMœ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³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 ”…”�”}”(hjDâh²hh³Nh´NubjÐ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjLâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjDâubhŒF, then the file will be created in the root of the debugfs filesystem.”…”�”}”(hjDâ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–hjAâubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj%âubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j@â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Ð)�”}”(hjwâh]”hŒatomic_t *value”…”�”}”(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Œ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åhjqâ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žhjMœh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ debugfs_create_bool (C function)”Œc.debugfs_create_bool”hNt”auh1hýhjMœ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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÐâh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÌâ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 )�”}”(hj¾h]”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 ãubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj(ãh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj ãubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6ã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Œname”h]”hŒname”…”�”}”(hjQã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”…”�”}”(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.debugfs_create_bool”†”asbuh1hhjfãubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�ãh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjfãubjI)�”}”(hŒmode”h]”hŒmode”…”�”}”(hj›ãh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjfã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_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`jauh1jBhjãubjC)�”}”(hŒ bool *value”h]”(jf)�”}”(hjih]”hŒbool”…”�”}”(hj$äh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj ä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Œvalue”h]”hŒvalue”…”�”}”(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Œ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”…”�”}”(hjvä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ähjsä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²hhjMœ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”…”�”}”(hj åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hË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 ”…”�”}”(hjBåh²hh³Nh´NubjÐ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjJåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjBåubhŒF, then the file will be created in the root of the debugfs filesystem.”…”�”}”(hjBå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ŒW``bool *value`` a pointer to the variable that the file should read to and write from. ”h]”(jÊ)�”}”(hŒ``bool *value``”h]”jÐ)�”}”(hjuåh]”hŒ bool *value”…”�”}”(hjwåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÏhjså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ëhjoå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åhjoå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žhjMœh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œdebugfs_create_str (C function)”Œc.debugfs_create_str”hNt”auh1hýhjMœ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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjæh²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&]”uh1j1hjæh²hh³j(æh´McubjC)�”}”(hŒdebugfs_create_str”h]”jI)�”}”(hŒdebugfs_create_str”h]”hŒdebugfs_create_str”…”�”}”(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´Mcubj=)�”}”(hŒE(const char *name, umode_t mode, struct dentry *parent, char **value)”h]”(jC)�”}”(hŒconst char *name”h]”(j )�”}”(hj¾h]”hŒconst”…”�”}”(hjWæh²hh³Nh´Nubah}”(h]”h ]”j,ah"]”h$]”h&]”uh1jhjSæubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdæh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjSæubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjræh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjSæ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Œname”h]”hŒname”…”�”}”(hj›æh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjSæubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjOæ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_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`jauh1jBhjOæ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_str”†”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Œparent”h]”hŒparent”…”�”}”(hjUçh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjúæubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjOæubjC)�”}”(hŒ char **value”h]”(jf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjnçh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjjç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çubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj—çh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjjçubjI)�”}”(hŒvalue”h]”hŒvalue”…”�”}”(hj¤çh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjjçubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjOæubeh}”(h]”h ]”h"]”h$]”h&]”j`jauh1j<hjæh²hh³j(æh´Mcubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjæh²hh³j(æh´Mcubah}”(h]”j æah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j(æh´Mchjæh²hubjw)�”}”(hhh]”hÌ)�”}”(hŒCcreate a debugfs file that is used to read and write a string value”h]”hŒCcreate a debugfs file that is used to read and write 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´MchjËçh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhjæh²hh³j(æh´Mcubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jæçjšjæçj›‰jœ‰j�‰uh1jh²hhjMœ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 to and write 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**. 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´Mghjêç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´Mdhj è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´Mdhj%èubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj èubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j$èh´MdhjèubjÄ)�”}”(hŒ:``umode_t mode`` the permission that the file should have ”h]”(jÊ)�”}”(hŒ``umode_t mode``”h]”jÐ)�”}”(hjHèh]”hŒ umode_t mode”…”�”}”(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´MehjBèubjæ)�”}”(hhh]”hÌ)�”}”(hŒ(the permission that the file should have”h]”hŒ(the permission that the file should have”…”�”}”(hjaèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j]èh´Mehj^èubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjBèubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j]èh´Mehjè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´Mhhj{è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´Mfhj—èubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj{èubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j–èh´MhhjèubjÄ)�”}”(hŒ—``char **value`` a pointer to the variable that the file should read to and write 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´MjhjÇèubjæ)�”}”(hhh]”hÌ)�”}”(hŒ…a pointer to the variable that the file should read to and write from. This pointer and the string it points to must not be ``NULL``.”h]”(hŒ|a pointer to the variable that the file should read to and write from. This pointer and the string it points to must not 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³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Mihjãèubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÇèubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jâèh´Mjhjè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´Mlhjêç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 ”…”�”}”(hj1éh²hh³Nh´Nubj©)�”}”(hŒ **value**”h]”hŒvalue”…”�”}”(hj9éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj1éubhŒ . If the ”…”�”}”(hj1éh²hh³Nh´Nubj©)�”}”(hŒ**mode**”h]”hŒmode”…”�”}”(hjKéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj1éubhŒ9 variable is so set, it can be read from, and written to.”…”�”}”(hj1é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êçubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjMœh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ debugfs_create_blob (C function)”Œc.debugfs_create_blob”hNt”auh1hýhjMœ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´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_blob”sbŒc.debugfs_create_blob”†”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_blob”h]”jI)�”}”(hjÁéh]”hŒdebugfs_create_blob”…”�”}”(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ŒZ(const char *name, umode_t mode, struct dentry *parent, struct debugfs_blob_wrapper *blob)”h]”(jC)�”}”(hŒconst char *name”h]”(j )�”}”(hj¾h]”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úéubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjúé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Œname”h]”hŒname”…”�”}”(hjBê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.debugfs_create_blob”†”asbuh1hhjWêubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|êh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjWêubjI)�”}”(hŒmode”h]”hŒmode”…”�”}”(hjŠêh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjWê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Œ ”…”�”}”(hjßêh²hh³Nh´Nubah}”(h]”h ]”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_blob_wrapper *blob”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_blob_wrapper”h]”hŒdebugfs_blob_wrapper”…”�”}”(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.debugfs_create_blob”†”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Œblob”h]”hŒblob”…”�”}”(hjjë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]”jwéah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³j‘éh´M¤hjyé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´M¤hj‘ë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²hhjMœ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´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Ð)�”}”(hjGìh]”hŒstruct dentry *parent”…”�”}”(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:149: ./fs/debugfs/file.c”h´MªhjAì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”…”�”}”(hjhì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åhjAìubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j\ìh´MªhjÌë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´M¬hj�ì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´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 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 ”…”�”}”(hjåìh²hh³Nh´Nubj©)�”}”(hŒ**blob->data**”h]”hŒ blob->data”…”�”}”(hjíìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjåìubhŒ as a binary blob. 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Œ7 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°ë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³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´M±hj°ë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.”…”�”}”(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žhjMœ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ýhjMœ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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjVíh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjRíh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Mubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeíh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjRíh²hh³jdíh´MubjC)�”}”(hŒdebugfs_create_u32_array”h]”jI)�”}”(hŒdebugfs_create_u32_array”h]”hŒdebugfs_create_u32_array”…”�”}”(hjwíh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjsíubah}”(h]”h ]”(j[j\eh"]”h$]”h&]”j`jauh1jBhjRíh²hh³jdíh´Mubj=)�”}”(hŒX(const char *name, umode_t mode, struct dentry *parent, struct debugfs_u32_array *array)”h]”(jC)�”}”(hŒconst char *name”h]”(j )�”}”(hj¾h]”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�íubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj®íh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj�íubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼íh²hh³Nh´Nubah}”(h]”h ]”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)�”}”jjyísbŒc.debugfs_create_u32_array”†”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&]”uh1jhj6îubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGîh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj6îubh)�”}”(hhh]”jI)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(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.debugfs_create_u32_array”†”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Œparent”h]”hŒparent”…”�”}”(hj‘îh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj6îubeh}”(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Œ ”…”�”}”(hjæîh²hh³Nh´Nubah}”(h]”h ]”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”…”�”}”(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³jdíh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j`jajhˆuh1jjijjhjNíh²hh³jdíh´Mubah}”(h]”jIíah ]”(jnjoeh"]”h$]”h&]”jsˆjt)juhuh1jh³jdíh´MhjKíh²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.”…”�”}”(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&]”uh1jvhjKíh²hh³jdíh´Mubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™jCïjšjCïj›‰jœ‰j�‰uh1jh²hhjMœ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©)�”}”(hjMïh]”hŒ Parameters”…”�”}”(hjOïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjKïubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MhjGï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Ð)�”}”(hjlïh]”hŒconst char *name”…”�”}”(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Œ@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åhjfïubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j�ïh´Mhjcï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´Mhjcï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´Mhjôïubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjØïubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jóïh´M hjcï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Ð)�”}”(hj*ðh]”hŒstruct debugfs_u32_array *array”…”�”}”(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Œ=wrapper struct containing data pointer and size of the array.”h]”hŒ=wrapper struct containing data pointer and size of the array.”…”�”}”(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 hjcïubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¾hjGï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 hjGïubhÌ)�”}”(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 hjGïubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjMœh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ!debugfs_print_regs32 (C function)”Œc.debugfs_print_regs32”hNt”auh1hýhjMœ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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÎðh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÊð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”…”�”}”(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 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&]”uh1jhjñubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjñubh)�”}”(hhh]”jI)�”}”(hŒseq_file”h]”hŒseq_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_print_regs32”†”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)�”}”(hj©õh]”hŒs”…”�”}”(hjdñh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjñubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjñubjC)�”}”(hŒ const struct debugfs_reg32 *regs”h]”(j )�”}”(hj¾h]”hŒconst”…”�”}”(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ñubj )�”}”(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Œ 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 ]”jEñŒc.debugfs_print_regs32”†”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Œregs”h]”hŒregs”…”�”}”(hjîñh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjxñubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjñubjC)�”}”(hŒ int nregs”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjòubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjòubjI)�”}”(hŒnregs”h]”hŒnregs”…”�”}”(hj#òh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjòubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjñubjC)�”}”(hŒvoid __iomem *base”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj<òh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj8òubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJòh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj8òubhŒ__iomem”…”�”}”(hj8òh²hh³Nh´Nubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\òh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj8òubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjjòh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hj8òubjI)�”}”(hŒbase”h]”hŒbase”…”�”}”(hjwòh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj8òubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhjñubjC)�”}”(hŒ char *prefix”h]”(jf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj�òh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjŒòubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjžòh²hh³Nh´Nubah}”(h]”h ]”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`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Œ,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²hhjMœ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©)�”}”(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ŒL``struct seq_file *s`` the seq_file structure being used to generate output ”h]”(jÊ)�”}”(hŒ``struct seq_file *s``”h]”jÐ)�”}”(hj$óh]”hŒstruct seq_file *s”…”�”}”(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 seq_file structure being used to generate output”h]”hŒ4the seq_file structure being used to generate output”…”�”}”(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ó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%hjWóubjæ)�”}”(hhh]”hÌ)�”}”(hŒ+an array if struct debugfs_reg32 structures”h]”hŒ+an array if struct debugfs_reg32 structures”…”�”}”(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%hjó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&hjó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'hjóubjÄ)�”}”(hŒ>``char *prefix`` a string to be prefixed to every output line ”h]”(jÊ)�”}”(hŒ``char *prefix``”h]”jÐ)�”}”(hjôh]”hŒ char *prefix”…”�”}”(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 string to be prefixed to every output line”h]”hŒ,a string to be prefixed to every output line”…”�”}”(hj!ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hË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©)�”}”(hjCôh]”hŒ Description”…”�”}”(hjEôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hjAô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”…”�”}”(hjYô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žhjMœh²hh³Nh´Nubhþ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j Œ$debugfs_create_regset32 (C function)”Œc.debugfs_create_regset32”hNt”auh1hýhjMœh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒuvoid debugfs_create_regset32 (const char *name, umode_t mode, struct dentry *parent, struct debugfs_regset32 *regset)”•2qh]”j)�”}”(hŒtvoid debugfs_create_regset32(const char *name, umode_t mode, struct dentry *parent, struct debugfs_regset32 *regset)”h]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjˆôh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehj„ôh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´MSubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—ôh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj„ôh²hh³j–ôh´MSubjC)�”}”(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´MSubj=)�”}”(hŒX(const char *name, umode_t mode, struct dentry *parent, struct debugfs_regset32 *regset)”h]”(jC)�”}”(hŒconst char *name”h]”(j )�”}”(hj¾h]”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Áôubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjàôh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjÁôubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîôh²hh³Nh´Nubah}”(h]”h ]”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_regset32”†”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Œstruct dentry *parent”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Œ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.debugfs_create_regset32”†”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Œparent”h]”hŒparent”…”�”}”(hjÃõh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjhõ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 ]”jAõŒ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Œregset”h]”hŒregset”…”�”}”(hj3ö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Œ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´MShjZöh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jvhj}ôh²hh³j–ôh´MSubeh}”(h]”h ]”(j“Œfunction”eh"]”h$]”h&]”j˜j“j™juöjšjuöj›‰jœ‰j�‰uh1jh²hhjMœ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´MWhjyö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´MThj˜ö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´MThj´öubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj˜öubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j³öh´MThj•ö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´MUhjÑö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´MUhjíöubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhjÑöubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jìöh´MUhj•ö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´MXhj ÷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”…”�”}”(hj1÷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´MVhj&÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jåhj ÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³j%÷h´MXhj•ö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ÏhjZ÷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[hjV÷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.”…”�”}”(hju÷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´MYhjr÷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¾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³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´M]hjyö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´M\hjyöubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jžhjMœ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ýhjMœ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]”(jf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjï÷h²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjë÷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_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`jauh1jBhjë÷h²hh³jý÷h´M€ubj=)�”}”(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&]”uh1jhj(øubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9øh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj(øubh)�”}”(hhh]”jI)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(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.debugfs_create_devm_seqfile”†”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Œdev”h]”hŒdev”…”�”}”(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 )�”}”(hj¾h]”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šøubjf)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj¹øh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjšøubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇøh²hh³Nh´Nubah}”(h]”h ]”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 ]”jføŒc.debugfs_create_devm_seqfile”†”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Œparent”h]”hŒparent”…”�”}”(hjRùh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhj÷øubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj`jauh1jBhj$øubjC)�”}”(hŒ.int (*read_fn)(struct seq_file *s, void *data)”h]”(jf)�”}”(hŒint”h]”hŒint”…”�”}”(hjkùh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjgùubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyù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ùubj“)�”}”(hj–h]”hŒ*”…”�”}”(hj”ùh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjgùubjI)�”}”(hŒread_fn”h]”hŒread_fn”…”�”}”(hj¡ùh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjgùubj“)�”}”(hjÏ™h]”hŒ)”…”�”}”(hj¯ùh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjgùubj“)�”}”(hj¦™h]”hŒ(”…”�”}”(hj¼ùh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjgù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Œseq_file”h]”hŒseq_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 ]”jføŒc.debugfs_create_devm_seqfile”†”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)�”}”(hj©õh]”hŒs”…”�”}”(hj úh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjgùubj“)�”}”(hj3šh]”hŒ,”…”�”}”(hj-úh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjgùubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:úh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjgùubjf)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjHúh²hh³Nh´Nubah}”(h]”h ]”jrah"]”h$]”h&]”uh1jehjgùubj2)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVúh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjgùubj“)�”}”(hj–h]”hŒ*”…”�”}”(hjdúh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjgùubjI)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjqúh²hh³Nh´Nubah}”(h]”h ]”jTah"]”h$]”h&]”uh1jHhjgùubj“)�”}”(hjÏ™h]”hŒ)”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”jŸah"]”h$]”h&]”uh1j’hjgù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 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´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²hhjMœ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´M„hjÄúubj¿)�”}”(hhh]”(jÄ)�”}”(hŒ<``struct device *dev`` device related to this debugfs file. ”h]”(jÊ)�”}”(hŒ``struct device *dev``”h]”jÐ)�”}”(hjéúh]”hŒstruct device *dev”…”�”}”(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Œ$device related to this debugfs file.”h]”hŒ$device related to this debugfs 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Œ/``const char *name`` name of the debugfs 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³ŒZ/var/lib/git/docbuild/linux/Documentation/filesystems/api-summary:149: ./fs/debugfs/file.c”h´Mƒhjûubjæ)�”}”(hhh]”hÌ)�”}”(hŒname of the debugfs file.”h]”hŒname of the debugfs file.”…”�”}”(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àú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ÏhjYû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†hjUû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åhjUûubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÃh³jpûh´M†hjàúubjÄ)�”}”(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´Mˆhj¡û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´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žhjMœh²hh³Nh´Nubeh}”(h]”Œdebugfs-interface”ah ]”h"]”Œdebugfs interface”ah$]”h&]”uh1hµhj<œ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”j#üŒerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÊŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”}”(jýûjúûj.j.jéDjæDjõ€jò€jäôjáôj#j #jVjVjý-jú-j³Sj°SjŸQjœQj«Sj¨Sj~`j{`j¿mj¼mj9œj6œjõûjòûjíûjêûuŒ nametypes”}”(jýû‰j.‰jéD‰jõ€‰jäô‰j#‰jV‰jý-‰j³S‰jŸQ‰j«S‰j~`‰j¿m‰j9œ‰jõû‰jíû‰uh}”(júûh·j.hÛjæDhìj jjj„j\jajãjèjÝjâjXj]j«j°jËjÐj5j:j„j‰j¤!j©!jò#j÷#j@&jE&j´(j¹(jˆ+j�+j#-j(-j¾.jÃ.j1j"1j¸2j½2j84j=4j06j56j±7j¶7j29j79j³:j¸:j4<j9<j>j>jR?jW?jÓ@jØ@jTBjYBjò€jìDj EjEj·Fj¼FjùIjþIjÇKjÌKj’Mj—MjOjOj¯Pj´Pj RjRjœTj¡TjäVjéVjôXjùXj[j [j0^j5^jSajXaj'dj,dj¨ej­ej)gj.gjeijjijlj lj/nj4njýojpjrjrj²sj·sjnujsuj*wj/wjyjyjØzjÝzj¾|jÃ|j%j*jáôjø€j�j�jÒƒj׃jS…jX…jÔ†jÙ†j߈jäˆj`ŠjeŠj»‹jÀ‹jÉ�jÎ�jS�jX�jÔ�jÙ�jš’jŸ’j”j ”jE–jJ–jI˜jN˜jæ�jë�j€£j…£jƨj˨j$«j)«jR­jW­j­®j²®jˆ³j�³jä·jé·j3ºj8ºj̾jѾjKÃjPÃj!Æj&Æj»ÇjÀÇjÉjÉjtËjyËj*Îj/ÎjÑÐjÖÐjyÒj~Òj7Ôj<ÔjßÕjäÕj®×j³×j}Ùj‚Ùj"Ýj'Ýj«ßj°ßj;áj@áj†ãj‹ãjSåjXåjËçjÐçjûêjëj?îjDîjVðj[ðjáñjæñjjójoój #jçôjõj õjžöj£öj:øj?øjÔùjÙùjnûjsûjòj÷j&j+jÙjÞj[j`j- j2 jüjj8j=jtjyjíjòj¤j©j7j<jîjójVj#j/#j4#jž%j£%j('j-'j *j*jž+j£+j©-j®-jÓ/jØ/j 3j3jZ6j_6j„8j‰8já:jæ:j}>j‚>j§@j¬@jKBjPBjUDjZDjFj„FjmIjrIjLjLjÒNj×NjüPjQjåSjêSjú-jVj;Vj@Vj Yj%Yj€]j…]jµ`jº`j¤cj©cj@ejEejÜfjáfj]hjbhjXlj]lj%pj*pjIsjNsj½ujÂujÚxjßxjx|j}|jìjñjNƒjSƒj †j†j`‰je‰jÅŒjÊŒj*�j/�jž“j£“j9–j>–jã˜jè˜j�›j’›j7žj<žj#¢j(¢j"¦j'¦j‚©j‡©j­j ­jN±jS±j¥³jª³jh·jm·j+¼j0¼jØÀjÝÀj™ÄjžÄjxÈj}ÈjÏÌjÔÌjWÑj\ÑjŸÓj¤Ój*Öj/ÖjšØjŸØj¼ÛjÁÛjÝj!ÝjÏàjÔàjãjãjGæjLæjßèjäèj¦ëj«ëjîjîjµðjºðj?õjDõj“÷j˜÷jAùjFùjýj ýjljqjj j’j—jì jñ jP jU jj j jjèjíj›j j}j‚jËjÐje jj jB$jG$jå&jê&j[*j`*jŒ-j‘-jÅ0jÊ0jQ3jV3j…5jŠ5jp9ju9jJ<jO<j ?j?j¡Aj¦AjhCjmCj¥EjªEjâGjçGj§Jj¬JjóLjøLj?OjDOjRjRjÜTjáTj-Xj2XjêYjïYj§[j¬[jõ]jú]jÄ_jÉ_j¡bj¦bj1dj6dj]fjbfjij ij!kj&kj>mjCmj¿njÄnj½pjÂpjÓrjØrj)vj.vjzjzj…~jŠ~j �j¥�j„j#„j�†j††jº‰j¿‰jŒj$Œjp�ju�jO“jT“jÿ•j–j§—j¬—jƒšjˆšj„�j‰�jx¡j}¡j ¤j%¤jÀ§jŧj±ªj¶ªj¸®j½®j¿²jIJj´¶j¹¶jç¹jì¹jK¿jP¿j¯Äj´Äj Çj¥Çj‘Êj–ÊjjÌjoÌjŒÏj‘Ïj ÓjÓjQÕjVÕjêÙjïÙjkÛjpÛj…ÝjŠÝj(ßj-ßj×àjÜàjPãjUãjQæjVæjFêjKêj~íjƒíj2ñj7ñjxôj}ôj_÷jd÷j=újBújÖýjÛýjjjj$j~jƒj¥ jª j¸ j½ jŸj¤j†j‹jÈjÍjujzjöjûjvj{jöjûjw j| jø!jý!jy#j~#jD%jI%jé&jî&ji(jn(jù)jþ)j,j,j°Sj.jœQj.j6.j;.j,2j12j6j$6j:j:jç=jì=jÚAjßAjÍEjÒEjÀIjÅIj³Mj¸Mj¨Sj¢Qj¿QjÄQj{`j¶SjÓSjØSjÕUjÚUjVWj[Wj}Zj‚ZjÍ\jÒ\j]^jb^j¼mj�`jž`j£`j¨bj­bjIdjNdj°gjµgj‹jj�jj6œjÂmjßmjämjÂpjÇpjwsj|sjvjvj©xj®xj‚jC‚j]„jb„j|†j�†jÕˆjÚˆjÀ‹jÅ‹jÈ�jÍ�jb“jg“j,–j1–j˜j"˜jòûj<œjêûjMœjjœjoœjïžjôžj"£j'£j}§j‚§j(ªj-ªj„­j‰­jŸ°j¤°j0²j5²jG´jL´jß¶jä¶jà·jå·j‚¹j‡¹j»j »jM½jR½jx¿j}¿jÖÂjÛÂj4Æj9Æj’Éj—ÉjðÌjõÌjWÐj\ÐjiÓjnÓj{Öj€Öj�Ùj’ÙjŸÜj¤Üj±ßj¶ßjÃâjÈâj æjæjwéj|éjIíjNíjÁðjÆðj{ôj€ôjâ÷jç÷uŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.