€•Œ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/buffer”Œ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/buffer”Œ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/buffer”Œ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/buffer”Œ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/buffer”Œ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/buffer”Œ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/buffer”Œ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Œ Buffer Heads”h]”hŒ Buffer Heads”…”�”}”(hh¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhh·h²hh³Œ@/var/lib/git/docbuild/linux/Documentation/filesystems/buffer.rst”h´KubhŒ paragraph”“”)�”}”(hŒ—Linux uses buffer heads to maintain state about individual filesystem blocks. Buffer heads are deprecated and new filesystems should use iomap instead.”h]”hŒ—Linux uses buffer heads to maintain state about individual filesystem blocks. Buffer heads are deprecated and new filesystems should use iomap instead.”…”�”}”(hhÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khh·h²hubh¶)�”}”(hhh]”(h»)�”}”(hŒ Functions”h]”hŒ Functions”…”�”}”(hhÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhhÛh²hh³hÊh´KubhŒindex”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(Œsingle”Œkmap_local_bh (C function)”Œc.kmap_local_bh”hNt”auh1hìhhÛh²hh³Nh´NubhŒdesc”“”)�”}”(hhh]”(hŒdesc_signature”“”)�”}”(hŒ3void * kmap_local_bh (const struct buffer_head *bh)”h]”hŒdesc_signature_line”“”)�”}”(hŒ1void *kmap_local_bh(const struct buffer_head *bh)”h]”(hŒdesc_sig_keyword_type”“”)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”Œkt”ah"]”h$]”h&]”uh1jhj h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´K°ubhŒdesc_sig_space”“”)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”Œw”ah"]”h$]”h&]”uh1j hj h²hh³jh´K°ubhŒdesc_sig_punctuation”“”)�”}”(hŒ*”h]”hŒ*”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”Œp”ah"]”h$]”h&]”uh1j1hj h²hh³jh´K°ubhŒ desc_name”“”)�”}”(hŒ kmap_local_bh”h]”hŒ desc_sig_name”“”)�”}”(hŒ kmap_local_bh”h]”hŒ kmap_local_bh”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”Œn”ah"]”h$]”h&]”uh1jHhjDubah}”(h]”h ]”(Œsig-name”Œdescname”eh"]”h$]”h&]”Œ xml:space”Œpreserve”uh1jBhj h²hh³jh´K°ubhŒdesc_parameterlist”“”)�”}”(hŒ(const struct buffer_head *bh)”h]”hŒdesc_parameter”“”)�”}”(hŒconst struct buffer_head *bh”h]”(hŒdesc_sig_keyword”“”)�”}”(hŒconst”h]”hŒconst”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”Œk”ah"]”h$]”h&]”uh1johjkubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjkubjp)�”}”(hŒstruct”h]”hŒstruct”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjkubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjkubh)�”}”(hhh]”jI)�”}”(hŒ buffer_head”h]”hŒ buffer_head”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjªubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”Œc”Œreftype”Œ identifier”Œ reftarget”j¯Œmodname”NŒ classname”NŒ c:parent_key”Œsphinx.domains.c”Œ LookupKey”“”)�”}”Œdata”]”jÉŒ ASTIdentifier”“”)�”}”jÄjLsbŒc.kmap_local_bh”†”asbuh1hhjkubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjkubj2)�”}”(hj5h]”hŒ*”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjkubjI)�”}”(hŒbh”h]”hŒbh”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjkubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihjeubah}”(h]”h ]”h"]”h$]”h&]”jajbuh1jchj h²hh³jh´K°ubeh}”(h]”h ]”h"]”h$]”h&]”jajbŒ add_permalink”ˆuh1jŒsphinx_line_type”Œ declarator”hjh²hh³jh´K°ubah}”(h]”hûah ]”(Œsig”Œ sig-object”eh"]”h$]”h&]”Œ is_multiline”ˆŒ _toc_parts”)Œ _toc_name”huh1jh³jh´K°hhÿh²hubhŒ desc_content”“”)�”}”(hhh]”hÌ)�”}”(hŒMap the data of a buffer.”h]”hŒMap the data of a buffer.”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´K°hj"h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hhÿh²hh³jh´K°ubeh}”(h]”h ]”(jÂŒfunction”eh"]”h$]”h&]”Œdomain”jÂŒobjtype”j=Œdesctype”j=Œnoindex”‰Œ noindexentry”‰Œnocontentsentry”‰uh1hýh²hhhÛh³Nh´NubhŒ container”“”)�”}”(hXj**Parameters** ``const struct buffer_head *bh`` The buffer. **Description** Buffers usually live in the page cache, but a few are built over memory which is not. Those carry no folio and b_data is already a kernel address which is always mapped, so there is nothing to do for them. Pair with kunmap_local_bh(). **Return** A pointer to the buffer's data.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”hŒstrong”“”)�”}”(hjOh]”hŒ Parameters”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjMubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´K´hjIubhŒdefinition_list”“”)�”}”(hhh]”hŒdefinition_list_item”“”)�”}”(hŒ-``const struct buffer_head *bh`` The buffer. ”h]”(hŒterm”“”)�”}”(hŒ ``const struct buffer_head *bh``”h]”hŒliteral”“”)�”}”(hjvh]”hŒconst struct buffer_head *bh”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjtubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´K±hjnubhŒ definition”“”)�”}”(hhh]”hÌ)�”}”(hŒ The buffer.”h]”hŒ The buffer.”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j�h´K±hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jŽhjnubeh}”(h]”h ]”h"]”h$]”h&]”uh1jlh³j�h´K±hjiubah}”(h]”h ]”h"]”h$]”h&]”uh1jghjIubhÌ)�”}”(hŒ**Description**”h]”jR)�”}”(hjµh]”hŒ Description”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhj³ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´K³hjIubhÌ)�”}”(hŒìBuffers usually live in the page cache, but a few are built over memory which is not. Those carry no folio and b_data is already a kernel address which is always mapped, so there is nothing to do for them. Pair with kunmap_local_bh().”h]”hŒìBuffers usually live in the page cache, but a few are built over memory which is not. Those carry no folio and b_data is already a kernel address which is always mapped, so there is nothing to do for them. Pair with kunmap_local_bh().”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´K²hjIubhÌ)�”}”(hŒ **Return**”h]”jR)�”}”(hjÜh]”hŒReturn”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´K·hjIubhÌ)�”}”(hŒA pointer to the buffer's data.”h]”hŒ!A pointer to the buffer’s data.”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´K¸hjIubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jGhhÛh²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒkunmap_local_bh (C function)”Œc.kunmap_local_bh”hNt”auh1hìhhÛh²hh³Nh´Nubhþ)�”}”(hhh]”(j)�”}”(hŒ?void kunmap_local_bh (const struct buffer_head *bh, void *addr)”h]”j )�”}”(hŒ>void kunmap_local_bh(const struct buffer_head *bh, void *addr)”h]”(j)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´KÂubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjh²hh³j/h´KÂubjC)�”}”(hŒkunmap_local_bh”h]”jI)�”}”(hŒkunmap_local_bh”h]”hŒkunmap_local_bh”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj>ubah}”(h]”h ]”(j\j]eh"]”h$]”h&]”jajbuh1jBhjh²hh³j/h´KÂubjd)�”}”(hŒ*(const struct buffer_head *bh, void *addr)”h]”(jj)�”}”(hŒconst struct buffer_head *bh”h]”(jp)�”}”(hjsh]”hŒconst”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjZubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjZubjp)�”}”(hj�h]”hŒstruct”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjZubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjZubh)�”}”(hhh]”jI)�”}”(hŒ buffer_head”h]”hŒ buffer_head”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj”ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÂŒreftype”jÄŒ reftarget”j™Œmodname”NŒ classname”NjÈjË)�”}”jÎ]”jÑ)�”}”jÄjDsbŒc.kunmap_local_bh”†”asbuh1hhjZubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjZubj2)�”}”(hj5h]”hŒ*”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjZubjI)�”}”(hŒbh”h]”hŒbh”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjZubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihjVubjj)�”}”(hŒ void *addr”h]”(j)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjçubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjçubj2)�”}”(hj5h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjçubjI)�”}”(hŒaddr”h]”hŒaddr”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjçubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihjVubeh}”(h]”h ]”h"]”h$]”h&]”jajbuh1jchjh²hh³j/h´KÂubeh}”(h]”h ]”h"]”h$]”h&]”jajbjˆuh1jjjhjh²hh³j/h´KÂubah}”(h]”jah ]”(jjeh"]”h$]”h&]”jˆj)jhuh1jh³j/h´KÂhjh²hubj!)�”}”(hhh]”hÌ)�”}”(hŒUnmap the data of a buffer.”h]”hŒUnmap the data of a buffer.”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´KÂhj;h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjh²hh³j/h´KÂubeh}”(h]”h ]”(jÂŒfunction”eh"]”h$]”h&]”jAjÂjBjVjCjVjD‰jE‰jF‰uh1hýh²hhhÛh³Nh´NubjH)�”}”(hŒy**Parameters** ``const struct buffer_head *bh`` The buffer. ``void *addr`` The address returned by kmap_local_bh().”h]”(hÌ)�”}”(hŒ**Parameters**”h]”jR)�”}”(hj`h]”hŒ Parameters”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhj^ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´KÆhjZubjh)�”}”(hhh]”(jm)�”}”(hŒ-``const struct buffer_head *bh`` The buffer. ”h]”(js)�”}”(hŒ ``const struct buffer_head *bh``”h]”jy)�”}”(hjh]”hŒconst struct buffer_head *bh”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´KÃhjyubj�)�”}”(hhh]”hÌ)�”}”(hŒ The buffer.”h]”hŒ The buffer.”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j”h´KÃhj•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jŽhjyubeh}”(h]”h ]”h"]”h$]”h&]”uh1jlh³j”h´KÃhjvubjm)�”}”(hŒ7``void *addr`` The address returned by kmap_local_bh().”h]”(js)�”}”(hŒ``void *addr``”h]”jy)�”}”(hj¸h]”hŒ void *addr”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´KÅhj²ubj�)�”}”(hhh]”hÌ)�”}”(hŒ(The address returned by kmap_local_bh().”h]”hŒ(The address returned by kmap_local_bh().”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´KÄhjÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jŽhj²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jlh³jÍh´KÅhjvubeh}”(h]”h ]”h"]”h$]”h&]”uh1jghjZubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jGhhÛh²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒbrelse (C function)”Œc.brelse”hNt”auh1hìhhÛh²hh³Nh´Nubhþ)�”}”(hhh]”(j)�”}”(hŒ$void brelse (struct buffer_head *bh)”h]”j )�”}”(hŒ#void brelse(struct buffer_head *bh)”h]”(j)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´MDubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjh²hh³j h´MDubjC)�”}”(hŒbrelse”h]”jI)�”}”(hŒbrelse”h]”hŒbrelse”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj/ubah}”(h]”h ]”(j\j]eh"]”h$]”h&]”jajbuh1jBhjh²hh³j h´MDubjd)�”}”(hŒ(struct buffer_head *bh)”h]”jj)�”}”(hŒstruct buffer_head *bh”h]”(jp)�”}”(hj�h]”hŒstruct”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjKubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjKubh)�”}”(hhh]”jI)�”}”(hŒ buffer_head”h]”hŒ buffer_head”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÂŒreftype”jÄŒ reftarget”joŒmodname”NŒ classname”NjÈjË)�”}”jÎ]”jÑ)�”}”jÄj5sbŒc.brelse”†”asbuh1hhjKubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjKubj2)�”}”(hj5h]”hŒ*”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjKubjI)�”}”(hŒbh”h]”hŒbh”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjKubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihjGubah}”(h]”h ]”h"]”h$]”h&]”jajbuh1jchjh²hh³j h´MDubeh}”(h]”h ]”h"]”h$]”h&]”jajbjˆuh1jjjhj h²hh³j h´MDubah}”(h]”jah ]”(jjeh"]”h$]”h&]”jˆj)jhuh1jh³j h´MDhjh²hubj!)�”}”(hhh]”hÌ)�”}”(hŒRelease a buffer.”h]”hŒRelease a buffer.”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´MDhjÏh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjh²hh³j h´MDubeh}”(h]”h ]”(jÂŒfunction”eh"]”h$]”h&]”jAjÂjBjêjCjêjD‰jE‰jF‰uh1hýh²hhhÛh³Nh´NubjH)�”}”(hX%**Parameters** ``struct buffer_head *bh`` The buffer to release. **Description** Decrement a buffer_head's reference count. If **bh** is NULL, this function is a no-op. If all buffers on a folio have zero reference count, are clean and unlocked, and if the folio is unlocked and not under writeback then try_to_free_buffers() may strip the buffers from the folio in preparation for freeing it (sometimes, rarely, buffers are removed from a folio but it ends up not being freed, and buffers may later be reattached). **Context** Any context.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”jR)�”}”(hjôh]”hŒ Parameters”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjòubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´MHhjîubjh)�”}”(hhh]”jm)�”}”(hŒ2``struct buffer_head *bh`` The buffer to release. ”h]”(js)�”}”(hŒ``struct buffer_head *bh``”h]”jy)�”}”(hjh]”hŒstruct buffer_head *bh”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´MEhj ubj�)�”}”(hhh]”hÌ)�”}”(hŒThe buffer to release.”h]”hŒThe buffer to release.”…”�”}”(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&]”uh1jlh³j(h´MEhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jghjîubhÌ)�”}”(hŒ**Description**”h]”jR)�”}”(hjNh]”hŒ Description”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjLubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´MGhjîubhÌ)�”}”(hŒXDecrement a buffer_head's reference count. If **bh** is NULL, this function is a no-op.”h]”(hŒ1Decrement a buffer_head’s reference count. If ”…”�”}”(hjdh²hh³Nh´NubjR)�”}”(hŒ**bh**”h]”hŒbh”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjdubhŒ# is NULL, this function is a no-op.”…”�”}”(hjdh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´MFhjîubhÌ)�”}”(hXZIf all buffers on a folio have zero reference count, are clean and unlocked, and if the folio is unlocked and not under writeback then try_to_free_buffers() may strip the buffers from the folio in preparation for freeing it (sometimes, rarely, buffers are removed from a folio but it ends up not being freed, and buffers may later be reattached).”h]”hXZIf all buffers on a folio have zero reference count, are clean and unlocked, and if the folio is unlocked and not under writeback then try_to_free_buffers() may strip the buffers from the folio in preparation for freeing it (sometimes, rarely, buffers are removed from a folio but it ends up not being freed, and buffers may later be reattached).”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´MIhjîubhÌ)�”}”(hŒ **Context**”h]”jR)�”}”(hj–h]”hŒContext”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´MPhjîubhÌ)�”}”(hŒ Any context.”h]”hŒ Any context.”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´MQhjîubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jGhhÛh²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒbforget (C function)”Œ c.bforget”hNt”auh1hìhhÛh²hh³Nh´Nubhþ)�”}”(hhh]”(j)�”}”(hŒ%void bforget (struct buffer_head *bh)”h]”j )�”}”(hŒ$void bforget(struct buffer_head *bh)”h]”(j)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj×h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´MZubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj×h²hh³jéh´MZubjC)�”}”(hŒbforget”h]”jI)�”}”(hŒbforget”h]”hŒbforget”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjøubah}”(h]”h ]”(j\j]eh"]”h$]”h&]”jajbuh1jBhj×h²hh³jéh´MZubjd)�”}”(hŒ(struct buffer_head *bh)”h]”jj)�”}”(hŒstruct buffer_head *bh”h]”(jp)�”}”(hj�h]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjubh)�”}”(hhh]”jI)�”}”(hŒ buffer_head”h]”hŒ buffer_head”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj3ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÂŒreftype”jÄŒ reftarget”j8Œmodname”NŒ classname”NjÈjË)�”}”jÎ]”jÑ)�”}”jÄjþsbŒ c.bforget”†”asbuh1hhjubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjubj2)�”}”(hj5h]”hŒ*”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjubjI)�”}”(hŒbh”h]”hŒbh”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihjubah}”(h]”h ]”h"]”h$]”h&]”jajbuh1jchj×h²hh³jéh´MZubeh}”(h]”h ]”h"]”h$]”h&]”jajbjˆuh1jjjhjÓh²hh³jéh´MZubah}”(h]”jÎah ]”(jjeh"]”h$]”h&]”jˆj)jhuh1jh³jéh´MZhjÐh²hubj!)�”}”(hhh]”hÌ)�”}”(hŒ#Discard any dirty data in a buffer.”h]”hŒ#Discard any dirty data in a buffer.”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´MZhj˜h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÐh²hh³jéh´MZubeh}”(h]”h ]”(jÂŒfunction”eh"]”h$]”h&]”jAjÂjBj³jCj³jD‰jE‰jF‰uh1hýh²hhhÛh³Nh´NubjH)�”}”(hX.**Parameters** ``struct buffer_head *bh`` The buffer to forget. **Description** Call this function instead of brelse() if the data written to a buffer no longer needs to be written back. It will clear the buffer's dirty flag so writeback of this buffer will be skipped. **Context** Any context.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”jR)�”}”(hj½h]”hŒ Parameters”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhj»ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´M^hj·ubjh)�”}”(hhh]”jm)�”}”(hŒ1``struct buffer_head *bh`` The buffer to forget. ”h]”(js)�”}”(hŒ``struct buffer_head *bh``”h]”jy)�”}”(hjÜh]”hŒstruct buffer_head *bh”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´M[hjÖubj�)�”}”(hhh]”hÌ)�”}”(hŒThe buffer to forget.”h]”hŒThe buffer to forget.”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jñh´M[hjòubah}”(h]”h ]”h"]”h$]”h&]”uh1jŽhjÖubeh}”(h]”h ]”h"]”h$]”h&]”uh1jlh³jñh´M[hjÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jghj·ubhÌ)�”}”(hŒ**Description**”h]”jR)�”}”(hjh]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´M]hj·ubhÌ)�”}”(hŒ¾Call this function instead of brelse() if the data written to a buffer no longer needs to be written back. It will clear the buffer's dirty flag so writeback of this buffer will be skipped.”h]”hŒÀCall this function instead of brelse() if the data written to a buffer no longer needs to be written back. It will clear the buffer’s dirty flag so writeback of this buffer will be skipped.”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´M\hj·ubhÌ)�”}”(hŒ **Context**”h]”jR)�”}”(hj>h]”hŒContext”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhj<ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´M`hj·ubhÌ)�”}”(hŒ Any context.”h]”hŒ Any context.”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´Mahj·ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jGhhÛh²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒsb_bread (C function)”Œ c.sb_bread”hNt”auh1hìhhÛh²hh³Nh´Nubhþ)�”}”(hhh]”(j)�”}”(hŒFstruct buffer_head * sb_bread (struct super_block *sb, sector_t block)”h]”j )�”}”(hŒDstruct buffer_head *sb_bread(struct super_block *sb, sector_t block)”h]”(jp)�”}”(hj�h]”hŒstruct”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´Mjubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjh²hh³j�h´Mjubh)�”}”(hhh]”jI)�”}”(hŒ buffer_head”h]”hŒ buffer_head”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjŸubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÂŒreftype”jÄŒ reftarget”j¤Œmodname”NŒ classname”NjÈjË)�”}”jÎ]”jÑ)�”}”jÄŒsb_bread”sbŒ c.sb_bread”†”asbuh1hhjh²hh³j�h´Mjubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjh²hh³j�h´Mjubj2)�”}”(hj5h]”hŒ*”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjh²hh³j�h´MjubjC)�”}”(hŒsb_bread”h]”jI)�”}”(hjÀh]”hŒsb_bread”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÞubah}”(h]”h ]”(j\j]eh"]”h$]”h&]”jajbuh1jBhjh²hh³j�h´Mjubjd)�”}”(hŒ((struct super_block *sb, sector_t block)”h]”(jj)�”}”(hŒstruct super_block *sb”h]”(jp)�”}”(hj�h]”hŒstruct”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjùubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjùubh)�”}”(hhh]”jI)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÂŒreftype”jÄŒ reftarget”j Œmodname”NŒ classname”NjÈjË)�”}”jÎ]”j¾Œ c.sb_bread”†”asbuh1hhjùubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9 h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjùubj2)�”}”(hj5h]”hŒ*”…”�”}”(hjG h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjùubjI)�”}”(hŒsb”h]”hŒsb”…”�”}”(hjT h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjùubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihjõubjj)�”}”(hŒsector_t block”h]”(h)�”}”(hhh]”jI)�”}”(hŒsector_t”h]”hŒsector_t”…”�”}”(hjp h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjm ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÂŒreftype”jÄŒ reftarget”jr Œmodname”NŒ classname”NjÈjË)�”}”jÎ]”j¾Œ c.sb_bread”†”asbuh1hhji ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽ h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hji ubjI)�”}”(hŒblock”h]”hŒblock”…”�”}”(hjœ h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhji ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihjõubeh}”(h]”h ]”h"]”h$]”h&]”jajbuh1jchjh²hh³j�h´Mjubeh}”(h]”h ]”h"]”h$]”h&]”jajbjˆuh1jjjhj{h²hh³j�h´Mjubah}”(h]”jvah ]”(jjeh"]”h$]”h&]”jˆj)jhuh1jh³j�h´Mjhjxh²hubj!)�”}”(hhh]”hÌ)�”}”(hŒ Read a block.”h]”hŒ Read a block.”…”�”}”(hjÆ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´Mjhjà h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjxh²hh³j�h´Mjubeh}”(h]”h ]”(jÂŒfunction”eh"]”h$]”h&]”jAjÂjBjÞ jCjÞ jD‰jE‰jF‰uh1hýh²hhhÛh³Nh´NubjH)�”}”(hXû**Parameters** ``struct super_block *sb`` The superblock to read from. ``sector_t block`` Block number in units of block size. **Description** Read a specified block, and return the buffer head that refers to it. The memory is allocated from the movable area so that it can be migrated. The returned buffer head has its refcount increased. The caller should call brelse() when it has finished with the buffer. **Context** May sleep waiting for I/O. **Return** NULL if the block was unreadable.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”jR)�”}”(hjè h]”hŒ Parameters”…”�”}”(hjê h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjæ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´Mnhjâ ubjh)�”}”(hhh]”(jm)�”}”(hŒ8``struct super_block *sb`` The superblock to read from. ”h]”(js)�”}”(hŒ``struct super_block *sb``”h]”jy)�”}”(hj h]”hŒstruct super_block *sb”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´Mkhj ubj�)�”}”(hhh]”hÌ)�”}”(hŒThe superblock to read from.”h]”hŒThe superblock to read from.”…”�”}”(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&]”uh1jlh³j h´Mkhjþ ubjm)�”}”(hŒ8``sector_t block`` Block number in units of block size. ”h]”(js)�”}”(hŒ``sector_t block``”h]”jy)�”}”(hj@ h]”hŒsector_t block”…”�”}”(hjB h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj> ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´Mlhj: ubj�)�”}”(hhh]”hÌ)�”}”(hŒ$Block number in units of block size.”h]”hŒ$Block number in units of block size.”…”�”}”(hjY h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jU h´MlhjV ubah}”(h]”h ]”h"]”h$]”h&]”uh1jŽhj: ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jlh³jU h´Mlhjþ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jghjâ ubhÌ)�”}”(hŒ**Description**”h]”jR)�”}”(hj{ h]”hŒ Description”…”�”}”(hj} h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjy ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´Mnhjâ ubhÌ)�”}”(hX Read a specified block, and return the buffer head that refers to it. The memory is allocated from the movable area so that it can be migrated. The returned buffer head has its refcount increased. The caller should call brelse() when it has finished with the buffer.”h]”hX Read a specified block, and return the buffer head that refers to it. The memory is allocated from the movable area so that it can be migrated. The returned buffer head has its refcount increased. The caller should call brelse() when it has finished with the buffer.”…”�”}”(hj‘ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´Mmhjâ ubhÌ)�”}”(hŒ **Context**”h]”jR)�”}”(hj¢ h]”hŒContext”…”�”}”(hj¤ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhj  ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´Mrhjâ ubhÌ)�”}”(hŒMay sleep waiting for I/O.”h]”hŒMay sleep waiting for I/O.”…”�”}”(hj¸ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´Mshjâ ubhÌ)�”}”(hŒ **Return**”h]”jR)�”}”(hjÉ h]”hŒReturn”…”�”}”(hjË h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjÇ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´Muhjâ ubhÌ)�”}”(hŒ!NULL if the block was unreadable.”h]”hŒ!NULL if the block was unreadable.”…”�”}”(hjß h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´Mthjâ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jGhhÛh²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒsb_bread_unmovable (C function)”Œc.sb_bread_unmovable”hNt”auh1hìhhÛh²hh³Nh´Nubhþ)�”}”(hhh]”(j)�”}”(hŒPstruct buffer_head * sb_bread_unmovable (struct super_block *sb, sector_t block)”h]”j )�”}”(hŒNstruct buffer_head *sb_bread_unmovable(struct super_block *sb, sector_t block)”h]”(jp)�”}”(hj�h]”hŒstruct”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´M}ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj h²hh³j h´M}ubh)�”}”(hhh]”jI)�”}”(hŒ buffer_head”h]”hŒ buffer_head”…”�”}”(hj- h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj* ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÂŒreftype”jÄŒ reftarget”j/ Œmodname”NŒ classname”NjÈjË)�”}”jÎ]”jÑ)�”}”jÄŒsb_bread_unmovable”sbŒc.sb_bread_unmovable”†”asbuh1hhj h²hh³j h´M}ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjN h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj h²hh³j h´M}ubj2)�”}”(hj5h]”hŒ*”…”�”}”(hj\ h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj h²hh³j h´M}ubjC)�”}”(hŒsb_bread_unmovable”h]”jI)�”}”(hjK h]”hŒsb_bread_unmovable”…”�”}”(hjm h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhji ubah}”(h]”h ]”(j\j]eh"]”h$]”h&]”jajbuh1jBhj h²hh³j h´M}ubjd)�”}”(hŒ((struct super_block *sb, sector_t block)”h]”(jj)�”}”(hŒstruct super_block *sb”h]”(jp)�”}”(hj�h]”hŒstruct”…”�”}”(hjˆ h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj„ ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj• h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj„ ubh)�”}”(hhh]”jI)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(hj¦ h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj£ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÂŒreftype”jÄŒ reftarget”j¨ Œmodname”NŒ classname”NjÈjË)�”}”jÎ]”jI Œc.sb_bread_unmovable”†”asbuh1hhj„ ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄ h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj„ ubj2)�”}”(hj5h]”hŒ*”…”�”}”(hjÒ h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj„ ubjI)�”}”(hŒsb”h]”hŒsb”…”�”}”(hjß h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj„ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihj€ ubjj)�”}”(hŒsector_t block”h]”(h)�”}”(hhh]”jI)�”}”(hŒsector_t”h]”hŒsector_t”…”�”}”(hjû h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjø ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÂŒreftype”jÄŒ reftarget”jý Œmodname”NŒ classname”NjÈjË)�”}”jÎ]”jI Œc.sb_bread_unmovable”†”asbuh1hhjô ubj!)�”}”(hŒ ”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 ]”jUah"]”h$]”h&]”uh1jHhjô ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihj€ ubeh}”(h]”h ]”h"]”h$]”h&]”jajbuh1jchj h²hh³j h´M}ubeh}”(h]”h ]”h"]”h$]”h&]”jajbjˆuh1jjjhj h²hh³j h´M}ubah}”(h]”j ah ]”(jjeh"]”h$]”h&]”jˆj)jhuh1jh³j h´M}hj h²hubj!)�”}”(hhh]”hÌ)�”}”(hŒ Read a block.”h]”hŒ Read a block.”…”�”}”(hjQ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´M}hjN h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj h²hh³j h´M}ubeh}”(h]”h ]”(jÂŒfunction”eh"]”h$]”h&]”jAjÂjBji jCji jD‰jE‰jF‰uh1hýh²hhhÛh³Nh´NubjH)�”}”(hX**Parameters** ``struct super_block *sb`` The superblock to read from. ``sector_t block`` Block number in units of block size. **Description** Read a specified block, and return the buffer head that refers to it. The memory is allocated from the unmovable area so that pointers into it remain valid after compaction runs. The returned buffer head has its refcount increased. The caller should call brelse() when it has finished with the buffer. **Context** May sleep waiting for I/O. **Return** NULL if the block was unreadable.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”jR)�”}”(hjs h]”hŒ Parameters”…”�”}”(hju h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjq ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´M�hjm ubjh)�”}”(hhh]”(jm)�”}”(hŒ8``struct super_block *sb`` The superblock to read from. ”h]”(js)�”}”(hŒ``struct super_block *sb``”h]”jy)�”}”(hj’ h]”hŒstruct super_block *sb”…”�”}”(hj” h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj� ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´M~hjŒ ubj�)�”}”(hhh]”hÌ)�”}”(hŒThe superblock to read from.”h]”hŒThe superblock 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&]”uh1jlh³j§ h´M~hj‰ ubjm)�”}”(hŒ8``sector_t block`` Block number in units of block size. ”h]”(js)�”}”(hŒ``sector_t block``”h]”jy)�”}”(hjË h]”hŒsector_t block”…”�”}”(hjÍ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjÉ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´MhjÅ ubj�)�”}”(hhh]”hÌ)�”}”(hŒ$Block number in units of block size.”h]”hŒ$Block number in units of block 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&]”uh1jlh³jà h´Mhj‰ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jghjm ubhÌ)�”}”(hŒ**Description**”h]”jR)�”}”(hj h]”hŒ Description”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´M�hjm ubhÌ)�”}”(hX/Read a specified block, and return the buffer head that refers to it. The memory is allocated from the unmovable area so that pointers into it remain valid after compaction runs. The returned buffer head has its refcount increased. The caller should call brelse() when it has finished with the buffer.”h]”hX/Read a specified block, and return the buffer head that refers to it. The memory is allocated from the unmovable area so that pointers into it remain valid after compaction runs. The returned buffer head has its refcount increased. The caller should call brelse() when it has finished with the buffer.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´M€hjm ubhÌ)�”}”(hŒ **Context**”h]”jR)�”}”(hj- h]”hŒContext”…”�”}”(hj/ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhj+ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´M†hjm ubhÌ)�”}”(hŒMay sleep waiting for I/O.”h]”hŒMay sleep waiting for I/O.”…”�”}”(hjC h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´M‡hjm ubhÌ)�”}”(hŒ **Return**”h]”jR)�”}”(hjT h]”hŒReturn”…”�”}”(hjV h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjR ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´M‰hjm ubhÌ)�”}”(hŒ!NULL if the block was unreadable.”h]”hŒ!NULL if the block was unreadable.”…”�”}”(hjj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´Mˆhjm ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jGhhÛh²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒsb_breadahead (C function)”Œc.sb_breadahead”hNt”auh1hìhhÛh²hh³Nh´Nubhþ)�”}”(hhh]”(j)�”}”(hŒ;void sb_breadahead (struct super_block *sb, sector_t block)”h]”j )�”}”(hŒ:void sb_breadahead(struct super_block *sb, sector_t block)”h]”(j)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj™ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj• h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´M‘ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨ h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj• h²hh³j§ h´M‘ubjC)�”}”(hŒ sb_breadahead”h]”jI)�”}”(hŒ sb_breadahead”h]”hŒ sb_breadahead”…”�”}”(hjº h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj¶ ubah}”(h]”h ]”(j\j]eh"]”h$]”h&]”jajbuh1jBhj• h²hh³j§ h´M‘ubjd)�”}”(hŒ((struct super_block *sb, sector_t block)”h]”(jj)�”}”(hŒstruct super_block *sb”h]”(jp)�”}”(hj�h]”hŒstruct”…”�”}”(hjÖ h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjÒ ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjã h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjÒ ubh)�”}”(hhh]”jI)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(hjô h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjñ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÂŒreftype”jÄŒ reftarget”jö Œmodname”NŒ classname”NjÈjË)�”}”jÎ]”jÑ)�”}”jÄj¼ sbŒc.sb_breadahead”†”asbuh1hhjÒ ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjÒ ubj2)�”}”(hj5h]”hŒ*”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÒ ubjI)�”}”(hŒsb”h]”hŒsb”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÒ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihjÎ ubjj)�”}”(hŒsector_t block”h]”(h)�”}”(hhh]”jI)�”}”(hŒsector_t”h]”hŒsector_t”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjHubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÂŒreftype”jÄŒ reftarget”jMŒmodname”NŒ classname”NjÈjË)�”}”jÎ]”jŒc.sb_breadahead”†”asbuh1hhjDubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjDubjI)�”}”(hŒblock”h]”hŒblock”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjDubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihjÎ ubeh}”(h]”h ]”h"]”h$]”h&]”jajbuh1jchj• h²hh³j§ h´M‘ubeh}”(h]”h ]”h"]”h$]”h&]”jajbjˆuh1jjjhj‘ h²hh³j§ h´M‘ubah}”(h]”jŒ ah ]”(jjeh"]”h$]”h&]”jˆj)jhuh1jh³j§ h´M‘hjŽ h²hubj!)�”}”(hhh]”hÌ)�”}”(hŒStart readahead.”h]”hŒStart readahead.”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´M‘hjžh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjŽ h²hh³j§ h´M‘ubeh}”(h]”h ]”(jÂŒfunction”eh"]”h$]”h&]”jAjÂjBj¹jCj¹jD‰jE‰jF‰uh1hýh²hhhÛh³Nh´NubjH)�”}”(hX`**Parameters** ``struct super_block *sb`` Superblock identifying the block device. ``sector_t block`` The block to read. **Description** Read this block. The I/O will be flagged as being readahead rather than immediate read, but (unlike the page cache), surrounding blocks will not be read. **Context** May sleep in order to allocate memory.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”jR)�”}”(hjÃh]”hŒ Parameters”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjÁubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´M•hj½ubjh)�”}”(hhh]”(jm)�”}”(hŒD``struct super_block *sb`` Superblock identifying the block device. ”h]”(js)�”}”(hŒ``struct super_block *sb``”h]”jy)�”}”(hjâh]”hŒstruct super_block *sb”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjàubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´M’hjÜubj�)�”}”(hhh]”hÌ)�”}”(hŒ(Superblock identifying the block device.”h]”hŒ(Superblock identifying the block device.”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j÷h´M’hjøubah}”(h]”h ]”h"]”h$]”h&]”uh1jŽhjÜubeh}”(h]”h ]”h"]”h$]”h&]”uh1jlh³j÷h´M’hjÙubjm)�”}”(hŒ&``sector_t block`` The block to read. ”h]”(js)�”}”(hŒ``sector_t block``”h]”jy)�”}”(hjh]”hŒsector_t block”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´M“hjubj�)�”}”(hhh]”hÌ)�”}”(hŒThe block to read.”h]”hŒThe block to read.”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j0h´M“hj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jŽhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jlh³j0h´M“hjÙubeh}”(h]”h ]”h"]”h$]”h&]”uh1jghj½ubhÌ)�”}”(hŒ**Description**”h]”jR)�”}”(hjVh]”hŒ Description”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjTubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´M•hj½ubhÌ)�”}”(hŒšRead this block. The I/O will be flagged as being readahead rather than immediate read, but (unlike the page cache), surrounding blocks will not be read.”h]”hŒšRead this block. The I/O will be flagged as being readahead rather than immediate read, but (unlike the page cache), surrounding blocks will not be read.”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´M”hj½ubhÌ)�”}”(hŒ **Context**”h]”jR)�”}”(hj}h]”hŒContext”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´M˜hj½ubhÌ)�”}”(hŒ&May sleep in order to allocate memory.”h]”hŒ&May sleep in order to allocate memory.”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´M™hj½ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jGhhÛh²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒ__bread (C function)”Œ c.__bread”hNt”auh1hìhhÛh²hh³Nh´Nubhþ)�”}”(hhh]”(j)�”}”(hŒWstruct buffer_head * __bread (struct block_device *bdev, sector_t block, unsigned size)”h]”j )�”}”(hŒUstruct buffer_head *__bread(struct block_device *bdev, sector_t block, unsigned size)”h]”(jp)�”}”(hj�h]”hŒstruct”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj¾h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´Mubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj¾h²hh³jÏh´Mubh)�”}”(hhh]”jI)�”}”(hŒ buffer_head”h]”hŒ buffer_head”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÞubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÂŒreftype”jÄŒ reftarget”jãŒmodname”NŒ classname”NjÈjË)�”}”jÎ]”jÑ)�”}”jÄŒ__bread”sbŒ c.__bread”†”asbuh1hhj¾h²hh³jÏh´Mubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj¾h²hh³jÏh´Mubj2)�”}”(hj5h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¾h²hh³jÏh´MubjC)�”}”(hŒ__bread”h]”jI)�”}”(hjÿh]”hŒ__bread”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjubah}”(h]”h ]”(j\j]eh"]”h$]”h&]”jajbuh1jBhj¾h²hh³jÏh´Mubjd)�”}”(hŒ:(struct block_device *bdev, sector_t block, unsigned size)”h]”(jj)�”}”(hŒstruct block_device *bdev”h]”(jp)�”}”(hj�h]”hŒstruct”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj8ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj8ubh)�”}”(hhh]”jI)�”}”(hŒ block_device”h]”hŒ block_device”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjWubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÂŒreftype”jÄŒ reftarget”j\Œmodname”NŒ classname”NjÈjË)�”}”jÎ]”jýŒ c.__bread”†”asbuh1hhj8ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj8ubj2)�”}”(hj5h]”hŒ*”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj8ubjI)�”}”(hŒbdev”h]”hŒbdev”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihj4ubjj)�”}”(hŒsector_t block”h]”(h)�”}”(hhh]”jI)�”}”(hŒsector_t”h]”hŒsector_t”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj¬ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÂŒreftype”jÄŒ reftarget”j±Œmodname”NŒ classname”NjÈjË)�”}”jÎ]”jýŒ c.__bread”†”asbuh1hhj¨ubj!)�”}”(hŒ ”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 ]”jUah"]”h$]”h&]”uh1jHhj¨ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihj4ubjj)�”}”(hŒ unsigned size”h]”(j)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjðubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjðubjI)�”}”(hŒsize”h]”hŒsize”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjðubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihj4ubeh}”(h]”h ]”h"]”h$]”h&]”jajbuh1jchj¾h²hh³jÏh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jajbjˆuh1jjjhjºh²hh³jÏh´Mubah}”(h]”jµah ]”(jjeh"]”h$]”h&]”jˆj)jhuh1jh³jÏh´Mhj·h²hubj!)�”}”(hhh]”hÌ)�”}”(hŒ Read a block.”h]”hŒ Read a block.”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´Mhj7h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj·h²hh³jÏh´Mubeh}”(h]”h ]”(jÂŒfunction”eh"]”h$]”h&]”jAjÂjBjRjCjRjD‰jE‰jF‰uh1hýh²hhhÛh³Nh´NubjH)�”}”(hX=**Parameters** ``struct block_device *bdev`` The block device to read from. ``sector_t block`` Block number in units of block size. ``unsigned size`` The block size of this device in bytes. **Description** Read a specified block, and return the buffer head that refers to it. The memory is allocated from the movable area so that it can be migrated. The returned buffer head has its refcount increased. The caller should call brelse() when it has finished with the buffer. **Context** May sleep waiting for I/O. **Return** NULL if the block was unreadable.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”jR)�”}”(hj\h]”hŒ Parameters”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjZubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´MhjVubjh)�”}”(hhh]”(jm)�”}”(hŒ=``struct block_device *bdev`` The block device to read from. ”h]”(js)�”}”(hŒ``struct block_device *bdev``”h]”jy)�”}”(hj{h]”hŒstruct block_device *bdev”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjyubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´Mhjuubj�)�”}”(hhh]”hÌ)�”}”(hŒThe block device to read from.”h]”hŒThe block device to read from.”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j�h´Mhj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jŽhjuubeh}”(h]”h ]”h"]”h$]”h&]”uh1jlh³j�h´Mhjrubjm)�”}”(hŒ8``sector_t block`` Block number in units of block size. ”h]”(js)�”}”(hŒ``sector_t block``”h]”jy)�”}”(hj´h]”hŒsector_t block”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´Mhj®ubj�)�”}”(hhh]”hÌ)�”}”(hŒ$Block number in units of block size.”h]”hŒ$Block number in units of block 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&]”uh1jlh³jÉh´Mhjrubjm)�”}”(hŒ:``unsigned size`` The block size of this device in bytes. ”h]”(js)�”}”(hŒ``unsigned size``”h]”jy)�”}”(hjíh]”hŒ unsigned size”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjëubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´Mhjçubj�)�”}”(hhh]”hÌ)�”}”(hŒ'The block size of this device in bytes.”h]”hŒ'The block size of this device in bytes.”…”�”}”(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&]”uh1jlh³jh´Mhjrubeh}”(h]”h ]”h"]”h$]”h&]”uh1jghjVubhÌ)�”}”(hŒ**Description**”h]”jR)�”}”(hj(h]”hŒ Description”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´MhjVubhÌ)�”}”(hX Read a specified block, and return the buffer head that refers to it. The memory is allocated from the movable area so that it can be migrated. The returned buffer head has its refcount increased. The caller should call brelse() when it has finished with the buffer.”h]”hX Read a specified block, and return the buffer head that refers to it. The memory is allocated from the movable area so that it can be migrated. The returned buffer head has its refcount increased. The caller should call brelse() when it has finished with the buffer.”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´MhjVubhÌ)�”}”(hŒ **Context**”h]”jR)�”}”(hjOh]”hŒContext”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjMubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´MhjVubhÌ)�”}”(hŒMay sleep waiting for I/O.”h]”hŒMay sleep waiting for I/O.”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´MhjVubhÌ)�”}”(hŒ **Return**”h]”jR)�”}”(hjvh]”hŒReturn”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjtubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´MhjVubhÌ)�”}”(hŒ!NULL if the block was unreadable.”h]”hŒ!NULL if the block was unreadable.”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´MhjVubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jGhhÛh²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒget_nth_bh (C function)”Œ c.get_nth_bh”hNt”auh1hìhhÛh²hh³Nh´Nubhþ)�”}”(hhh]”(j)�”}”(hŒLstruct buffer_head * get_nth_bh (struct buffer_head *bh, unsigned int count)”h]”j )�”}”(hŒJstruct buffer_head *get_nth_bh(struct buffer_head *bh, unsigned int count)”h]”(jp)�”}”(hj�h]”hŒstruct”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj·h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´M#ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj·h²hh³jÈh´M#ubh)�”}”(hhh]”jI)�”}”(hŒ buffer_head”h]”hŒ buffer_head”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj×ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÂŒreftype”jÄŒ reftarget”jÜŒmodname”NŒ classname”NjÈjË)�”}”jÎ]”jÑ)�”}”jÄŒ get_nth_bh”sbŒ c.get_nth_bh”†”asbuh1hhj·h²hh³jÈh´M#ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj·h²hh³jÈh´M#ubj2)�”}”(hj5h]”hŒ*”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj·h²hh³jÈh´M#ubjC)�”}”(hŒ get_nth_bh”h]”jI)�”}”(hjøh]”hŒ get_nth_bh”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjubah}”(h]”h ]”(j\j]eh"]”h$]”h&]”jajbuh1jBhj·h²hh³jÈh´M#ubjd)�”}”(hŒ,(struct buffer_head *bh, unsigned int count)”h]”(jj)�”}”(hŒstruct buffer_head *bh”h]”(jp)�”}”(hj�h]”hŒstruct”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj1ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj1ubh)�”}”(hhh]”jI)�”}”(hŒ buffer_head”h]”hŒ buffer_head”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjPubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÂŒreftype”jÄŒ reftarget”jUŒmodname”NŒ classname”NjÈjË)�”}”jÎ]”jöŒ c.get_nth_bh”†”asbuh1hhj1ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj1ubj2)�”}”(hj5h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj1ubjI)�”}”(hŒbh”h]”hŒbh”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihj-ubjj)�”}”(hŒunsigned int count”h]”(j)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¡ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj¡ubj)�”}”(hŒint”h]”hŒint”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¡ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj¡ubjI)�”}”(hŒcount”h]”hŒcount”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj¡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihj-ubeh}”(h]”h ]”h"]”h$]”h&]”jajbuh1jchj·h²hh³jÈh´M#ubeh}”(h]”h ]”h"]”h$]”h&]”jajbjˆuh1jjjhj³h²hh³jÈh´M#ubah}”(h]”j®ah ]”(jjeh"]”h$]”h&]”jˆj)jhuh1jh³jÈh´M#hj°h²hubj!)�”}”(hhh]”hÌ)�”}”(hŒ2Get a reference on the n'th buffer after this one.”h]”hŒ4Get a reference on the n’th buffer after this one.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´M#hjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj°h²hh³jÈh´M#ubeh}”(h]”h ]”(jÂŒfunction”eh"]”h$]”h&]”jAjÂjBjjCjjD‰jE‰jF‰uh1hýh²hhhÛh³Nh´NubjH)�”}”(hX**Parameters** ``struct buffer_head *bh`` The buffer to start counting from. ``unsigned int count`` How many buffers to skip. **Description** This is primarily useful for finding the nth buffer in a folio; in that case you pass the head buffer and the byte offset in the folio divided by the block size. It can be used for other purposes, but it will wrap at the end of the folio rather than returning NULL or proceeding to the next folio for you. **Return** The requested buffer with an elevated refcount.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”jR)�”}”(hj)h]”hŒ Parameters”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´M'hj#ubjh)�”}”(hhh]”(jm)�”}”(hŒ>``struct buffer_head *bh`` The buffer to start counting from. ”h]”(js)�”}”(hŒ``struct buffer_head *bh``”h]”jy)�”}”(hjHh]”hŒstruct buffer_head *bh”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjFubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´M$hjBubj�)�”}”(hhh]”hÌ)�”}”(hŒ"The buffer to start counting from.”h]”hŒ"The buffer to start counting from.”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j]h´M$hj^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jŽhjBubeh}”(h]”h ]”h"]”h$]”h&]”uh1jlh³j]h´M$hj?ubjm)�”}”(hŒ1``unsigned int count`` How many buffers to skip. ”h]”(js)�”}”(hŒ``unsigned int count``”h]”jy)�”}”(hj�h]”hŒunsigned int count”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´M%hj{ubj�)�”}”(hhh]”hÌ)�”}”(hŒHow many buffers to skip.”h]”hŒHow many buffers to skip.”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j–h´M%hj—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jŽhj{ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jlh³j–h´M%hj?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jghj#ubhÌ)�”}”(hŒ**Description**”h]”jR)�”}”(hj¼h]”hŒ Description”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjºubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´M'hj#ubhÌ)�”}”(hX2This is primarily useful for finding the nth buffer in a folio; in that case you pass the head buffer and the byte offset in the folio divided by the block size. It can be used for other purposes, but it will wrap at the end of the folio rather than returning NULL or proceeding to the next folio for you.”h]”hX2This is primarily useful for finding the nth buffer in a folio; in that case you pass the head buffer and the byte offset in the folio divided by the block size. It can be used for other purposes, but it will wrap at the end of the folio rather than returning NULL or proceeding to the next folio for you.”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´M&hj#ubhÌ)�”}”(hŒ **Return**”h]”jR)�”}”(hjãh]”hŒReturn”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjáubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´M,hj#ubhÌ)�”}”(hŒ/The requested buffer with an elevated refcount.”h]”hŒ/The requested buffer with an elevated refcount.”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ^/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:10: ./include/linux/buffer_head.h”h´M-hj#ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jGhhÛh²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒbio_endio_bh (C function)”Œc.bio_endio_bh”hNt”auh1hìhhÛh²hh³Nh´Nubhþ)�”}”(hhh]”(j)�”}”(hŒ=bool bio_endio_bh (struct bio *bio, struct buffer_head **bhp)”h]”j )�”}”(hŒah"]”h$]”h&]”uh1j1hjaubjI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjaubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihj]ubjj)�”}”(hŒstruct buffer_head **bhp”h]”(jp)�”}”(hj�h]”hŒstruct”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjÓubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjÓubh)�”}”(hhh]”jI)�”}”(hŒ buffer_head”h]”hŒ buffer_head”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjòubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÂŒreftype”jÄŒ reftarget”j÷Œmodname”NŒ classname”NjÈjË)�”}”jÎ]”jŸŒc.bio_endio_bh”†”asbuh1hhjÓubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjÓubj2)�”}”(hj5h]”hŒ*”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÓubj2)�”}”(hj5h]”hŒ*”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÓubjI)�”}”(hŒbhp”h]”hŒbhp”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÓubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihj]ubeh}”(h]”h ]”h"]”h$]”h&]”jajbuh1jchj$h²hh³j6h´Kƒubeh}”(h]”h ]”h"]”h$]”h&]”jajbjˆuh1jjjhj h²hh³j6h´Kƒubah}”(h]”jah ]”(jjeh"]”h$]”h&]”jˆj)jhuh1jh³j6h´Kƒhjh²hubj!)�”}”(hhh]”hÌ)�”}”(hŒ(Discard the bio used to submit a buffer.”h]”hŒ(Discard the bio used to submit a buffer.”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Kƒhjbh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjh²hh³j6h´Kƒubeh}”(h]”h ]”(jÂŒfunction”eh"]”h$]”h&]”jAjÂjBj}jCj}jD‰jE‰jF‰uh1hýh²hhhÛh³Nh´NubjH)�”}”(hX¤**Parameters** ``struct bio *bio`` The bio. ``struct buffer_head **bhp`` Where to return the buffer_head. **Description** Call this in your bio_end_io handler to retrieve the buffer_head submitted in bh_submit(). If you did not call bh_submit(), do not call this function; it will return garbage. This function consumes the bio refcount which will probably free the bio. **Return** True if the I/O succeeded.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”jR)�”}”(hj‡h]”hŒ Parameters”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´K‡hj�ubjh)�”}”(hhh]”(jm)�”}”(hŒ``struct bio *bio`` The bio. ”h]”(js)�”}”(hŒ``struct bio *bio``”h]”jy)�”}”(hj¦h]”hŒstruct bio *bio”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´K„hj ubj�)�”}”(hhh]”hÌ)�”}”(hŒThe bio.”h]”hŒThe bio.”…”�”}”(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&]”uh1jlh³j»h´K„hj�ubjm)�”}”(hŒ>``struct buffer_head **bhp`` Where to return the buffer_head. ”h]”(js)�”}”(hŒ``struct buffer_head **bhp``”h]”jy)�”}”(hjßh]”hŒstruct buffer_head **bhp”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´K…hjÙubj�)�”}”(hhh]”hÌ)�”}”(hŒ Where to return the buffer_head.”h]”hŒ Where to return the buffer_head.”…”�”}”(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&]”uh1jlh³jôh´K…hj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jghj�ubhÌ)�”}”(hŒ**Description**”h]”jR)�”}”(hjh]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´K‡hj�ubhÌ)�”}”(hŒ¯Call this in your bio_end_io handler to retrieve the buffer_head submitted in bh_submit(). If you did not call bh_submit(), do not call this function; it will return garbage.”h]”hŒ¯Call this in your bio_end_io handler to retrieve the buffer_head submitted in bh_submit(). If you did not call bh_submit(), do not call this function; it will return garbage.”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´K†hj�ubhÌ)�”}”(hŒIThis function consumes the bio refcount which will probably free the bio.”h]”hŒIThis function consumes the bio refcount which will probably free the bio.”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´KŠhj�ubhÌ)�”}”(hŒ **Return**”h]”jR)�”}”(hjPh]”hŒReturn”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjNubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´K�hj�ubhÌ)�”}”(hŒTrue if the I/O succeeded.”h]”hŒTrue if the I/O succeeded.”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´KŽhj�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jGhhÛh²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒ!end_buffer_read_sync (C function)”Œc.end_buffer_read_sync”hNt”auh1hìhhÛh²hh³Nh´Nubhþ)�”}”(hhh]”(j)�”}”(hŒ@void end_buffer_read_sync (struct buffer_head *bh, int uptodate)”h]”j )�”}”(hŒ?void end_buffer_read_sync(struct buffer_head *bh, int uptodate)”h]”(j)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‘h²hh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´KŸubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj‘h²hh³j£h´KŸubjC)�”}”(hŒend_buffer_read_sync”h]”jI)�”}”(hŒend_buffer_read_sync”h]”hŒend_buffer_read_sync”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj²ubah}”(h]”h ]”(j\j]eh"]”h$]”h&]”jajbuh1jBhj‘h²hh³j£h´KŸubjd)�”}”(hŒ&(struct buffer_head *bh, int uptodate)”h]”(jj)�”}”(hŒstruct buffer_head *bh”h]”(jp)�”}”(hj�h]”hŒstruct”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjÎubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjÎubh)�”}”(hhh]”jI)�”}”(hŒ buffer_head”h]”hŒ buffer_head”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjíubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÂŒreftype”jÄŒ reftarget”jòŒmodname”NŒ classname”NjÈjË)�”}”jÎ]”jÑ)�”}”jÄj¸sbŒc.end_buffer_read_sync”†”asbuh1hhjÎubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjÎubj2)�”}”(hj5h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÎubjI)�”}”(hŒbh”h]”hŒbh”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÎubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihjÊubjj)�”}”(hŒ int uptodate”h]”(j)�”}”(hŒint”h]”hŒint”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj@ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj@ubjI)�”}”(hŒuptodate”h]”hŒuptodate”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihjÊubeh}”(h]”h ]”h"]”h$]”h&]”jajbuh1jchj‘h²hh³j£h´KŸubeh}”(h]”h ]”h"]”h$]”h&]”jajbjˆuh1jjjhj�h²hh³j£h´KŸubah}”(h]”jˆah ]”(jjeh"]”h$]”h&]”jˆj)jhuh1jh³j£h´KŸhjŠh²hubj!)�”}”(hhh]”hÌ)�”}”(hŒHandle buffer reads finishing”h]”hŒHandle buffer reads finishing”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´KŸhj‡h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjŠh²hh³j£h´KŸubeh}”(h]”h ]”(jÂŒfunction”eh"]”h$]”h&]”jAjÂjBj¢jCj¢jD‰jE‰jF‰uh1hýh²hhhÛh³Nh´NubjH)�”}”(hŒî**Parameters** ``struct buffer_head *bh`` The buffer. ``int uptodate`` True if the read was successful. **Description** If a buffer is read through a mechanism that isn't bh_submit(), you can call this function to finish the read.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”jR)�”}”(hj¬h]”hŒ Parameters”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjªubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´K£hj¦ubjh)�”}”(hhh]”(jm)�”}”(hŒ'``struct buffer_head *bh`` The buffer. ”h]”(js)�”}”(hŒ``struct buffer_head *bh``”h]”jy)�”}”(hjËh]”hŒstruct buffer_head *bh”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´K hjÅubj�)�”}”(hhh]”hÌ)�”}”(hŒ The buffer.”h]”hŒ The buffer.”…”�”}”(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&]”uh1jlh³jàh´K hjÂubjm)�”}”(hŒ2``int uptodate`` True if the read was successful. ”h]”(js)�”}”(hŒ``int uptodate``”h]”jy)�”}”(hjh]”hŒ int uptodate”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´K¡hjþubj�)�”}”(hhh]”hÌ)�”}”(hŒ True if the read was successful.”h]”hŒ True if the read was successful.”…”�”}”(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&]”uh1jlh³jh´K¡hjÂubeh}”(h]”h ]”h"]”h$]”h&]”uh1jghj¦ubhÌ)�”}”(hŒ**Description**”h]”jR)�”}”(hj?h]”hŒ Description”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´K£hj¦ubhÌ)�”}”(hŒnIf a buffer is read through a mechanism that isn't bh_submit(), you can call this function to finish the read.”h]”hŒpIf a buffer is read through a mechanism that isn’t bh_submit(), you can call this function to finish the read.”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´K¢hj¦ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jGhhÛh²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒbh_end_read (C function)”Œ c.bh_end_read”hNt”auh1hìhhÛh²hh³Nh´Nubhþ)�”}”(hhh]”(j)�”}”(hŒ"void bh_end_read (struct bio *bio)”h]”j )�”}”(hŒ!void bh_end_read(struct bio *bio)”h]”(j)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj€h²hh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´K³ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj€h²hh³j’h´K³ubjC)�”}”(hŒ bh_end_read”h]”jI)�”}”(hŒ bh_end_read”h]”hŒ bh_end_read”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj¡ubah}”(h]”h ]”(j\j]eh"]”h$]”h&]”jajbuh1jBhj€h²hh³j’h´K³ubjd)�”}”(hŒ(struct bio *bio)”h]”jj)�”}”(hŒstruct bio *bio”h]”(jp)�”}”(hj�h]”hŒstruct”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj½ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj½ubh)�”}”(hhh]”jI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÜubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÂŒreftype”jÄŒ reftarget”jáŒmodname”NŒ classname”NjÈjË)�”}”jÎ]”jÑ)�”}”jÄj§sbŒ c.bh_end_read”†”asbuh1hhj½ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj½ubj2)�”}”(hj5h]”hŒ*”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj½ubjI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj½ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihj¹ubah}”(h]”h ]”h"]”h$]”h&]”jajbuh1jchj€h²hh³j’h´K³ubeh}”(h]”h ]”h"]”h$]”h&]”jajbjˆuh1jjjhj|h²hh³j’h´K³ubah}”(h]”jwah ]”(jjeh"]”h$]”h&]”jˆj)jhuh1jh³j’h´K³hjyh²hubj!)�”}”(hhh]”hÌ)�”}”(hŒI/O end handler for reads”h]”hŒI/O end handler for reads”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´K³hjAh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjyh²hh³j’h´K³ubeh}”(h]”h ]”(jÂŒfunction”eh"]”h$]”h&]”jAjÂjBj\jCj\jD‰jE‰jF‰uh1hýh²hhhÛh³Nh´NubjH)�”}”(hŒÇ**Parameters** ``struct bio *bio`` The bio being completed. **Description** Pass this function to bh_submit() if you're reading into the buffer, unless you need your own special I/O end handler.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”jR)�”}”(hjfh]”hŒ Parameters”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjdubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´K·hj`ubjh)�”}”(hhh]”jm)�”}”(hŒ-``struct bio *bio`` The bio being completed. ”h]”(js)�”}”(hŒ``struct bio *bio``”h]”jy)�”}”(hj…h]”hŒstruct bio *bio”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´K´hjubj�)�”}”(hhh]”hÌ)�”}”(hŒThe bio being completed.”h]”hŒThe bio being completed.”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jšh´K´hj›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jŽhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jlh³jšh´K´hj|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jghj`ubhÌ)�”}”(hŒ**Description**”h]”jR)�”}”(hjÀh]”hŒ Description”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´K¶hj`ubhÌ)�”}”(hŒvPass this function to bh_submit() if you're reading into the buffer, unless you need your own special I/O end handler.”h]”hŒxPass this function to bh_submit() if you’re reading into the buffer, unless you need your own special I/O end handler.”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Kµhj`ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jGhhÛh²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒbh_end_write (C function)”Œc.bh_end_write”hNt”auh1hìhhÛh²hh³Nh´Nubhþ)�”}”(hhh]”(j)�”}”(hŒ#void bh_end_write (struct bio *bio)”h]”j )�”}”(hŒ"void bh_end_write(struct bio *bio)”h]”(j)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjh²hh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´KÂubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjh²hh³jh´KÂubjC)�”}”(hŒ bh_end_write”h]”jI)�”}”(hŒ bh_end_write”h]”hŒ bh_end_write”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj"ubah}”(h]”h ]”(j\j]eh"]”h$]”h&]”jajbuh1jBhjh²hh³jh´KÂubjd)�”}”(hŒ(struct bio *bio)”h]”jj)�”}”(hŒstruct bio *bio”h]”(jp)�”}”(hj�h]”hŒstruct”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj>ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj>ubh)�”}”(hhh]”jI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj]ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÂŒreftype”jÄŒ reftarget”jbŒmodname”NŒ classname”NjÈjË)�”}”jÎ]”jÑ)�”}”jÄj(sbŒc.bh_end_write”†”asbuh1hhj>ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj>ubj2)�”}”(hj5h]”hŒ*”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj>ubjI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj>ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihj:ubah}”(h]”h ]”h"]”h$]”h&]”jajbuh1jchjh²hh³jh´KÂubeh}”(h]”h ]”h"]”h$]”h&]”jajbjˆuh1jjjhjýh²hh³jh´KÂubah}”(h]”jøah ]”(jjeh"]”h$]”h&]”jˆj)jhuh1jh³jh´KÂhjúh²hubj!)�”}”(hhh]”hÌ)�”}”(hŒI/O end handler for writes”h]”hŒI/O end handler for writes”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´KÂhjÂh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjúh²hh³jh´KÂubeh}”(h]”h ]”(jÂŒfunction”eh"]”h$]”h&]”jAjÂjBjÝjCjÝjD‰jE‰jF‰uh1hýh²hhhÛh³Nh´NubjH)�”}”(hŒÇ**Parameters** ``struct bio *bio`` The bio being completed. **Description** Pass this function to bh_submit() if you're writing from the buffer, unless you need your own special I/O end handler.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”jR)�”}”(hjçh]”hŒ Parameters”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjåubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´KÆhjáubjh)�”}”(hhh]”jm)�”}”(hŒ-``struct bio *bio`` The bio being completed. ”h]”(js)�”}”(hŒ``struct bio *bio``”h]”jy)�”}”(hjh]”hŒstruct bio *bio”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´KÃhjubj�)�”}”(hhh]”hÌ)�”}”(hŒThe bio being completed.”h]”hŒThe bio being completed.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jh´KÃhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jŽhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jlh³jh´KÃhjýubah}”(h]”h ]”h"]”h$]”h&]”uh1jghjáubhÌ)�”}”(hŒ**Description**”h]”jR)�”}”(hjAh]”hŒ Description”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´KÅhjáubhÌ)�”}”(hŒvPass this function to bh_submit() if you're writing from the buffer, unless you need your own special I/O end handler.”h]”hŒxPass this function to bh_submit() if you’re writing from the buffer, unless you need your own special I/O end handler.”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´KÄhjáubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jGhhÛh²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒbh_end_async_write (C function)”Œc.bh_end_async_write”hNt”auh1hìhhÛh²hh³Nh´Nubhþ)�”}”(hhh]”(j)�”}”(hŒ)void bh_end_async_write (struct bio *bio)”h]”j )�”}”(hŒ(void bh_end_async_write(struct bio *bio)”h]”(j)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‚h²hh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´M…ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj‚h²hh³j”h´M…ubjC)�”}”(hŒbh_end_async_write”h]”jI)�”}”(hŒbh_end_async_write”h]”hŒbh_end_async_write”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj£ubah}”(h]”h ]”(j\j]eh"]”h$]”h&]”jajbuh1jBhj‚h²hh³j”h´M…ubjd)�”}”(hŒ(struct bio *bio)”h]”jj)�”}”(hŒstruct bio *bio”h]”(jp)�”}”(hj�h]”hŒstruct”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj¿ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj¿ubh)�”}”(hhh]”jI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÞubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÂŒreftype”jÄŒ reftarget”jãŒmodname”NŒ classname”NjÈjË)�”}”jÎ]”jÑ)�”}”jÄj©sbŒc.bh_end_async_write”†”asbuh1hhj¿ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj¿ubj2)�”}”(hj5h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¿ubjI)�”}”(hŒbio”h]”hŒbio”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj¿ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihj»ubah}”(h]”h ]”h"]”h$]”h&]”jajbuh1jchj‚h²hh³j”h´M…ubeh}”(h]”h ]”h"]”h$]”h&]”jajbjˆuh1jjjhj~h²hh³j”h´M…ubah}”(h]”jyah ]”(jjeh"]”h$]”h&]”jˆj)jhuh1jh³j”h´M…hj{h²hubj!)�”}”(hhh]”hÌ)�”}”(hŒ&I/O end handler for async folio writes”h]”hŒ&I/O end handler for async folio writes”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´M…hjCh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj{h²hh³j”h´M…ubeh}”(h]”h ]”(jÂŒfunction”eh"]”h$]”h&]”jAjÂjBj^jCj^jD‰jE‰jF‰uh1hýh²hhhÛh³Nh´NubjH)�”}”(hX%**Parameters** ``struct bio *bio`` The bio being completed. **Description** Pass this function to bh_submit() if you're doing the equivalent of block_write_full_folio(). That is, the folio is unlocked, and will have its writeback flag cleared once all async write buffers have completed.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”jR)�”}”(hjhh]”hŒ Parameters”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjfubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´M‰hjbubjh)�”}”(hhh]”jm)�”}”(hŒ-``struct bio *bio`` The bio being completed. ”h]”(js)�”}”(hŒ``struct bio *bio``”h]”jy)�”}”(hj‡h]”hŒstruct bio *bio”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´M†hj�ubj�)�”}”(hhh]”hÌ)�”}”(hŒThe bio being completed.”h]”hŒThe bio being completed.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jœh´M†hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jŽhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jlh³jœh´M†hj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jghjbubhÌ)�”}”(hŒ**Description**”h]”jR)�”}”(hjÂh]”hŒ Description”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´MˆhjbubhÌ)�”}”(hŒÔPass this function to bh_submit() if you're doing the equivalent of block_write_full_folio(). That is, the folio is unlocked, and will have its writeback flag cleared once all async write buffers have completed.”h]”hŒÖPass this function to bh_submit() if you’re doing the equivalent of block_write_full_folio(). That is, the folio is unlocked, and will have its writeback flag cleared once all async write buffers have completed.”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´M‡hjbubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jGhhÛh²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒmmb_sync (C function)”Œ c.mmb_sync”hNt”auh1hìhhÛh²hh³Nh´Nubhþ)�”}”(hhh]”(j)�”}”(hŒ/int mmb_sync (struct mapping_metadata_bhs *mmb)”h]”j )�”}”(hŒ.int mmb_sync(struct mapping_metadata_bhs *mmb)”h]”(j)�”}”(hŒint”h]”hŒint”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjh²hh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Múubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjh²hh³jh´MúubjC)�”}”(hŒmmb_sync”h]”jI)�”}”(hŒmmb_sync”h]”hŒmmb_sync”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj$ubah}”(h]”h ]”(j\j]eh"]”h$]”h&]”jajbuh1jBhjh²hh³jh´Múubjd)�”}”(hŒ"(struct mapping_metadata_bhs *mmb)”h]”jj)�”}”(hŒ struct mapping_metadata_bhs *mmb”h]”(jp)�”}”(hj�h]”hŒstruct”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj@ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj@ubh)�”}”(hhh]”jI)�”}”(hŒmapping_metadata_bhs”h]”hŒmapping_metadata_bhs”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj_ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÂŒreftype”jÄŒ reftarget”jdŒmodname”NŒ classname”NjÈjË)�”}”jÎ]”jÑ)�”}”jÄj*sbŒ c.mmb_sync”†”asbuh1hhj@ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj@ubj2)�”}”(hj5h]”hŒ*”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj@ubjI)�”}”(hŒmmb”h]”hŒmmb”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihj<ubah}”(h]”h ]”h"]”h$]”h&]”jajbuh1jchjh²hh³jh´Múubeh}”(h]”h ]”h"]”h$]”h&]”jajbjˆuh1jjjhjÿh²hh³jh´Múubah}”(h]”júah ]”(jjeh"]”h$]”h&]”jˆj)jhuh1jh³jh´Múhjüh²hubj!)�”}”(hhh]”hÌ)�”}”(hŒ+write out & wait upon all buffers in a list”h]”hŒ+write out & wait upon all buffers in a list”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´MúhjÄh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjüh²hh³jh´Múubeh}”(h]”h ]”(jÂŒfunction”eh"]”h$]”h&]”jAjÂjBjßjCjßjD‰jE‰jF‰uh1hýh²hhhÛh³Nh´NubjH)�”}”(hX–**Parameters** ``struct mapping_metadata_bhs *mmb`` the list of buffers to write **Description** Starts I/O against the buffers in the given list and waits upon that I/O. Basically, this is a convenience function for fsync(). **mmb** is for a file or directory which needs those buffers to be written for a successful fsync(). We have conflicting pressures: we want to make sure that all initially dirty buffers get waited on, but that any subsequently dirtied buffers don't. After all, we don't want fsync to last forever if somebody is actively writing to the file. Do this in two main stages: first we copy dirty buffers to a temporary inode list, queueing the writes as we go. Then we clean up, waiting for those writes to complete. mmb_mark_buffer_dirty() doesn't touch b_assoc_buffers list if b_mmb is set so we are sure the buffer stays on our list until IO completes (at which point it can be reaped).”h]”(hÌ)�”}”(hŒ**Parameters**”h]”jR)�”}”(hjéh]”hŒ Parameters”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjçubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Mþhjãubjh)�”}”(hhh]”jm)�”}”(hŒB``struct mapping_metadata_bhs *mmb`` the list of buffers to write ”h]”(js)�”}”(hŒ$``struct mapping_metadata_bhs *mmb``”h]”jy)�”}”(hjh]”hŒ struct mapping_metadata_bhs *mmb”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Mûhjubj�)�”}”(hhh]”hÌ)�”}”(hŒthe list of buffers to write”h]”hŒthe list of buffers to write”…”�”}”(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&]”uh1jlh³jh´Mûhjÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jghjãubhÌ)�”}”(hŒ**Description**”h]”jR)�”}”(hjCh]”hŒ Description”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjAubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´MýhjãubhÌ)�”}”(hŒæStarts I/O against the buffers in the given list and waits upon that I/O. Basically, this is a convenience function for fsync(). **mmb** is for a file or directory which needs those buffers to be written for a successful fsync().”h]”(hŒ‚Starts I/O against the buffers in the given list and waits upon that I/O. Basically, this is a convenience function for fsync(). ”…”�”}”(hjYh²hh³Nh´NubjR)�”}”(hŒ**mmb**”h]”hŒmmb”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjYubhŒ] is for a file or directory which needs those buffers to be written for a successful fsync().”…”�”}”(hjYh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´MühjãubhÌ)�”}”(hŒñWe have conflicting pressures: we want to make sure that all initially dirty buffers get waited on, but that any subsequently dirtied buffers don't. After all, we don't want fsync to last forever if somebody is actively writing to the file.”h]”hŒõWe have conflicting pressures: we want to make sure that all initially dirty buffers get waited on, but that any subsequently dirtied buffers don’t. After all, we don’t want fsync to last forever if somebody is actively writing to the file.”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´MhjãubhÌ)�”}”(hXUDo this in two main stages: first we copy dirty buffers to a temporary inode list, queueing the writes as we go. Then we clean up, waiting for those writes to complete. mmb_mark_buffer_dirty() doesn't touch b_assoc_buffers list if b_mmb is set so we are sure the buffer stays on our list until IO completes (at which point it can be reaped).”h]”hXWDo this in two main stages: first we copy dirty buffers to a temporary inode list, queueing the writes as we go. Then we clean up, waiting for those writes to complete. mmb_mark_buffer_dirty() doesn’t touch b_assoc_buffers list if b_mmb is set so we are sure the buffer stays on our list until IO completes (at which point it can be reaped).”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Mhjãubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jGhhÛh²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒ"mmb_mark_buffer_dirty (C function)”Œc.mmb_mark_buffer_dirty”hNt”auh1hìhhÛh²hh³Nh´Nubhþ)�”}”(hhh]”(j)�”}”(hŒUvoid mmb_mark_buffer_dirty (struct buffer_head *bh, struct mapping_metadata_bhs *mmb)”h]”j )�”}”(hŒTvoid mmb_mark_buffer_dirty(struct buffer_head *bh, struct mapping_metadata_bhs *mmb)”h]”(j)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj´h²hh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Mlubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj´h²hh³jÆh´MlubjC)�”}”(hŒmmb_mark_buffer_dirty”h]”jI)�”}”(hŒmmb_mark_buffer_dirty”h]”hŒmmb_mark_buffer_dirty”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÕubah}”(h]”h ]”(j\j]eh"]”h$]”h&]”jajbuh1jBhj´h²hh³jÆh´Mlubjd)�”}”(hŒ:(struct buffer_head *bh, struct mapping_metadata_bhs *mmb)”h]”(jj)�”}”(hŒstruct buffer_head *bh”h]”(jp)�”}”(hj�h]”hŒstruct”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjñubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjñubh)�”}”(hhh]”jI)�”}”(hŒ buffer_head”h]”hŒ buffer_head”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÂŒreftype”jÄŒ reftarget”j Œmodname”NŒ classname”NjÈjË)�”}”jÎ]”jÑ)�”}”jÄjÛsbŒc.mmb_mark_buffer_dirty”†”asbuh1hhjñubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3 h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjñubj2)�”}”(hj5h]”hŒ*”…”�”}”(hjA h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjñubjI)�”}”(hŒbh”h]”hŒbh”…”�”}”(hjN h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjñubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihjíubjj)�”}”(hŒ struct mapping_metadata_bhs *mmb”h]”(jp)�”}”(hj�h]”hŒstruct”…”�”}”(hjg h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjc ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjt h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjc ubh)�”}”(hhh]”jI)�”}”(hŒmapping_metadata_bhs”h]”hŒmapping_metadata_bhs”…”�”}”(hj… h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj‚ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÂŒreftype”jÄŒ reftarget”j‡ Œmodname”NŒ classname”NjÈjË)�”}”jÎ]”j/ Œc.mmb_mark_buffer_dirty”†”asbuh1hhjc ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£ h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjc ubj2)�”}”(hj5h]”hŒ*”…”�”}”(hj± h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjc ubjI)�”}”(hŒmmb”h]”hŒmmb”…”�”}”(hj¾ h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjc ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihjíubeh}”(h]”h ]”h"]”h$]”h&]”jajbuh1jchj´h²hh³jÆh´Mlubeh}”(h]”h ]”h"]”h$]”h&]”jajbjˆuh1jjjhj°h²hh³jÆh´Mlubah}”(h]”j«ah ]”(jjeh"]”h$]”h&]”jˆj)jhuh1jh³jÆh´Mlhj­h²hubj!)�”}”(hhh]”hÌ)�”}”(hŒMark a metadata buffer dirty.”h]”hŒMark a metadata buffer dirty.”…”�”}”(hjè h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Mlhjå h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj­h²hh³jÆh´Mlubeh}”(h]”h ]”(jÂŒfunction”eh"]”h$]”h&]”jAjÂjBj!jCj!jD‰jE‰jF‰uh1hýh²hhhÛh³Nh´NubjH)�”}”(hŒ÷**Parameters** ``struct buffer_head *bh`` The buffer to mark dirty. ``struct mapping_metadata_bhs *mmb`` The list of buffers to add the buffer to. **Description** Mark the buffer dirty and add it to the list if it is not already on a list.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”jR)�”}”(hj !h]”hŒ Parameters”…”�”}”(hj !h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Mphj!ubjh)�”}”(hhh]”(jm)�”}”(hŒ5``struct buffer_head *bh`` The buffer to mark dirty. ”h]”(js)�”}”(hŒ``struct buffer_head *bh``”h]”jy)�”}”(hj)!h]”hŒstruct buffer_head *bh”…”�”}”(hj+!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj'!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Mmhj#!ubj�)�”}”(hhh]”hÌ)�”}”(hŒThe buffer to mark dirty.”h]”hŒThe buffer to mark dirty.”…”�”}”(hjB!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&]”uh1jlh³j>!h´Mmhj !ubjm)�”}”(hŒO``struct mapping_metadata_bhs *mmb`` The list of buffers to add the buffer to. ”h]”(js)�”}”(hŒ$``struct mapping_metadata_bhs *mmb``”h]”jy)�”}”(hjb!h]”hŒ struct mapping_metadata_bhs *mmb”…”�”}”(hjd!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj`!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Mnhj\!ubj�)�”}”(hhh]”hÌ)�”}”(hŒ)The list of buffers to add the buffer to.”h]”hŒ)The list of buffers to add the buffer to.”…”�”}”(hj{!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jw!h´Mnhjx!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jŽhj\!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jlh³jw!h´Mnhj !ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jghj!ubhÌ)�”}”(hŒ**Description**”h]”jR)�”}”(hj�!h]”hŒ Description”…”�”}”(hjŸ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhj›!ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Mphj!ubhÌ)�”}”(hŒLMark the buffer dirty and add it to the list if it is not already on a list.”h]”hŒLMark the buffer dirty and add it to the list if it is not already on a list.”…”�”}”(hj³!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Mohj!ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jGhhÛh²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒblock_dirty_folio (C function)”Œc.block_dirty_folio”hNt”auh1hìhhÛh²hh³Nh´Nubhþ)�”}”(hhh]”(j)�”}”(hŒKbool block_dirty_folio (struct address_space *mapping, struct folio *folio)”h]”j )�”}”(hŒJbool block_dirty_folio(struct address_space *mapping, struct folio *folio)”h]”(j)�”}”(hj*h]”hŒbool”…”�”}”(hjâ!h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÞ!h²hh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Mˆubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjð!h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjÞ!h²hh³jï!h´MˆubjC)�”}”(hŒblock_dirty_folio”h]”jI)�”}”(hŒblock_dirty_folio”h]”hŒblock_dirty_folio”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjþ!ubah}”(h]”h ]”(j\j]eh"]”h$]”h&]”jajbuh1jBhjÞ!h²hh³jï!h´Mˆubjd)�”}”(hŒ4(struct address_space *mapping, struct folio *folio)”h]”(jj)�”}”(hŒstruct address_space *mapping”h]”(jp)�”}”(hj�h]”hŒstruct”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj"ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+"h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj"ubh)�”}”(hhh]”jI)�”}”(hŒ address_space”h]”hŒ address_space”…”�”}”(hj<"h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj9"ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÂŒreftype”jÄŒ reftarget”j>"Œmodname”NŒ classname”NjÈjË)�”}”jÎ]”jÑ)�”}”jÄj"sbŒc.block_dirty_folio”†”asbuh1hhj"ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\"h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj"ubj2)�”}”(hj5h]”hŒ*”…”�”}”(hjj"h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj"ubjI)�”}”(hŒmapping”h]”hŒmapping”…”�”}”(hjw"h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj"ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihj"ubjj)�”}”(hŒstruct folio *folio”h]”(jp)�”}”(hj�h]”hŒstruct”…”�”}”(hj�"h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjŒ"ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�"h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjŒ"ubh)�”}”(hhh]”jI)�”}”(hŒfolio”h]”hŒfolio”…”�”}”(hj®"h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj«"ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÂŒreftype”jÄŒ reftarget”j°"Œmodname”NŒ classname”NjÈjË)�”}”jÎ]”jX"Œc.block_dirty_folio”†”asbuh1hhjŒ"ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌ"h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjŒ"ubj2)�”}”(hj5h]”hŒ*”…”�”}”(hjÚ"h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjŒ"ubjI)�”}”(hŒfolio”h]”hŒfolio”…”�”}”(hjç"h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjŒ"ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihj"ubeh}”(h]”h ]”h"]”h$]”h&]”jajbuh1jchjÞ!h²hh³jï!h´Mˆubeh}”(h]”h ]”h"]”h$]”h&]”jajbjˆuh1jjjhjÚ!h²hh³jï!h´Mˆubah}”(h]”jÕ!ah ]”(jjeh"]”h$]”h&]”jˆj)jhuh1jh³jï!h´Mˆhj×!h²hubj!)�”}”(hhh]”hÌ)�”}”(hŒMark a folio as dirty.”h]”hŒMark a folio as dirty.”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Mˆhj#h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj×!h²hh³jï!h´Mˆubeh}”(h]”h ]”(jÂŒfunction”eh"]”h$]”h&]”jAjÂjBj)#jCj)#jD‰jE‰jF‰uh1hýh²hhhÛh³Nh´NubjH)�”}”(hXÐ**Parameters** ``struct address_space *mapping`` The address space containing this folio. ``struct folio *folio`` The folio to mark dirty. **Description** Filesystems which use buffer_heads can use this function as their ->dirty_folio implementation. Some filesystems need to do a little work before calling this function. Filesystems which do not use buffer_heads should call filemap_dirty_folio() instead. If the folio has buffers, the uptodate buffers are set dirty, to preserve dirty-state coherency between the folio and the buffers. Buffers added to a dirty folio are created dirty. The buffers are dirtied before the folio is dirtied. There's a small race window in which writeback may see the folio cleanness but not the buffer dirtiness. That's fine. If this code were to set the folio dirty before the buffers, writeback could clear the folio dirty flag, see a bunch of clean buffers and we'd end up with dirty buffers/clean folio on the dirty folio list. We use i_private_lock to lock against try_to_free_buffers() while using the folio's buffer list. This also prevents clean buffers being added to the folio after it was set dirty. **Context** May only be called from process context. Does not sleep. Caller must ensure that **folio** cannot be truncated during this call, typically by holding the folio lock or having a page in the folio mapped and holding the page table lock. **Return** True if the folio was dirtied; false if it was already dirtied.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”jR)�”}”(hj3#h]”hŒ Parameters”…”�”}”(hj5#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhj1#ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´MŒhj-#ubjh)�”}”(hhh]”(jm)�”}”(hŒK``struct address_space *mapping`` The address space containing this folio. ”h]”(js)�”}”(hŒ!``struct address_space *mapping``”h]”jy)�”}”(hjR#h]”hŒstruct address_space *mapping”…”�”}”(hjT#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjP#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´M‰hjL#ubj�)�”}”(hhh]”hÌ)�”}”(hŒ(The address space containing this folio.”h]”hŒ(The address space containing this folio.”…”�”}”(hjk#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jg#h´M‰hjh#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jŽhjL#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jlh³jg#h´M‰hjI#ubjm)�”}”(hŒ1``struct folio *folio`` The folio to mark dirty. ”h]”(js)�”}”(hŒ``struct folio *folio``”h]”jy)�”}”(hj‹#h]”hŒstruct folio *folio”…”�”}”(hj�#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj‰#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´MŠhj…#ubj�)�”}”(hhh]”hÌ)�”}”(hŒThe folio to mark dirty.”h]”hŒThe folio to mark dirty.”…”�”}”(hj¤#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j #h´MŠhj¡#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jŽhj…#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jlh³j #h´MŠhjI#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jghj-#ubhÌ)�”}”(hŒ**Description**”h]”jR)�”}”(hjÆ#h]”hŒ Description”…”�”}”(hjÈ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjÄ#ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´MŒhj-#ubhÌ)�”}”(hŒþFilesystems which use buffer_heads can use this function as their ->dirty_folio implementation. Some filesystems need to do a little work before calling this function. Filesystems which do not use buffer_heads should call filemap_dirty_folio() instead.”h]”hŒþFilesystems which use buffer_heads can use this function as their ->dirty_folio implementation. Some filesystems need to do a little work before calling this function. Filesystems which do not use buffer_heads should call filemap_dirty_folio() instead.”…”�”}”(hjÜ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´M‹hj-#ubhÌ)�”}”(hŒ´If the folio has buffers, the uptodate buffers are set dirty, to preserve dirty-state coherency between the folio and the buffers. Buffers added to a dirty folio are created dirty.”h]”hŒ´If the folio has buffers, the uptodate buffers are set dirty, to preserve dirty-state coherency between the folio and the buffers. Buffers added to a dirty folio are created dirty.”…”�”}”(hjë#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´M�hj-#ubhÌ)�”}”(hX{The buffers are dirtied before the folio is dirtied. There's a small race window in which writeback may see the folio cleanness but not the buffer dirtiness. That's fine. If this code were to set the folio dirty before the buffers, writeback could clear the folio dirty flag, see a bunch of clean buffers and we'd end up with dirty buffers/clean folio on the dirty folio list.”h]”hX�The buffers are dirtied before the folio is dirtied. There’s a small race window in which writeback may see the folio cleanness but not the buffer dirtiness. That’s fine. If this code were to set the folio dirty before the buffers, writeback could clear the folio dirty flag, see a bunch of clean buffers and we’d end up with dirty buffers/clean folio on the dirty folio list.”…”�”}”(hjú#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´M”hj-#ubhÌ)�”}”(hŒ³We use i_private_lock to lock against try_to_free_buffers() while using the folio's buffer list. This also prevents clean buffers being added to the folio after it was set dirty.”h]”hŒµWe use i_private_lock to lock against try_to_free_buffers() while using the folio’s buffer list. This also prevents clean buffers being added to the folio after it was set dirty.”…”�”}”(hj $h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´M›hj-#ubhÌ)�”}”(hŒ **Context**”h]”jR)�”}”(hj$h]”hŒContext”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´MŸhj-#ubhÌ)�”}”(hŒëMay only be called from process context. Does not sleep. Caller must ensure that **folio** cannot be truncated during this call, typically by holding the folio lock or having a page in the folio mapped and holding the page table lock.”h]”(hŒRMay only be called from process context. Does not sleep. Caller must ensure that ”…”�”}”(hj0$h²hh³Nh´NubjR)�”}”(hŒ **folio**”h]”hŒfolio”…”�”}”(hj8$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhj0$ubhŒ� cannot be truncated during this call, typically by holding the folio lock or having a page in the folio mapped and holding the page table lock.”…”�”}”(hj0$h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´M hj-#ubhÌ)�”}”(hŒ **Return**”h]”jR)�”}”(hjS$h]”hŒReturn”…”�”}”(hjU$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjQ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´M¥hj-#ubhÌ)�”}”(hŒ?True if the folio was dirtied; false if it was already dirtied.”h]”hŒ?True if the folio was dirtied; false if it was already dirtied.”…”�”}”(hji$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´M¥hj-#ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jGhhÛh²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒmark_buffer_dirty (C function)”Œc.mark_buffer_dirty”hNt”auh1hìhhÛh²hh³Nh´Nubhþ)�”}”(hhh]”(j)�”}”(hŒ/void mark_buffer_dirty (struct buffer_head *bh)”h]”j )�”}”(hŒ.void mark_buffer_dirty(struct buffer_head *bh)”h]”(j)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj˜$h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj”$h²hh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´MÐubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§$h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj”$h²hh³j¦$h´MÐubjC)�”}”(hŒmark_buffer_dirty”h]”jI)�”}”(hŒmark_buffer_dirty”h]”hŒmark_buffer_dirty”…”�”}”(hj¹$h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjµ$ubah}”(h]”h ]”(j\j]eh"]”h$]”h&]”jajbuh1jBhj”$h²hh³j¦$h´MÐubjd)�”}”(hŒ(struct buffer_head *bh)”h]”jj)�”}”(hŒstruct buffer_head *bh”h]”(jp)�”}”(hj�h]”hŒstruct”…”�”}”(hjÕ$h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjÑ$ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâ$h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjÑ$ubh)�”}”(hhh]”jI)�”}”(hŒ buffer_head”h]”hŒ buffer_head”…”�”}”(hjó$h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjð$ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÂŒreftype”jÄŒ reftarget”jõ$Œmodname”NŒ classname”NjÈjË)�”}”jÎ]”jÑ)�”}”jÄj»$sbŒc.mark_buffer_dirty”†”asbuh1hhjÑ$ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjÑ$ubj2)�”}”(hj5h]”hŒ*”…”�”}”(hj!%h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÑ$ubjI)�”}”(hŒbh”h]”hŒbh”…”�”}”(hj.%h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÑ$ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihjÍ$ubah}”(h]”h ]”h"]”h$]”h&]”jajbuh1jchj”$h²hh³j¦$h´MÐubeh}”(h]”h ]”h"]”h$]”h&]”jajbjˆuh1jjjhj�$h²hh³j¦$h´MÐubah}”(h]”j‹$ah ]”(jjeh"]”h$]”h&]”jˆj)jhuh1jh³j¦$h´MÐhj�$h²hubj!)�”}”(hhh]”hÌ)�”}”(hŒ&mark a buffer_head as needing writeout”h]”hŒ&mark a buffer_head as needing writeout”…”�”}”(hjX%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´MÐhjU%h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj�$h²hh³j¦$h´MÐubeh}”(h]”h ]”(jÂŒfunction”eh"]”h$]”h&]”jAjÂjBjp%jCjp%jD‰jE‰jF‰uh1hýh²hhhÛh³Nh´NubjH)�”}”(hX³**Parameters** ``struct buffer_head *bh`` the buffer_head to mark dirty **Description** mark_buffer_dirty() will set the dirty bit against the buffer, then set its backing folio dirty, then tag the folio as dirty in the page cache and then attach the address_space's inode to its superblock's dirty inode list. mark_buffer_dirty() is atomic. It takes bh->b_folio->mapping->i_private_lock, i_pages lock and mapping->host->i_lock.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”jR)�”}”(hjz%h]”hŒ Parameters”…”�”}”(hj|%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjx%ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´MÔhjt%ubjh)�”}”(hhh]”jm)�”}”(hŒ9``struct buffer_head *bh`` the buffer_head to mark dirty ”h]”(js)�”}”(hŒ``struct buffer_head *bh``”h]”jy)�”}”(hj™%h]”hŒstruct buffer_head *bh”…”�”}”(hj›%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj—%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´MÑhj“%ubj�)�”}”(hhh]”hÌ)�”}”(hŒthe buffer_head to mark dirty”h]”hŒthe buffer_head to mark dirty”…”�”}”(hj²%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j®%h´MÑhj¯%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jŽhj“%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jlh³j®%h´MÑhj�%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jghjt%ubhÌ)�”}”(hŒ**Description**”h]”jR)�”}”(hjÔ%h]”hŒ Description”…”�”}”(hjÖ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjÒ%ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´MÓhjt%ubhÌ)�”}”(hŒÞmark_buffer_dirty() will set the dirty bit against the buffer, then set its backing folio dirty, then tag the folio as dirty in the page cache and then attach the address_space's inode to its superblock's dirty inode list.”h]”hŒâmark_buffer_dirty() will set the dirty bit against the buffer, then set its backing folio dirty, then tag the folio as dirty in the page cache and then attach the address_space’s inode to its superblock’s dirty inode list.”…”�”}”(hjê%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´MÒhjt%ubhÌ)�”}”(hŒvmark_buffer_dirty() is atomic. It takes bh->b_folio->mapping->i_private_lock, i_pages lock and mapping->host->i_lock.”h]”hŒvmark_buffer_dirty() is atomic. It takes bh->b_folio->mapping->i_private_lock, i_pages lock and mapping->host->i_lock.”…”�”}”(hjù%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´M×hjt%ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jGhhÛh²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒ__brelse (C function)”Œ c.__brelse”hNt”auh1hìhhÛh²hh³Nh´Nubhþ)�”}”(hhh]”(j)�”}”(hŒ&void __brelse (struct buffer_head *bh)”h]”j )�”}”(hŒ%void __brelse(struct buffer_head *bh)”h]”(j)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj(&h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj$&h²hh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Mubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7&h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj$&h²hh³j6&h´MubjC)�”}”(hŒ__brelse”h]”jI)�”}”(hŒ__brelse”h]”hŒ__brelse”…”�”}”(hjI&h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjE&ubah}”(h]”h ]”(j\j]eh"]”h$]”h&]”jajbuh1jBhj$&h²hh³j6&h´Mubjd)�”}”(hŒ(struct buffer_head *bh)”h]”jj)�”}”(hŒstruct buffer_head *bh”h]”(jp)�”}”(hj�h]”hŒstruct”…”�”}”(hje&h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johja&ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjr&h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hja&ubh)�”}”(hhh]”jI)�”}”(hŒ buffer_head”h]”hŒ buffer_head”…”�”}”(hjƒ&h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj€&ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÂŒreftype”jÄŒ reftarget”j…&Œmodname”NŒ classname”NjÈjË)�”}”jÎ]”jÑ)�”}”jÄjK&sbŒ c.__brelse”†”asbuh1hhja&ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£&h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hja&ubj2)�”}”(hj5h]”hŒ*”…”�”}”(hj±&h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hja&ubjI)�”}”(hŒbh”h]”hŒbh”…”�”}”(hj¾&h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhja&ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihj]&ubah}”(h]”h ]”h"]”h$]”h&]”jajbuh1jchj$&h²hh³j6&h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jajbjˆuh1jjjhj &h²hh³j6&h´Mubah}”(h]”j&ah ]”(jjeh"]”h$]”h&]”jˆj)jhuh1jh³j6&h´Mhj&h²hubj!)�”}”(hhh]”hÌ)�”}”(hŒRelease a buffer.”h]”hŒRelease a buffer.”…”�”}”(hjè&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Mhjå&h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj&h²hh³j6&h´Mubeh}”(h]”h ]”(jÂŒfunction”eh"]”h$]”h&]”jAjÂjBj'jCj'jD‰jE‰jF‰uh1hýh²hhhÛh³Nh´NubjH)�”}”(hŒ¤**Parameters** ``struct buffer_head *bh`` The buffer to release. **Description** This variant of brelse() can be called if **bh** is guaranteed to not be NULL.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”jR)�”}”(hj 'h]”hŒ Parameters”…”�”}”(hj 'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Mhj'ubjh)�”}”(hhh]”jm)�”}”(hŒ2``struct buffer_head *bh`` The buffer to release. ”h]”(js)�”}”(hŒ``struct buffer_head *bh``”h]”jy)�”}”(hj)'h]”hŒstruct buffer_head *bh”…”�”}”(hj+'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj''ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Mhj#'ubj�)�”}”(hhh]”hÌ)�”}”(hŒThe buffer to release.”h]”hŒThe buffer to release.”…”�”}”(hjB'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&]”uh1jlh³j>'h´Mhj 'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jghj'ubhÌ)�”}”(hŒ**Description**”h]”jR)�”}”(hjd'h]”hŒ Description”…”�”}”(hjf'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjb'ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Mhj'ubhÌ)�”}”(hŒNThis variant of brelse() can be called if **bh** is guaranteed to not be NULL.”h]”(hŒ*This variant of brelse() can be called if ”…”�”}”(hjz'h²hh³Nh´NubjR)�”}”(hŒ**bh**”h]”hŒbh”…”�”}”(hj‚'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjz'ubhŒ is guaranteed to not be NULL.”…”�”}”(hjz'h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Mhj'ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jGhhÛh²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒ__bforget (C function)”Œ c.__bforget”hNt”auh1hìhhÛh²hh³Nh´Nubhþ)�”}”(hhh]”(j)�”}”(hŒ'void __bforget (struct buffer_head *bh)”h]”j )�”}”(hŒ&void __bforget(struct buffer_head *bh)”h]”(j)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj»'h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj·'h²hh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Mubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊ'h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj·'h²hh³jÉ'h´MubjC)�”}”(hŒ __bforget”h]”jI)�”}”(hŒ __bforget”h]”hŒ __bforget”…”�”}”(hjÜ'h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjØ'ubah}”(h]”h ]”(j\j]eh"]”h$]”h&]”jajbuh1jBhj·'h²hh³jÉ'h´Mubjd)�”}”(hŒ(struct buffer_head *bh)”h]”jj)�”}”(hŒstruct buffer_head *bh”h]”(jp)�”}”(hj�h]”hŒstruct”…”�”}”(hjø'h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjô'ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjô'ubh)�”}”(hhh]”jI)�”}”(hŒ buffer_head”h]”hŒ buffer_head”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj(ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÂŒreftype”jÄŒ reftarget”j(Œmodname”NŒ classname”NjÈjË)�”}”jÎ]”jÑ)�”}”jÄjÞ'sbŒ c.__bforget”†”asbuh1hhjô'ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6(h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjô'ubj2)�”}”(hj5h]”hŒ*”…”�”}”(hjD(h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjô'ubjI)�”}”(hŒbh”h]”hŒbh”…”�”}”(hjQ(h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjô'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihjð'ubah}”(h]”h ]”h"]”h$]”h&]”jajbuh1jchj·'h²hh³jÉ'h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jajbjˆuh1jjjhj³'h²hh³jÉ'h´Mubah}”(h]”j®'ah ]”(jjeh"]”h$]”h&]”jˆj)jhuh1jh³jÉ'h´Mhj°'h²hubj!)�”}”(hhh]”hÌ)�”}”(hŒ#Discard any dirty data in a buffer.”h]”hŒ#Discard any dirty data in a buffer.”…”�”}”(hj{(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Mhjx(h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj°'h²hh³jÉ'h´Mubeh}”(h]”h ]”(jÂŒfunction”eh"]”h$]”h&]”jAjÂjBj“(jCj“(jD‰jE‰jF‰uh1hýh²hhhÛh³Nh´NubjH)�”}”(hŒ¤**Parameters** ``struct buffer_head *bh`` The buffer to forget. **Description** This variant of bforget() can be called if **bh** is guaranteed to not be NULL.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”jR)�”}”(hj�(h]”hŒ Parameters”…”�”}”(hjŸ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhj›(ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´M"hj—(ubjh)�”}”(hhh]”jm)�”}”(hŒ1``struct buffer_head *bh`` The buffer to forget. ”h]”(js)�”}”(hŒ``struct buffer_head *bh``”h]”jy)�”}”(hj¼(h]”hŒstruct buffer_head *bh”…”�”}”(hj¾(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjº(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Mhj¶(ubj�)�”}”(hhh]”hÌ)�”}”(hŒThe buffer to forget.”h]”hŒThe buffer to forget.”…”�”}”(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&]”uh1jlh³jÑ(h´Mhj³(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jghj—(ubhÌ)�”}”(hŒ**Description**”h]”jR)�”}”(hj÷(h]”hŒ Description”…”�”}”(hjù(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjõ(ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´M!hj—(ubhÌ)�”}”(hŒOThis variant of bforget() can be called if **bh** is guaranteed to not be NULL.”h]”(hŒ+This variant of bforget() can be called if ”…”�”}”(hj )h²hh³Nh´NubjR)�”}”(hŒ**bh**”h]”hŒbh”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhj )ubhŒ is guaranteed to not be NULL.”…”�”}”(hj )h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´M hj—(ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jGhhÛh²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒbh_submit (C function)”Œ c.bh_submit”hNt”auh1hìhhÛh²hh³Nh´Nubhþ)�”}”(hhh]”(j)�”}”(hŒKvoid bh_submit (struct buffer_head *bh, blk_opf_t opf, bio_end_io_t end_io)”h]”j )�”}”(hŒJvoid bh_submit(struct buffer_head *bh, blk_opf_t opf, bio_end_io_t end_io)”h]”(j)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjN)h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjJ)h²hh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Mtubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj])h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjJ)h²hh³j\)h´MtubjC)�”}”(hŒ bh_submit”h]”jI)�”}”(hŒ bh_submit”h]”hŒ bh_submit”…”�”}”(hjo)h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjk)ubah}”(h]”h ]”(j\j]eh"]”h$]”h&]”jajbuh1jBhjJ)h²hh³j\)h´Mtubjd)�”}”(hŒ<(struct buffer_head *bh, blk_opf_t opf, bio_end_io_t end_io)”•h]”(jj)�”}”(hŒstruct buffer_head *bh”h]”(jp)�”}”(hj�h]”hŒstruct”…”�”}”(hj‹)h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj‡)ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜)h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj‡)ubh)�”}”(hhh]”jI)�”}”(hŒ buffer_head”h]”hŒ buffer_head”…”�”}”(hj©)h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj¦)ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÂŒreftype”jÄŒ reftarget”j«)Œmodname”NŒ classname”NjÈjË)�”}”jÎ]”jÑ)�”}”jÄjq)sbŒ c.bh_submit”†”asbuh1hhj‡)ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉ)h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj‡)ubj2)�”}”(hj5h]”hŒ*”…”�”}”(hj×)h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj‡)ubjI)�”}”(hŒbh”h]”hŒbh”…”�”}”(hjä)h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj‡)ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihjƒ)ubjj)�”}”(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 ]”jUah"]”h$]”h&]”uh1jHhjý)ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÂŒreftype”jÄŒ reftarget”j*Œmodname”NŒ classname”NjÈjË)�”}”jÎ]”jÅ)Œ c.bh_submit”†”asbuh1hhjù)ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjù)ubjI)�”}”(hŒopf”h]”hŒopf”…”�”}”(hj,*h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjù)ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihjƒ)ubjj)�”}”(hŒbio_end_io_t end_io”h]”(h)�”}”(hhh]”jI)�”}”(hŒ bio_end_io_t”h]”hŒ bio_end_io_t”…”�”}”(hjH*h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjE*ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÂŒreftype”jÄŒ reftarget”jJ*Œmodname”NŒ classname”NjÈjË)�”}”jÎ]”jÅ)Œ c.bh_submit”†”asbuh1hhjA*ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjf*h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjA*ubjI)�”}”(hŒend_io”h]”hŒend_io”…”�”}”(hjt*h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjA*ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihjƒ)ubeh}”(h]”h ]”h"]”h$]”h&]”jajbuh1jchjJ)h²hh³j\)h´Mtubeh}”(h]”h ]”h"]”h$]”h&]”jajbjˆuh1jjjhjF)h²hh³j\)h´Mtubah}”(h]”jA)ah ]”(jjeh"]”h$]”h&]”jˆj)jhuh1jh³j\)h´MthjC)h²hubj!)�”}”(hhh]”hÌ)�”}”(hŒStart I/O against a buffer head”h]”hŒStart I/O against a buffer head”…”�”}”(hjž*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Mthj›*h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjC)h²hh³j\)h´Mtubeh}”(h]”h ]”(jÂŒfunction”eh"]”h$]”h&]”jAjÂjBj¶*jCj¶*jD‰jE‰jF‰uh1hýh²hhhÛh³Nh´NubjH)�”}”(hXc**Parameters** ``struct buffer_head *bh`` The buffer head to perform I/O on. ``blk_opf_t opf`` Operation and flags for bio. ``bio_end_io_t end_io`` The routine to call when I/O has completed. **Description** If you need to do I/O on an individual bh (instead of allowing the page cache to do I/O on the folio that it is in), call this function.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”jR)�”}”(hjÀ*h]”hŒ Parameters”…”�”}”(hjÂ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhj¾*ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Mxhjº*ubjh)�”}”(hhh]”(jm)�”}”(hŒ>``struct buffer_head *bh`` The buffer head to perform I/O on. ”h]”(js)�”}”(hŒ``struct buffer_head *bh``”h]”jy)�”}”(hjß*h]”hŒstruct buffer_head *bh”…”�”}”(hjá*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjÝ*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´MuhjÙ*ubj�)�”}”(hhh]”hÌ)�”}”(hŒ"The buffer head to perform I/O on.”h]”hŒ"The buffer head to perform I/O on.”…”�”}”(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&]”uh1jlh³jô*h´MuhjÖ*ubjm)�”}”(hŒ/``blk_opf_t opf`` Operation and flags for bio. ”h]”(js)�”}”(hŒ``blk_opf_t opf``”h]”jy)�”}”(hj+h]”hŒ blk_opf_t opf”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Mvhj+ubj�)�”}”(hhh]”hÌ)�”}”(hŒOperation and flags for bio.”h]”hŒOperation and flags for bio.”…”�”}”(hj1+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&]”uh1jlh³j-+h´MvhjÖ*ubjm)�”}”(hŒD``bio_end_io_t end_io`` The routine to call when I/O has completed. ”h]”(js)�”}”(hŒ``bio_end_io_t end_io``”h]”jy)�”}”(hjQ+h]”hŒbio_end_io_t end_io”…”�”}”(hjS+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjO+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´MwhjK+ubj�)�”}”(hhh]”hÌ)�”}”(hŒ+The routine to call when I/O has completed.”h]”hŒ+The routine to call when I/O has completed.”…”�”}”(hjj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jf+h´Mwhjg+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jŽhjK+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jlh³jf+h´MwhjÖ*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jghjº*ubhÌ)�”}”(hŒ**Description**”h]”jR)�”}”(hjŒ+h]”hŒ Description”…”�”}”(hjŽ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjŠ+ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Myhjº*ubhÌ)�”}”(hŒˆIf you need to do I/O on an individual bh (instead of allowing the page cache to do I/O on the folio that it is in), call this function.”h]”hŒˆIf you need to do I/O on an individual bh (instead of allowing the page cache to do I/O on the folio that it is in), call this function.”…”�”}”(hj¢+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Mxhjº*ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jGhhÛh²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒbdev_getblk (C function)”Œ c.bdev_getblk”hNt”auh1hìhhÛh²hh³Nh´Nubhþ)�”}”(hhh]”(j)�”}”(hŒfstruct buffer_head * bdev_getblk (struct block_device *bdev, sector_t block, unsigned size, gfp_t gfp)”h]”j )�”}”(hŒdstruct buffer_head *bdev_getblk(struct block_device *bdev, sector_t block, unsigned size, gfp_t gfp)”h]”(jp)�”}”(hj�h]”hŒstruct”…”�”}”(hjÑ+h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjÍ+h²hh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´M+ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjß+h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjÍ+h²hh³jÞ+h´M+ubh)�”}”(hhh]”jI)�”}”(hŒ buffer_head”h]”hŒ buffer_head”…”�”}”(hjð+h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjí+ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÂŒreftype”jÄŒ reftarget”jò+Œmodname”NŒ classname”NjÈjË)�”}”jÎ]”jÑ)�”}”jÄŒ bdev_getblk”sbŒ c.bdev_getblk”†”asbuh1hhjÍ+h²hh³jÞ+h´M+ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjÍ+h²hh³jÞ+h´M+ubj2)�”}”(hj5h]”hŒ*”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÍ+h²hh³jÞ+h´M+ubjC)�”}”(hŒ bdev_getblk”h]”jI)�”}”(hj,h]”hŒ bdev_getblk”…”�”}”(hj0,h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj,,ubah}”(h]”h ]”(j\j]eh"]”h$]”h&]”jajbuh1jBhjÍ+h²hh³jÞ+h´M+ubjd)�”}”(hŒE(struct block_device *bdev, sector_t block, unsigned size, gfp_t gfp)”h]”(jj)�”}”(hŒstruct block_device *bdev”h]”(jp)�”}”(hj�h]”hŒstruct”…”�”}”(hjK,h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjG,ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjX,h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjG,ubh)�”}”(hhh]”jI)�”}”(hŒ block_device”h]”hŒ block_device”…”�”}”(hji,h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjf,ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÂŒreftype”jÄŒ reftarget”jk,Œmodname”NŒ classname”NjÈjË)�”}”jÎ]”j ,Œ c.bdev_getblk”†”asbuh1hhjG,ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡,h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjG,ubj2)�”}”(hj5h]”hŒ*”…”�”}”(hj•,h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjG,ubjI)�”}”(hŒbdev”h]”hŒbdev”…”�”}”(hj¢,h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjG,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihjC,ubjj)�”}”(hŒsector_t block”h]”(h)�”}”(hhh]”jI)�”}”(hŒsector_t”h]”hŒsector_t”…”�”}”(hj¾,h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj»,ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÂŒreftype”jÄŒ reftarget”jÀ,Œmodname”NŒ classname”NjÈjË)�”}”jÎ]”j ,Œ c.bdev_getblk”†”asbuh1hhj·,ubj!)�”}”(hŒ ”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 ]”jUah"]”h$]”h&]”uh1jHhj·,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihjC,ubjj)�”}”(hŒ unsigned size”h]”(j)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÿ,ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjÿ,ubjI)�”}”(hŒsize”h]”hŒsize”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÿ,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihjC,ubjj)�”}”(hŒ gfp_t gfp”h]”(h)�”}”(hhh]”jI)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hj;-h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj8-ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÂŒreftype”jÄŒ reftarget”j=-Œmodname”NŒ classname”NjÈjË)�”}”jÎ]”j ,Œ c.bdev_getblk”†”asbuh1hhj4-ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjY-h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj4-ubjI)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hjg-h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj4-ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihjC,ubeh}”(h]”h ]”h"]”h$]”h&]”jajbuh1jchjÍ+h²hh³jÞ+h´M+ubeh}”(h]”h ]”h"]”h$]”h&]”jajbjˆuh1jjjhjÉ+h²hh³jÞ+h´M+ubah}”(h]”jÄ+ah ]”(jjeh"]”h$]”h&]”jˆj)jhuh1jh³jÞ+h´M+hjÆ+h²hubj!)�”}”(hhh]”hÌ)�”}”(hŒ3Get a buffer_head in a block device's buffer cache.”h]”hŒ5Get a buffer_head in a block device’s buffer cache.”…”�”}”(hj‘-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´M+hjŽ-h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÆ+h²hh³jÞ+h´M+ubeh}”(h]”h ]”(jÂŒfunction”eh"]”h$]”h&]”jAjÂjBj©-jCj©-jD‰jE‰jF‰uh1hýh²hhhÛh³Nh´NubjH)�”}”(hXG**Parameters** ``struct block_device *bdev`` The block device. ``sector_t block`` The block number. ``unsigned size`` The size of buffer_heads for this **bdev**. ``gfp_t gfp`` The memory allocation flags to use. **Description** The returned buffer head has its reference count incremented, but is not locked. The caller should call brelse() when it has finished with the buffer. The buffer may not be uptodate. If needed, the caller can bring it uptodate either by reading it or overwriting it. **Return** The buffer head, or NULL if memory could not be allocated.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”jR)�”}”(hj³-h]”hŒ Parameters”…”�”}”(hjµ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhj±-ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´M/hj­-ubjh)�”}”(hhh]”(jm)�”}”(hŒ0``struct block_device *bdev`` The block device. ”h]”(js)�”}”(hŒ``struct block_device *bdev``”h]”jy)�”}”(hjÒ-h]”hŒstruct block_device *bdev”…”�”}”(hjÔ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjÐ-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´M,hjÌ-ubj�)�”}”(hhh]”hÌ)�”}”(hŒThe block device.”h]”hŒThe block device.”…”�”}”(hjë-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jç-h´M,hjè-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jŽhjÌ-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jlh³jç-h´M,hjÉ-ubjm)�”}”(hŒ%``sector_t block`` The block number. ”h]”(js)�”}”(hŒ``sector_t block``”h]”jy)�”}”(hj .h]”hŒsector_t block”…”�”}”(hj .h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj .ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´M-hj.ubj�)�”}”(hhh]”hÌ)�”}”(hŒThe block number.”h]”hŒThe block 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&]”uh1jlh³j .h´M-hjÉ-ubjm)�”}”(hŒ>``unsigned size`` The size of buffer_heads for this **bdev**. ”h]”(js)�”}”(hŒ``unsigned size``”h]”jy)�”}”(hjD.h]”hŒ unsigned size”…”�”}”(hjF.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjB.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´M.hj>.ubj�)�”}”(hhh]”hÌ)�”}”(hŒ+The size of buffer_heads for this **bdev**.”h]”(hŒ"The size of buffer_heads for this ”…”�”}”(hj].h²hh³Nh´NubjR)�”}”(hŒ**bdev**”h]”hŒbdev”…”�”}”(hje.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhj].ubhŒ.”…”�”}”(hj].h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jY.h´M.hjZ.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jŽhj>.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jlh³jY.h´M.hjÉ-ubjm)�”}”(hŒ2``gfp_t gfp`` The memory allocation flags to use. ”h]”(js)�”}”(hŒ ``gfp_t gfp``”h]”jy)�”}”(hj�.h]”hŒ gfp_t gfp”…”�”}”(hj‘.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj�.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´M/hj‰.ubj�)�”}”(hhh]”hÌ)�”}”(hŒ#The memory allocation flags to use.”h]”hŒ#The memory allocation flags 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&]”uh1jlh³j¤.h´M/hjÉ-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jghj­-ubhÌ)�”}”(hŒ**Description**”h]”jR)�”}”(hjÊ.h]”hŒ Description”…”�”}”(hjÌ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjÈ.ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´M1hj­-ubhÌ)�”}”(hX The returned buffer head has its reference count incremented, but is not locked. The caller should call brelse() when it has finished with the buffer. The buffer may not be uptodate. If needed, the caller can bring it uptodate either by reading it or overwriting it.”h]”hX The returned buffer head has its reference count incremented, but is not locked. The caller should call brelse() when it has finished with the buffer. The buffer may not be uptodate. If needed, the caller can bring it uptodate either by reading it or overwriting it.”…”�”}”(hjà.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´M0hj­-ubhÌ)�”}”(hŒ **Return**”h]”jR)�”}”(hjñ.h]”hŒReturn”…”�”}”(hjó.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjï.ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´M5hj­-ubhÌ)�”}”(hŒ:The buffer head, or NULL if memory could not be allocated.”h]”hŒ:The buffer head, or NULL if memory could not be allocated.”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´M6hj­-ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jGhhÛh²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒ__bread_gfp (C function)”Œ c.__bread_gfp”hNt”auh1hìhhÛh²hh³Nh´Nubhþ)�”}”(hhh]”(j)�”}”(hŒfstruct buffer_head * __bread_gfp (struct block_device *bdev, sector_t block, unsigned size, gfp_t gfp)”h]”j )�”}”(hŒdstruct buffer_head *__bread_gfp(struct block_device *bdev, sector_t block, unsigned size, gfp_t gfp)”h]”(jp)�”}”(hj�h]”hŒstruct”…”�”}”(hj6/h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj2/h²hh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´MZubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjD/h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj2/h²hh³jC/h´MZubh)�”}”(hhh]”jI)�”}”(hŒ buffer_head”h]”hŒ buffer_head”…”�”}”(hjU/h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjR/ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÂŒreftype”jÄŒ reftarget”jW/Œmodname”NŒ classname”NjÈjË)�”}”jÎ]”jÑ)�”}”jÄŒ __bread_gfp”sbŒ c.__bread_gfp”†”asbuh1hhj2/h²hh³jC/h´MZubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjv/h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj2/h²hh³jC/h´MZubj2)�”}”(hj5h]”hŒ*”…”�”}”(hj„/h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj2/h²hh³jC/h´MZubjC)�”}”(hŒ __bread_gfp”h]”jI)�”}”(hjs/h]”hŒ __bread_gfp”…”�”}”(hj•/h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj‘/ubah}”(h]”h ]”(j\j]eh"]”h$]”h&]”jajbuh1jBhj2/h²hh³jC/h´MZubjd)�”}”(hŒE(struct block_device *bdev, sector_t block, unsigned size, gfp_t gfp)”h]”(jj)�”}”(hŒstruct block_device *bdev”h]”(jp)�”}”(hj�h]”hŒstruct”…”�”}”(hj°/h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj¬/ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½/h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj¬/ubh)�”}”(hhh]”jI)�”}”(hŒ block_device”h]”hŒ block_device”…”�”}”(hjÎ/h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjË/ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÂŒreftype”jÄŒ reftarget”jÐ/Œmodname”NŒ classname”NjÈjË)�”}”jÎ]”jq/Œ c.__bread_gfp”†”asbuh1hhj¬/ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjì/h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj¬/ubj2)�”}”(hj5h]”hŒ*”…”�”}”(hjú/h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj¬/ubjI)�”}”(hŒbdev”h]”hŒbdev”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj¬/ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihj¨/ubjj)�”}”(hŒsector_t block”h]”(h)�”}”(hhh]”jI)�”}”(hŒsector_t”h]”hŒsector_t”…”�”}”(hj#0h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj 0ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÂŒreftype”jÄŒ reftarget”j%0Œmodname”NŒ classname”NjÈjË)�”}”jÎ]”jq/Œ c.__bread_gfp”†”asbuh1hhj0ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjA0h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj0ubjI)�”}”(hŒblock”h]”hŒblock”…”�”}”(hjO0h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj0ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihj¨/ubjj)�”}”(hŒ unsigned size”h]”(j)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjh0h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjd0ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjv0h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjd0ubjI)�”}”(hŒsize”h]”hŒsize”…”�”}”(hj„0h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjd0ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihj¨/ubjj)�”}”(hŒ gfp_t gfp”h]”(h)�”}”(hhh]”jI)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hj 0h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj�0ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÂŒreftype”jÄŒ reftarget”j¢0Œmodname”NŒ classname”NjÈjË)�”}”jÎ]”jq/Œ c.__bread_gfp”†”asbuh1hhj™0ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾0h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj™0ubjI)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hjÌ0h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj™0ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihj¨/ubeh}”(h]”h ]”h"]”h$]”h&]”jajbuh1jchj2/h²hh³jC/h´MZubeh}”(h]”h ]”h"]”h$]”h&]”jajbjˆuh1jjjhj./h²hh³jC/h´MZubah}”(h]”j)/ah ]”(jjeh"]”h$]”h&]”jˆj)jhuh1jh³jC/h´MZhj+/h²hubj!)�”}”(hhh]”hÌ)�”}”(hŒ Read a block.”h]”hŒ Read a block.”…”�”}”(hjö0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´MZhjó0h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj+/h²hh³jC/h´MZubeh}”(h]”h ]”(jÂŒfunction”eh"]”h$]”h&]”jAjÂjBj1jCj1jD‰jE‰jF‰uh1hýh²hhhÛh³Nh´NubjH)�”}”(hXs**Parameters** ``struct block_device *bdev`` The block device to read from. ``sector_t block`` Block number in units of block size. ``unsigned size`` The block size of this device in bytes. ``gfp_t gfp`` Not page allocation flags; see below. **Description** You are not expected to call this function. You should use one of sb_bread(), sb_bread_unmovable() or __bread(). Read a specified block, and return the buffer head that refers to it. If **gfp** is 0, the memory will be allocated using the block device's default GFP flags. If **gfp** is __GFP_MOVABLE, the memory may be allocated from a movable area. Do not pass in a complete set of GFP flags. The returned buffer head has its refcount increased. The caller should call brelse() when it has finished with the buffer. **Context** May sleep waiting for I/O. **Return** NULL if the block was unreadable.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”jR)�”}”(hj1h]”hŒ Parameters”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´M^hj1ubjh)�”}”(hhh]”(jm)�”}”(hŒ=``struct block_device *bdev`` The block device to read from. ”h]”(js)�”}”(hŒ``struct block_device *bdev``”h]”jy)�”}”(hj71h]”hŒstruct block_device *bdev”…”�”}”(hj91h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj51ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´M[hj11ubj�)�”}”(hhh]”hÌ)�”}”(hŒThe block device to read from.”h]”hŒThe block device to read from.”…”�”}”(hjP1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jL1h´M[hjM1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jŽhj11ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jlh³jL1h´M[hj.1ubjm)�”}”(hŒ8``sector_t block`` Block number in units of block size. ”h]”(js)�”}”(hŒ``sector_t block``”h]”jy)�”}”(hjp1h]”hŒsector_t block”…”�”}”(hjr1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjn1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´M\hjj1ubj�)�”}”(hhh]”hÌ)�”}”(hŒ$Block number in units of block size.”h]”hŒ$Block number in units of block size.”…”�”}”(hj‰1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j…1h´M\hj†1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jŽhjj1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jlh³j…1h´M\hj.1ubjm)�”}”(hŒ:``unsigned size`` The block size of this device in bytes. ”h]”(js)�”}”(hŒ``unsigned size``”h]”jy)�”}”(hj©1h]”hŒ unsigned size”…”�”}”(hj«1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj§1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´M]hj£1ubj�)�”}”(hhh]”hÌ)�”}”(hŒ'The block size of this device in bytes.”h]”hŒ'The block size of this device in bytes.”…”�”}”(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&]”uh1jlh³j¾1h´M]hj.1ubjm)�”}”(hŒ4``gfp_t gfp`` Not page allocation flags; see below. ”h]”(js)�”}”(hŒ ``gfp_t gfp``”h]”jy)�”}”(hjâ1h]”hŒ gfp_t gfp”…”�”}”(hjä1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjà1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´M^hjÜ1ubj�)�”}”(hhh]”hÌ)�”}”(hŒ%Not page allocation flags; see below.”h]”hŒ%Not page allocation flags; see below.”…”�”}”(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&]”uh1jlh³j÷1h´M^hj.1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jghj1ubhÌ)�”}”(hŒ**Description**”h]”jR)�”}”(hj2h]”hŒ Description”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´M`hj1ubhÌ)�”}”(hŒqYou are not expected to call this function. You should use one of sb_bread(), sb_bread_unmovable() or __bread().”h]”hŒqYou are not expected to call this function. You should use one of sb_bread(), sb_bread_unmovable() or __bread().”…”�”}”(hj32h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´M_hj1ubhÌ)�”}”(hXRead a specified block, and return the buffer head that refers to it. If **gfp** is 0, the memory will be allocated using the block device's default GFP flags. If **gfp** is __GFP_MOVABLE, the memory may be allocated from a movable area. Do not pass in a complete set of GFP flags.”h]”(hŒIRead a specified block, and return the buffer head that refers to it. If ”…”�”}”(hjB2h²hh³Nh´NubjR)�”}”(hŒ**gfp**”h]”hŒgfp”…”�”}”(hjJ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjB2ubhŒV is 0, the memory will be allocated using the block device’s default GFP flags. If ”…”�”}”(hjB2h²hh³Nh´NubjR)�”}”(hŒ**gfp**”h]”hŒgfp”…”�”}”(hj\2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjB2ubhŒp is __GFP_MOVABLE, the memory may be allocated from a movable area. Do not pass in a complete set of GFP flags.”…”�”}”(hjB2h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Mbhj1ubhÌ)�”}”(hŒ{The returned buffer head has its refcount increased. The caller should call brelse() when it has finished with the buffer.”h]”hŒ{The returned buffer head has its refcount increased. The caller should call brelse() when it has finished with the buffer.”…”�”}”(hju2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Mhhj1ubhÌ)�”}”(hŒ **Context**”h]”jR)�”}”(hj†2h]”hŒContext”…”�”}”(hjˆ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhj„2ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Mkhj1ubhÌ)�”}”(hŒMay sleep waiting for I/O.”h]”hŒMay sleep waiting for I/O.”…”�”}”(hjœ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Mlhj1ubhÌ)�”}”(hŒ **Return**”h]”jR)�”}”(hj­2h]”hŒReturn”…”�”}”(hj¯2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhj«2ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Mnhj1ubhÌ)�”}”(hŒ!NULL if the block was unreadable.”h]”hŒ!NULL if the block was unreadable.”…”�”}”(hjÃ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Mmhj1ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jGhhÛh²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒ#block_invalidate_folio (C function)”Œc.block_invalidate_folio”hNt”auh1hìhhÛh²hh³Nh´Nubhþ)�”}”(hhh]”(j)�”}”(hŒOvoid block_invalidate_folio (struct folio *folio, size_t offset, size_t length)”h]”j )�”}”(hŒNvoid block_invalidate_folio(struct folio *folio, size_t offset, size_t length)”h]”(j)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjò2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjî2h²hh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Máubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjî2h²hh³j3h´MáubjC)�”}”(hŒblock_invalidate_folio”h]”jI)�”}”(hŒblock_invalidate_folio”h]”hŒblock_invalidate_folio”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj3ubah}”(h]”h ]”(j\j]eh"]”h$]”h&]”jajbuh1jBhjî2h²hh³j3h´Máubjd)�”}”(hŒ3(struct folio *folio, size_t offset, size_t length)”h]”(jj)�”}”(hŒstruct folio *folio”h]”(jp)�”}”(hj�h]”hŒstruct”…”�”}”(hj/3h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj+3ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<3h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj+3ubh)�”}”(hhh]”jI)�”}”(hŒfolio”h]”hŒfolio”…”�”}”(hjM3h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjJ3ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÂŒreftype”jÄŒ reftarget”jO3Œmodname”NŒ classname”NjÈjË)�”}”jÎ]”jÑ)�”}”jÄj3sbŒc.block_invalidate_folio”†”asbuh1hhj+3ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjm3h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj+3ubj2)�”}”(hj5h]”hŒ*”…”�”}”(hj{3h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj+3ubjI)�”}”(hŒfolio”h]”hŒfolio”…”�”}”(hjˆ3h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj+3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihj'3ubjj)�”}”(hŒ size_t offset”h]”(h)�”}”(hhh]”jI)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj¤3h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj¡3ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÂŒreftype”jÄŒ reftarget”j¦3Œmodname”NŒ classname”NjÈjË)�”}”jÎ]”ji3Œc.block_invalidate_folio”†”asbuh1hhj�3ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂ3h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj�3ubjI)�”}”(hŒoffset”h]”hŒoffset”…”�”}”(hjÐ3h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj�3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihj'3ubjj)�”}”(hŒ size_t length”h]”(h)�”}”(hhh]”jI)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjì3h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjé3ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÂŒreftype”jÄŒ reftarget”jî3Œmodname”NŒ classname”NjÈjË)�”}”jÎ]”ji3Œc.block_invalidate_folio”†”asbuh1hhjå3ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj 4h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjå3ubjI)�”}”(hŒlength”h]”hŒlength”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjå3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihj'3ubeh}”(h]”h ]”h"]”h$]”h&]”jajbuh1jchjî2h²hh³j3h´Máubeh}”(h]”h ]”h"]”h$]”h&]”jajbjˆuh1jjjhjê2h²hh³j3h´Máubah}”(h]”jå2ah ]”(jjeh"]”h$]”h&]”jˆj)jhuh1jh³j3h´Máhjç2h²hubj!)�”}”(hhh]”hÌ)�”}”(hŒ0Invalidate part or all of a buffer-backed folio.”h]”hŒ0Invalidate part or all of a buffer-backed folio.”…”�”}”(hjB4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Máhj?4h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjç2h²hh³j3h´Máubeh}”(h]”h ]”(jÂŒfunction”eh"]”h$]”h&]”jAjÂjBjZ4jCjZ4jD‰jE‰jF‰uh1hýh²hhhÛh³Nh´NubjH)�”}”(hXe**Parameters** ``struct folio *folio`` The folio which is affected. ``size_t offset`` start of the range to invalidate ``size_t length`` length of the range to invalidate **Description** block_invalidate_folio() is called when all or part of the folio has been invalidated by a truncate operation. block_invalidate_folio() does not have to release all buffers, but it must ensure that no dirty buffer is left outside **offset** and that no I/O is underway against any of the blocks which are outside the truncation point. Because the caller is about to free (and possibly reuse) those blocks on-disk.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”jR)�”}”(hjd4h]”hŒ Parameters”…”�”}”(hjf4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjb4ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Måhj^4ubjh)�”}”(hhh]”(jm)�”}”(hŒ5``struct folio *folio`` The folio which is affected. ”h]”(js)�”}”(hŒ``struct folio *folio``”h]”jy)�”}”(hjƒ4h]”hŒstruct folio *folio”…”�”}”(hj…4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj�4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Mâhj}4ubj�)�”}”(hhh]”hÌ)�”}”(hŒThe folio which is affected.”h]”hŒThe folio which is affected.”…”�”}”(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&]”uh1jlh³j˜4h´Mâhjz4ubjm)�”}”(hŒ3``size_t offset`` start of the range to invalidate ”h]”(js)�”}”(hŒ``size_t offset``”h]”jy)�”}”(hj¼4h]”hŒ size_t offset”…”�”}”(hj¾4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjº4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Mãhj¶4ubj�)�”}”(hhh]”hÌ)�”}”(hŒ start of the range to invalidate”h]”hŒ start of the range to invalidate”…”�”}”(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&]”uh1jlh³jÑ4h´Mãhjz4ubjm)�”}”(hŒ4``size_t length`` length of the range to invalidate ”h]”(js)�”}”(hŒ``size_t length``”h]”jy)�”}”(hjõ4h]”hŒ size_t length”…”�”}”(hj÷4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjó4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Mähjï4ubj�)�”}”(hhh]”hÌ)�”}”(hŒ!length of the range to invalidate”h]”hŒ!length of the range to invalidate”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j 5h´Mähj 5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jŽhjï4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jlh³j 5h´Mähjz4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jghj^4ubhÌ)�”}”(hŒ**Description**”h]”jR)�”}”(hj05h]”hŒ Description”…”�”}”(hj25h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhj.5ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Mæhj^4ubhÌ)�”}”(hŒnblock_invalidate_folio() is called when all or part of the folio has been invalidated by a truncate operation.”h]”hŒnblock_invalidate_folio() is called when all or part of the folio has been invalidated by a truncate operation.”…”�”}”(hjF5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Måhj^4ubhÌ)�”}”(hX/block_invalidate_folio() does not have to release all buffers, but it must ensure that no dirty buffer is left outside **offset** and that no I/O is underway against any of the blocks which are outside the truncation point. Because the caller is about to free (and possibly reuse) those blocks on-disk.”h]”(hŒwblock_invalidate_folio() does not have to release all buffers, but it must ensure that no dirty buffer is left outside ”…”�”}”(hjU5h²hh³Nh´NubjR)�”}”(hŒ **offset**”h]”hŒoffset”…”�”}”(hj]5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjU5ubhŒ® and that no I/O is underway against any of the blocks which are outside the truncation point. Because the caller is about to free (and possibly reuse) those blocks on-disk.”…”�”}”(hjU5h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Mèhj^4ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jGhhÛh²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒclean_bdev_aliases (C function)”Œc.clean_bdev_aliases”hNt”auh1hìhhÛh²hh³Nh´Nubhþ)�”}”(hhh]”(j)�”}”(hŒQvoid clean_bdev_aliases (struct block_device *bdev, sector_t block, sector_t len)”h]”j )�”}”(hŒPvoid clean_bdev_aliases(struct block_device *bdev, sector_t block, sector_t len)”h]”(j)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj–5h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj’5h²hh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´MGubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥5h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj’5h²hh³j¤5h´MGubjC)�”}”(hŒclean_bdev_aliases”h]”jI)�”}”(hŒclean_bdev_aliases”h]”hŒclean_bdev_aliases”…”�”}”(hj·5h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj³5ubah}”(h]”h ]”(j\j]eh"]”h$]”h&]”jajbuh1jBhj’5h²hh³j¤5h´MGubjd)�”}”(hŒ9(struct block_device *bdev, sector_t block, sector_t len)”h]”(jj)�”}”(hŒstruct block_device *bdev”h]”(jp)�”}”(hj�h]”hŒstruct”…”�”}”(hjÓ5h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjÏ5ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjà5h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjÏ5ubh)�”}”(hhh]”jI)�”}”(hŒ block_device”h]”hŒ block_device”…”�”}”(hjñ5h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjî5ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÂŒreftype”jÄŒ reftarget”jó5Œmodname”NŒ classname”NjÈjË)�”}”jÎ]”jÑ)�”}”jÄj¹5sbŒc.clean_bdev_aliases”†”asbuh1hhjÏ5ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjÏ5ubj2)�”}”(hj5h]”hŒ*”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hjÏ5ubjI)�”}”(hŒbdev”h]”hŒbdev”…”�”}”(hj,6h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÏ5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihjË5ubjj)�”}”(hŒsector_t block”h]”(h)�”}”(hhh]”jI)�”}”(hŒsector_t”h]”hŒsector_t”…”�”}”(hjH6h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjE6ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÂŒreftype”jÄŒ reftarget”jJ6Œmodname”NŒ classname”NjÈjË)�”}”jÎ]”j 6Œc.clean_bdev_aliases”†”asbuh1hhjA6ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjf6h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjA6ubjI)�”}”(hŒblock”h]”hŒblock”…”�”}”(hjt6h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjA6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihjË5ubjj)�”}”(hŒ sector_t len”h]”(h)�”}”(hhh]”jI)�”}”(hŒsector_t”h]”hŒsector_t”…”�”}”(hj�6h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj�6ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÂŒreftype”jÄŒ reftarget”j’6Œmodname”NŒ classname”NjÈjË)�”}”jÎ]”j 6Œc.clean_bdev_aliases”†”asbuh1hhj‰6ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®6h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj‰6ubjI)�”}”(hŒlen”h]”hŒlen”…”�”}”(hj¼6h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj‰6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihjË5ubeh}”(h]”h ]”h"]”h$]”h&]”jajbuh1jchj’5h²hh³j¤5h´MGubeh}”(h]”h ]”h"]”h$]”h&]”jajbjˆuh1jjjhjŽ5h²hh³j¤5h´MGubah}”(h]”j‰5ah ]”(jjeh"]”h$]”h&]”jˆj)jhuh1jh³j¤5h´MGhj‹5h²hubj!)�”}”(hhh]”hÌ)�”}”(hŒ(clean a range of buffers in block device”h]”hŒ(clean a range of buffers in block device”…”�”}”(hjæ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´MGhjã6h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj‹5h²hh³j¤5h´MGubeh}”(h]”h ]”(jÂŒfunction”eh"]”h$]”h&]”jAjÂjBjþ6jCjþ6jD‰jE‰jF‰uh1hýh²hhhÛh³Nh´NubjH)�”}”(hXJ**Parameters** ``struct block_device *bdev`` Block device to clean buffers in ``sector_t block`` Start of a range of blocks to clean ``sector_t len`` Number of blocks to clean **Description** We are taking a range of blocks for data and we don't want writeback of any buffer-cache aliases starting from return from this function and until the moment when something will explicitly mark the buffer dirty (hopefully that will not happen until we will free that block ;-) We don't even need to mark it not-uptodate - nobody can expect anything from a newly allocated buffer anyway. Also.. Note that bforget() doesn't lock the buffer. So there can be writeout I/O going on against recently-freed buffers. We don't wait on that I/O in bforget() - it's more efficient to wait on the I/O only if we really need to. That happens here.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”jR)�”}”(hj7h]”hŒ Parameters”…”�”}”(hj 7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´MKhj7ubjh)�”}”(hhh]”(jm)�”}”(hŒ?``struct block_device *bdev`` Block device to clean buffers in ”h]”(js)�”}”(hŒ``struct block_device *bdev``”h]”jy)�”}”(hj'7h]”hŒstruct block_device *bdev”…”�”}”(hj)7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj%7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´MHhj!7ubj�)�”}”(hhh]”hÌ)�”}”(hŒ Block device to clean buffers in”h]”hŒ Block device to clean buffers in”…”�”}”(hj@7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j<7h´MHhj=7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jŽhj!7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jlh³j<7h´MHhj7ubjm)�”}”(hŒ7``sector_t block`` Start of a range of blocks to clean ”h]”(js)�”}”(hŒ``sector_t block``”h]”jy)�”}”(hj`7h]”hŒsector_t block”…”�”}”(hjb7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj^7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´MIhjZ7ubj�)�”}”(hhh]”hÌ)�”}”(hŒ#Start of a range of blocks to clean”h]”hŒ#Start of a range of blocks to clean”…”�”}”(hjy7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ju7h´MIhjv7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jŽhjZ7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jlh³ju7h´MIhj7ubjm)�”}”(hŒ+``sector_t len`` Number of blocks to clean ”h]”(js)�”}”(hŒ``sector_t len``”h]”jy)�”}”(hj™7h]”hŒ sector_t len”…”�”}”(hj›7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj—7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´MJhj“7ubj�)�”}”(hhh]”hÌ)�”}”(hŒNumber of blocks to clean”h]”hŒNumber of blocks to clean”…”�”}”(hj²7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j®7h´MJhj¯7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jŽhj“7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jlh³j®7h´MJhj7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jghj7ubhÌ)�”}”(hŒ**Description**”h]”jR)�”}”(hjÔ7h]”hŒ Description”…”�”}”(hjÖ7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjÒ7ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´MLhj7ubhÌ)�”}”(hX‚We are taking a range of blocks for data and we don't want writeback of any buffer-cache aliases starting from return from this function and until the moment when something will explicitly mark the buffer dirty (hopefully that will not happen until we will free that block ;-) We don't even need to mark it not-uptodate - nobody can expect anything from a newly allocated buffer anyway.”h]”hX†We are taking a range of blocks for data and we don’t want writeback of any buffer-cache aliases starting from return from this function and until the moment when something will explicitly mark the buffer dirty (hopefully that will not happen until we will free that block ;-) We don’t even need to mark it not-uptodate - nobody can expect anything from a newly allocated buffer anyway.”…”�”}”(hjê7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´MKhj7ubhÌ)�”}”(hŒûAlso.. Note that bforget() doesn't lock the buffer. So there can be writeout I/O going on against recently-freed buffers. We don't wait on that I/O in bforget() - it's more efficient to wait on the I/O only if we really need to. That happens here.”h]”hXAlso.. Note that bforget() doesn’t lock the buffer. So there can be writeout I/O going on against recently-freed buffers. We don’t wait on that I/O in bforget() - it’s more efficient to wait on the I/O only if we really need to. That happens here.”…”�”}”(hjù7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´MRhj7ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jGhhÛh²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒ try_to_free_buffers (C function)”Œc.try_to_free_buffers”hNt”auh1hìhhÛh²hh³Nh´Nubhþ)�”}”(hhh]”(j)�”}”(hŒ.bool try_to_free_buffers (struct folio *folio)”h]”j )�”}”(hŒ-bool try_to_free_buffers(struct folio *folio)”h]”(j)�”}”(hj*h]”hŒbool”…”�”}”(hj(8h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj$8h²hh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´MÊ ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj68h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj$8h²hh³j58h´MÊ ubjC)�”}”(hŒtry_to_free_buffers”h]”jI)�”}”(hŒtry_to_free_buffers”h]”hŒtry_to_free_buffers”…”�”}”(hjH8h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjD8ubah}”(h]”h ]”(j\j]eh"]”h$]”h&]”jajbuh1jBhj$8h²hh³j58h´MÊ ubjd)�”}”(hŒ(struct folio *folio)”h]”jj)�”}”(hŒstruct folio *folio”h]”(jp)�”}”(hj�h]”hŒstruct”…”�”}”(hjd8h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj`8ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjq8h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj`8ubh)�”}”(hhh]”jI)�”}”(hŒfolio”h]”hŒfolio”…”�”}”(hj‚8h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÂŒreftype”jÄŒ reftarget”j„8Œmodname”NŒ classname”NjÈjË)�”}”jÎ]”jÑ)�”}”jÄjJ8sbŒc.try_to_free_buffers”†”asbuh1hhj`8ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢8h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj`8ubj2)�”}”(hj5h]”hŒ*”…”�”}”(hj°8h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj`8ubjI)�”}”(hŒfolio”h]”hŒfolio”…”�”}”(hj½8h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj`8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihj\8ubah}”(h]”h ]”h"]”h$]”h&]”jajbuh1jchj$8h²hh³j58h´MÊ ubeh}”(h]”h ]”h"]”h$]”h&]”jajbjˆuh1jjjhj 8h²hh³j58h´MÊ ubah}”(h]”j8ah ]”(jjeh"]”h$]”h&]”jˆj)jhuh1jh³j58h´MÊ hj8h²hubj!)�”}”(hhh]”hÌ)�”}”(hŒ'Release buffers attached to this folio.”h]”hŒ'Release buffers attached to this folio.”…”�”}”(hjç8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´MÊ hjä8h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj8h²hh³j58h´MÊ ubeh}”(h]”h ]”(jÂŒfunction”eh"]”h$]”h&]”jAjÂjBjÿ8jCjÿ8jD‰jE‰jF‰uh1hýh²hhhÛh³Nh´NubjH)�”}”(hXÈ**Parameters** ``struct folio *folio`` The folio. **Description** If any buffers are in use (dirty, under writeback, elevated refcount), no buffers will be freed. If the folio is dirty but all the buffers are clean then we need to be sure to mark the folio clean as well. This is because the folio may be against a block device, and a later reattachment of buffers to a dirty folio will set *all* buffers dirty. Which would corrupt filesystem data on the same device. The same applies to regular filesystem folios: if all the buffers are clean then we set the folio clean and proceed. To do that, we require total exclusion from block_dirty_folio(). That is obtained with i_private_lock. Exclusion against try_to_free_buffers may be obtained by either locking the folio or by holding its mapping's i_private_lock. **Context** Process context. **folio** must be locked. Will not sleep. **Return** true if all buffers attached to this folio were freed.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”jR)�”}”(hj 9h]”hŒ Parameters”…”�”}”(hj 9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´MÎ hj9ubjh)�”}”(hhh]”jm)�”}”(hŒ#``struct folio *folio`` The folio. ”h]”(js)�”}”(hŒ``struct folio *folio``”h]”jy)�”}”(hj(9h]”hŒstruct folio *folio”…”�”}”(hj*9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj&9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´MË hj"9ubj�)�”}”(hhh]”hÌ)�”}”(hŒ The folio.”h]”hŒ The folio.”…”�”}”(hjA9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j=9h´MË hj>9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jŽhj"9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jlh³j=9h´MË hj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jghj9ubhÌ)�”}”(hŒ**Description**”h]”jR)�”}”(hjc9h]”hŒ Description”…”�”}”(hje9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhja9ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´MÍ hj9ubhÌ)�”}”(hŒ`If any buffers are in use (dirty, under writeback, elevated refcount), no buffers will be freed.”h]”hŒ`If any buffers are in use (dirty, under writeback, elevated refcount), no buffers will be freed.”…”�”}”(hjy9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´MÌ hj9ubhÌ)�”}”(hX2If the folio is dirty but all the buffers are clean then we need to be sure to mark the folio clean as well. This is because the folio may be against a block device, and a later reattachment of buffers to a dirty folio will set *all* buffers dirty. Which would corrupt filesystem data on the same device.”h]”(hŒåIf the folio is dirty but all the buffers are clean then we need to be sure to mark the folio clean as well. This is because the folio may be against a block device, and a later reattachment of buffers to a dirty folio will set ”…”�”}”(hjˆ9h²hh³Nh´NubhŒemphasis”“”)�”}”(hŒ*all*”h]”hŒall”…”�”}”(hj’9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�9hjˆ9ubhŒH buffers dirty. Which would corrupt filesystem data on the same device.”…”�”}”(hjˆ9h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´MÏ hj9ubhÌ)�”}”(hŒÝThe same applies to regular filesystem folios: if all the buffers are clean then we set the folio clean and proceed. To do that, we require total exclusion from block_dirty_folio(). That is obtained with i_private_lock.”h]”hŒÝThe same applies to regular filesystem folios: if all the buffers are clean then we set the folio clean and proceed. To do that, we require total exclusion from block_dirty_folio(). That is obtained with i_private_lock.”…”�”}”(hj«9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´MÕ hj9ubhÌ)�”}”(hŒ}Exclusion against try_to_free_buffers may be obtained by either locking the folio or by holding its mapping's i_private_lock.”h]”hŒExclusion against try_to_free_buffers may be obtained by either locking the folio or by holding its mapping’s i_private_lock.”…”�”}”(hjº9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´MÚ hj9ubhÌ)�”}”(hŒ **Context**”h]”jR)�”}”(hjË9h]”hŒContext”…”�”}”(hjÍ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjÉ9ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´MÝ hj9ubhÌ)�”}”(hŒah"]”h$]”h&]”uh1j1hj‚:ubjI)�”}”(hŒbh”h]”hŒbh”…”�”}”(hjß:h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj‚:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihj~:ubah}”(h]”h ]”h"]”h$]”h&]”jajbuh1jchjE:h²hh³jW:h´M` ubeh}”(h]”h ]”h"]”h$]”h&]”jajbjˆuh1jjjhjA:h²hh³jW:h´M` ubah}”(h]”j<:ah ]”(jjeh"]”h$]”h&]”jˆj)jhuh1jh³jW:h´M` hj>:h²hubj!)�”}”(hhh]”hÌ)�”}”(hŒ#Test whether the buffer is uptodate”h]”hŒ#Test whether the buffer is uptodate”…”�”}”(hj ;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´M` hj;h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj>:h²hh³jW:h´M` ubeh}”(h]”h ]”(jÂŒfunction”eh"]”h$]”h&]”jAjÂjBj!;jCj!;jD‰jE‰jF‰uh1hýh²hhhÛh³Nh´NubjH)�”}”(hŒ¤**Parameters** ``struct buffer_head *bh`` struct buffer_head **Description** Return true if the buffer is up-to-date and false, with the buffer locked, if not.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”jR)�”}”(hj+;h]”hŒ Parameters”…”�”}”(hj-;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhj);ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Md hj%;ubjh)�”}”(hhh]”jm)�”}”(hŒ.``struct buffer_head *bh`` struct buffer_head ”h]”(js)�”}”(hŒ``struct buffer_head *bh``”h]”jy)�”}”(hjJ;h]”hŒstruct buffer_head *bh”…”�”}”(hjL;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjH;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Ma hjD;ubj�)�”}”(hhh]”hÌ)�”}”(hŒstruct buffer_head”h]”hŒstruct buffer_head”…”�”}”(hjc;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j_;h´Ma hj`;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jŽhjD;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jlh³j_;h´Ma hjA;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jghj%;ubhÌ)�”}”(hŒ**Description**”h]”jR)�”}”(hj…;h]”hŒ Description”…”�”}”(hj‡;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjƒ;ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Mc hj%;ubhÌ)�”}”(hŒRReturn true if the buffer is up-to-date and false, with the buffer locked, if not.”h]”hŒRReturn true if the buffer is up-to-date and false, with the buffer locked, if not.”…”�”}”(hj›;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Mb hj%;ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jGhhÛh²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒ__bh_read (C function)”Œ c.__bh_read”hNt”auh1hìhhÛh²hh³Nh´Nubhþ)�”}”(hhh]”(j)�”}”(hŒEint __bh_read (struct buffer_head *bh, blk_opf_t op_flags, bool wait)”h]”j )�”}”(hŒDint __bh_read(struct buffer_head *bh, blk_opf_t op_flags, bool wait)”h]”(j)�”}”(hŒint”h]”hŒint”…”�”}”(hjÊ;h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÆ;h²hh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Ms ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙ;h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjÆ;h²hh³jØ;h´Ms ubjC)�”}”(hŒ __bh_read”h]”jI)�”}”(hŒ __bh_read”h]”hŒ __bh_read”…”�”}”(hjë;h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjç;ubah}”(h]”h ]”(j\j]eh"]”h$]”h&]”jajbuh1jBhjÆ;h²hh³jØ;h´Ms ubjd)�”}”(hŒ7(struct buffer_head *bh, blk_opf_t op_flags, bool wait)”h]”(jj)�”}”(hŒstruct buffer_head *bh”h]”(jp)�”}”(hj�h]”hŒstruct”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj<ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj<ubh)�”}”(hhh]”jI)�”}”(hŒ buffer_head”h]”hŒ buffer_head”…”�”}”(hj%<h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj"<ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÂŒreftype”jÄŒ reftarget”j'<Œmodname”NŒ classname”NjÈjË)�”}”jÎ]”jÑ)�”}”jÄjí;sbŒ c.__bh_read”†”asbuh1hhj<ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjE<h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj<ubj2)�”}”(hj5h]”hŒ*”…”�”}”(hjS<h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj<ubjI)�”}”(hŒbh”h]”hŒbh”…”�”}”(hj`<h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj<ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihjÿ;ubjj)�”}”(hŒblk_opf_t op_flags”h]”(h)�”}”(hhh]”jI)�”}”(hŒ blk_opf_t”h]”hŒ blk_opf_t”…”�”}”(hj|<h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjy<ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÂŒreftype”jÄŒ reftarget”j~<Œmodname”NŒ classname”NjÈjË)�”}”jÎ]”jA<Œ c.__bh_read”†”asbuh1hhju<ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjš<h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hju<ubjI)�”}”(hŒop_flags”h]”hŒop_flags”…”�”}”(hj¨<h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhju<ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihjÿ;ubjj)�”}”(hŒ bool wait”h]”(j)�”}”(hj*h]”hŒbool”…”�”}”(hjÁ<h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj½<ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎ<h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj½<ubjI)�”}”(hŒwait”h]”hŒwait”…”�”}”(hjÜ<h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj½<ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihjÿ;ubeh}”(h]”h ]”h"]”h$]”h&]”jajbuh1jchjÆ;h²hh³jØ;h´Ms ubeh}”(h]”h ]”h"]”h$]”h&]”jajbjˆuh1jjjhjÂ;h²hh³jØ;h´Ms ubah}”(h]”j½;ah ]”(jjeh"]”h$]”h&]”jˆj)jhuh1jh³jØ;h´Ms hj¿;h²hubj!)�”}”(hhh]”hÌ)�”}”(hŒSubmit read for a locked buffer”h]”hŒSubmit read for a locked buffer”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Ms hj=h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¿;h²hh³jØ;h´Ms ubeh}”(h]”h ]”(jÂŒfunction”eh"]”h$]”h&]”jAjÂjBj=jCj=jD‰jE‰jF‰uh1hýh²hhhÛh³Nh´NubjH)�”}”(hŒý**Parameters** ``struct buffer_head *bh`` struct buffer_head ``blk_opf_t op_flags`` appending REQ_OP_* flags besides REQ_OP_READ ``bool wait`` wait until reading finish **Description** Returns zero on success or don't wait, and -EIO on error.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”jR)�”}”(hj(=h]”hŒ Parameters”…”�”}”(hj*=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhj&=ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Mw hj"=ubjh)�”}”(hhh]”(jm)�”}”(hŒ.``struct buffer_head *bh`` struct buffer_head ”h]”(js)�”}”(hŒ``struct buffer_head *bh``”h]”jy)�”}”(hjG=h]”hŒstruct buffer_head *bh”…”�”}”(hjI=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjE=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Mt hjA=ubj�)�”}”(hhh]”hÌ)�”}”(hŒstruct buffer_head”h]”hŒstruct buffer_head”…”�”}”(hj`=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j\=h´Mt hj]=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jŽhjA=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jlh³j\=h´Mt hj>=ubjm)�”}”(hŒD``blk_opf_t op_flags`` appending REQ_OP_* flags besides REQ_OP_READ ”h]”(js)�”}”(hŒ``blk_opf_t op_flags``”h]”jy)�”}”(hj€=h]”hŒblk_opf_t op_flags”…”�”}”(hj‚=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj~=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Mu hjz=ubj�)�”}”(hhh]”hÌ)�”}”(hŒ,appending REQ_OP_* flags besides REQ_OP_READ”h]”hŒ,appending REQ_OP_* flags besides REQ_OP_READ”…”�”}”(hj™=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j•=h´Mu hj–=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jŽhjz=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jlh³j•=h´Mu hj>=ubjm)�”}”(hŒ(``bool wait`` wait until reading finish ”h]”(js)�”}”(hŒ ``bool wait``”h]”jy)�”}”(hj¹=h]”hŒ bool wait”…”�”}”(hj»=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj·=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Mv hj³=ubj�)�”}”(hhh]”hÌ)�”}”(hŒwait until reading finish”h]”hŒwait until reading finish”…”�”}”(hjÒ=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÎ=h´Mv hjÏ=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jŽhj³=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jlh³jÎ=h´Mv hj>=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jghj"=ubhÌ)�”}”(hŒ**Description**”h]”jR)�”}”(hjô=h]”hŒ Description”…”�”}”(hjö=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjò=ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Mx hj"=ubhÌ)�”}”(hŒ9Returns zero on success or don't wait, and -EIO on error.”h]”hŒ;Returns zero on success or don’t wait, and -EIO on error.”…”�”}”(hj >h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´Mw hj"=ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jGhhÛh²hh³Nh´Nubhí)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(hùŒ__bh_read_batch (C function)”Œc.__bh_read_batch”hNt”auh1hìhhÛh²hh³Nh´Nubhþ)�”}”(hhh]”(j)�”}”(hŒ]void __bh_read_batch (int nr, struct buffer_head *bhs[], blk_opf_t op_flags, bool force_lock)”h]”j )�”}”(hŒ\void __bh_read_batch(int nr, struct buffer_head *bhs[], blk_opf_t op_flags, bool force_lock)”h]”(j)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj9>h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj5>h²hh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´M‹ ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjH>h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1•;(j hj5>h²hh³jG>h´M‹ ubjC)�”}”(hŒ__bh_read_batch”h]”jI)�”}”(hŒ__bh_read_batch”h]”hŒ__bh_read_batch”…”�”}”(hjZ>h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjV>ubah}”(h]”h ]”(j\j]eh"]”h$]”h&]”jajbuh1jBhj5>h²hh³jG>h´M‹ ubjd)�”}”(hŒH(int nr, struct buffer_head *bhs[], blk_opf_t op_flags, bool force_lock)”h]”(jj)�”}”(hŒint nr”h]”(j)�”}”(hŒint”h]”hŒint”…”�”}”(hjv>h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjr>ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„>h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hjr>ubjI)�”}”(hŒnr”h]”hŒnr”…”�”}”(hj’>h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjr>ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihjn>ubjj)�”}”(hŒstruct buffer_head *bhs[]”h]”(jp)�”}”(hj�h]”hŒstruct”…”�”}”(hj«>h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj§>ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸>h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj§>ubh)�”}”(hhh]”jI)�”}”(hŒ buffer_head”h]”hŒ buffer_head”…”�”}”(hjÉ>h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhjÆ>ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÂŒreftype”jÄŒ reftarget”jË>Œmodname”NŒ classname”NjÈjË)�”}”jÎ]”jÑ)�”}”jÄj\>sbŒc.__bh_read_batch”†”asbuh1hhj§>ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjé>h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj§>ubj2)�”}”(hj5h]”hŒ*”…”�”}”(hj÷>h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj§>ubjI)�”}”(hŒbhs”h]”hŒbhs”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj§>ubj2)�”}”(hŒ[”h]”hŒ[”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj§>ubj2)�”}”(hŒ]”h]”hŒ]”…”�”}”(hj ?h²hh³Nh´Nubah}”(h]”h ]”j>ah"]”h$]”h&]”uh1j1hj§>ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihjn>ubjj)�”}”(hŒblk_opf_t op_flags”h]”(h)�”}”(hhh]”jI)�”}”(hŒ blk_opf_t”h]”hŒ blk_opf_t”…”�”}”(hj?Œmodname”NŒ classname”NjÈjË)�”}”jÎ]”jå>Œc.__bh_read_batch”†”asbuh1hhj5?ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZ?h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj5?ubjI)�”}”(hŒop_flags”h]”hŒop_flags”…”�”}”(hjh?h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj5?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihjn>ubjj)�”}”(hŒbool force_lock”h]”(j)�”}”(hj*h]”hŒbool”…”�”}”(hj�?h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj}?ubj!)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽ?h²hh³Nh´Nubah}”(h]”h ]”j-ah"]”h$]”h&]”uh1j hj}?ubjI)�”}”(hŒ force_lock”h]”hŒ force_lock”…”�”}”(hjœ?h²hh³Nh´Nubah}”(h]”h ]”jUah"]”h$]”h&]”uh1jHhj}?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjajbuh1jihjn>ubeh}”(h]”h ]”h"]”h$]”h&]”jajbuh1jchj5>h²hh³jG>h´M‹ ubeh}”(h]”h ]”h"]”h$]”h&]”jajbjˆuh1jjjhj1>h²hh³jG>h´M‹ ubah}”(h]”j,>ah ]”(jjeh"]”h$]”h&]”jˆj)jhuh1jh³jG>h´M‹ hj.>h²hubj!)�”}”(hhh]”hÌ)�”}”(hŒ+Submit read for a batch of unlocked buffers”h]”hŒ+Submit read for a batch of unlocked buffers”…”�”}”(hjÆ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´M‹ hjÃ?h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj.>h²hh³jG>h´M‹ ubeh}”(h]”h ]”(jÂŒfunction”eh"]”h$]”h&]”jAjÂjBjÞ?jCjÞ?jD‰jE‰jF‰uh1hýh²hhhÛh³Nh´NubjH)�”}”(hX**Parameters** ``int nr`` entry number of the buffer batch ``struct buffer_head *bhs[]`` a batch of struct buffer_head ``blk_opf_t op_flags`` appending REQ_OP_* flags besides REQ_OP_READ ``bool force_lock`` force to get a lock on the buffer if set, otherwise drops any buffer that cannot lock. **Description** Returns zero on success or don't wait, and -EIO on error.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”jR)�”}”(hjè?h]”hŒ Parameters”…”�”}”(hjê?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjæ?ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´M� hjâ?ubjh)�”}”(hhh]”(jm)�”}”(hŒ,``int nr`` entry number of the buffer batch ”h]”(js)�”}”(hŒ ``int nr``”h]”jy)�”}”(hj@h]”hŒint nr”…”�”}”(hj @h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´MŒ hj@ubj�)�”}”(hhh]”hÌ)�”}”(hŒ entry number of the buffer batch”h]”hŒ entry number of the buffer batch”…”�”}”(hj @h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j@h´MŒ hj@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jŽhj@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jlh³j@h´MŒ hjþ?ubjm)�”}”(hŒ<``struct buffer_head *bhs[]`` a batch of struct buffer_head ”h]”(js)�”}”(hŒ``struct buffer_head *bhs[]``”h]”jy)�”}”(hj@@h]”hŒstruct buffer_head *bhs[]”…”�”}”(hjB@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj>@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´M� hj:@ubj�)�”}”(hhh]”hÌ)�”}”(hŒa batch of struct buffer_head”h]”hŒa batch of struct buffer_head”…”�”}”(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&]”uh1jlh³jU@h´M� hjþ?ubjm)�”}”(hŒD``blk_opf_t op_flags`` appending REQ_OP_* flags besides REQ_OP_READ ”h]”(js)�”}”(hŒ``blk_opf_t op_flags``”h]”jy)�”}”(hjy@h]”hŒblk_opf_t op_flags”…”�”}”(hj{@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhjw@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´MŽ hjs@ubj�)�”}”(hhh]”hÌ)�”}”(hŒ,appending REQ_OP_* flags besides REQ_OP_READ”h]”hŒ,appending REQ_OP_* flags besides REQ_OP_READ”…”�”}”(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&]”uh1jlh³jŽ@h´MŽ hjþ?ubjm)�”}”(hŒk``bool force_lock`` force to get a lock on the buffer if set, otherwise drops any buffer that cannot lock. ”h]”(js)�”}”(hŒ``bool force_lock``”h]”jy)�”}”(hj²@h]”hŒbool force_lock”…”�”}”(hj´@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jxhj°@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´M� hj¬@ubj�)�”}”(hhh]”hÌ)�”}”(hŒVforce to get a lock on the buffer if set, otherwise drops any buffer that cannot lock.”h]”hŒVforce to get a lock on the buffer if set, otherwise drops any buffer that cannot lock.”…”�”}”(hjË@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´M� hjÈ@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jŽhj¬@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jlh³jÇ@h´M� hjþ?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jghjâ?ubhÌ)�”}”(hŒ**Description**”h]”jR)�”}”(hjî@h]”hŒ Description”…”�”}”(hjð@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jQhjì@ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´M’ hjâ?ubhÌ)�”}”(hŒ9Returns zero on success or don't wait, and -EIO on error.”h]”hŒ;Returns zero on success or don’t wait, and -EIO on error.”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ŒN/var/lib/git/docbuild/linux/Documentation/filesystems/buffer:11: ./fs/buffer.c”h´M‘ hjâ?ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jGhhÛh²hh³Nh´Nubeh}”(h]”Œ functions”ah ]”h"]”Œ functions”ah$]”h&]”uh1hµhh·h²hh³hÊh´Kubeh}”(h]”Œ buffer-heads”ah ]”h"]”Œ buffer heads”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”jMAŒ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'Aj$AjAjAuŒ nametypes”}”(j'A‰jA‰uh}”(j$Ah·jAhÛhûjjjjj jÎjÓjvj{j j jŒ j‘ jµjºj®j³jj jˆj�jwj|jøjýjyj~jújÿj«j°jÕ!jÚ!j‹$j�$j&j &j®'j³'jA)jF)jÄ+jÉ+j)/j./jå2jê2j‰5jŽ5j8j 8j<:jA:j½;jÂ;j,>j1>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.