€•CŒ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/driver-api/target”Œ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/driver-api/target”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ%/translations/it_IT/driver-api/target”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ%/translations/ja_JP/driver-api/target”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ%/translations/ko_KR/driver-api/target”Œ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/driver-api/target”Œ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/driver-api/target”Œ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Œ!target and iSCSI Interfaces Guide”h]”hŒ!target and iSCSI Interfaces Guide”…”�”}”(hh¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhh·h²hh³Œ?/var/lib/git/docbuild/linux/Documentation/driver-api/target.rst”h´Kubh¶)�”}”(hhh]”(h»)�”}”(hŒIntroduction and Overview”h]”hŒIntroduction and Overview”…”�”}”(hhÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhhËh²hh³hÊh´KubhŒ paragraph”“”)�”}”(hŒTBD”h]”hŒTBD”…”�”}”(hhÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´KhhËh²hubeh}”(h]”Œintroduction-and-overview”ah ]”h"]”Œintroduction and overview”ah$]”h&]”uh1hµhh·h²hh³hÊh´Kubh¶)�”}”(hhh]”(h»)�”}”(hŒTarget core device interfaces”h]”hŒTarget core device interfaces”…”�”}”(hh÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhhôh²hh³hÊh´K ubhÝ)�”}”(hŒkThis section is blank because no kerneldoc comments have been added to drivers/target/target_core_device.c.”h]”hŒkThis section is blank because no kerneldoc comments have been added to drivers/target/target_core_device.c.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´K hhôh²hubeh}”(h]”Œtarget-core-device-interfaces”ah ]”h"]”Œtarget core device interfaces”ah$]”h&]”uh1hµhh·h²hh³hÊh´K ubh¶)�”}”(hhh]”(h»)�”}”(hŒ Target core transport interfaces”h]”hŒ Target core transport interfaces”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjh²hh³hÊh´KubhŒindex”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(Œsingle”Œ#transport_init_session (C function)”Œc.transport_init_session”hNt”auh1j,hjh²hh³Nh´NubhŒdesc”“”)�”}”(hhh]”(hŒdesc_signature”“”)�”}”(hŒ8void transport_init_session (struct se_session *se_sess)”h]”hŒdesc_signature_line”“”)�”}”(hŒ7void transport_init_session(struct se_session *se_sess)”h]”(hŒdesc_sig_keyword_type”“”)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”Œkt”ah"]”h$]”h&]”uh1jNhjJh²hh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´MubhŒdesc_sig_space”“”)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”Œw”ah"]”h$]”h&]”uh1j`hjJh²hh³j_h´MubhŒ desc_name”“”)�”}”(hŒtransport_init_session”h]”hŒ desc_sig_name”“”)�”}”(hŒtransport_init_session”h]”hŒtransport_init_session”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”Œn”ah"]”h$]”h&]”uh1jwhjsubah}”(h]”h ]”(Œsig-name”Œdescname”eh"]”h$]”h&]”Œ xml:space”Œpreserve”uh1jqhjJh²hh³j_h´MubhŒdesc_parameterlist”“”)�”}”(hŒ(struct se_session *se_sess)”h]”hŒdesc_parameter”“”)�”}”(hŒstruct se_session *se_sess”h]”(hŒdesc_sig_keyword”“”)�”}”(hŒstruct”h]”hŒstruct”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”Œk”ah"]”h$]”h&]”uh1jžhjšubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjšubh)�”}”(hhh]”jx)�”}”(hŒ se_session”h]”hŒ se_session”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj½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×j{sbŒc.transport_init_session”†”asbuh1hhjšubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjšubhŒdesc_sig_punctuation”“”)�”}”(hŒ*”h]”hŒ*”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”Œp”ah"]”h$]”h&]”uh1j÷hjšubjx)�”}”(hŒse_sess”h]”hŒse_sess”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjšubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj”ubah}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hjJh²hh³j_h´Mubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘Œ add_permalink”ˆuh1jHŒsphinx_line_type”Œ declarator”hjDh²hh³j_h´Mubah}”(h]”j;ah ]”(Œsig”Œ sig-object”eh"]”h$]”h&]”Œ is_multiline”ˆŒ _toc_parts”)Œ _toc_name”huh1jBh³j_h´Mhj?h²hubhŒ desc_content”“”)�”}”(hhh]”hÝ)�”}”(hŒinitialize a session object”h]”hŒinitialize a session object”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´Mhj9h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj?h²hh³j_h´Mubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”Œdomain”jÕŒobjtype”jTŒdesctype”jTŒnoindex”‰Œ noindexentry”‰Œnocontentsentry”‰uh1j=h²hhjh³Nh´NubhŒ container”“”)�”}”(hŒª**Parameters** ``struct se_session *se_sess`` Session object pointer. **Description** The caller must have zero-initialized **se_sess** before calling this function.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”hŒstrong”“”)�”}”(hjfh]”hŒ Parameters”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjdubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´Mhj`ubhŒdefinition_list”“”)�”}”(hhh]”hŒdefinition_list_item”“”)�”}”(hŒ7``struct se_session *se_sess`` Session object pointer. ”h]”(hŒterm”“”)�”}”(hŒ``struct se_session *se_sess``”h]”hŒliteral”“”)�”}”(hj�h]”hŒstruct se_session *se_sess”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´Mhj…ubhŒ definition”“”)�”}”(hhh]”hÝ)�”}”(hŒSession object pointer.”h]”hŒSession object pointer.”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j¤h´Mhj§ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j¤h´Mhj€ubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj`ubhÝ)�”}”(hŒ**Description**”h]”ji)�”}”(hjÌh]”hŒ Description”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´Mhj`ubhÝ)�”}”(hŒOThe caller must have zero-initialized **se_sess** before calling this function.”h]”(hŒ&The caller must have zero-initialized ”…”�”}”(hjâh²hh³Nh´Nubji)�”}”(hŒ **se_sess**”h]”hŒse_sess”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjâubhŒ before calling this function.”…”�”}”(hjâh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´Mhj`ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hjh²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œ$transport_alloc_session (C function)”Œc.transport_alloc_session”hNt”auh1j,hjh²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒNstruct se_session * transport_alloc_session (enum target_prot_op sup_prot_ops)”h]”jI)�”}”(hŒLstruct se_session *transport_alloc_session(enum target_prot_op sup_prot_ops)”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjh²hh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´Mubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjh²hh³j0h´Mubh)�”}”(hhh]”jx)�”}”(hŒ se_session”h]”hŒ se_session”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj?ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jDŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j׌transport_alloc_session”sbŒc.transport_alloc_session”†”asbuh1hhjh²hh³j0h´Mubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjh²hh³j0h´Mubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjh²hh³j0h´Mubjr)�”}”(hŒtransport_alloc_session”h]”jx)�”}”(hj`h]”hŒtransport_alloc_session”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj~ubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhjh²hh³j0h´Mubj“)�”}”(hŒ"(enum target_prot_op sup_prot_ops)”h]”j™)�”}”(hŒ enum target_prot_op sup_prot_ops”h]”(jŸ)�”}”(hŒenum”h]”hŒenum”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhj™ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj™ubh)�”}”(hhh]”jx)�”}”(hŒtarget_prot_op”h]”hŒtarget_prot_op”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj¹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j¾Œmodname”NŒ classname”NjÛjÞ)�”}”já]”j^Œc.transport_alloc_session”†”asbuh1hhj™ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj™ubjx)�”}”(hŒ sup_prot_ops”h]”hŒ sup_prot_ops”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj™ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj•ubah}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hjh²hh³j0h´Mubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hjh²hh³j0h´Mubah}”(h]”jah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³j0h´Mhjh²hubj8)�”}”(hhh]”hÝ)�”}”(hŒ+allocate a session object and initialize it”h]”hŒ+allocate a session object and initialize it”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´Mhjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hjh²hh³j0h´Mubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYj*jZj*j[‰j\‰j]‰uh1j=h²hhjh³Nh´Nubj_)�”}”(hŒm**Parameters** ``enum target_prot_op sup_prot_ops`` bitmask that defines which T10-PI modes are supported.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hj4h]”hŒ Parameters”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M"hj.ubj)�”}”(hhh]”j„)�”}”(hŒ[``enum target_prot_op sup_prot_ops`` bitmask that defines which T10-PI modes are supported.”h]”(jŠ)�”}”(hŒ$``enum target_prot_op sup_prot_ops``”h]”j�)�”}”(hjSh]”hŒ enum target_prot_op sup_prot_ops”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjQubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M$hjMubj¦)�”}”(hhh]”hÝ)�”}”(hŒ6bitmask that defines which T10-PI modes are supported.”h]”hŒ6bitmask that defines which T10-PI modes are supported.”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´Mhjiubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjMubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jhh´M$hjJubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj.ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hjh²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œ)transport_alloc_session_tags (C function)”Œc.transport_alloc_session_tags”hNt”auh1j,hjh²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒjint transport_alloc_session_tags (struct se_session *se_sess, unsigned int tag_num, unsigned int tag_size)”h]”jI)�”}”(hŒiint transport_alloc_session_tags(struct se_session *se_sess, unsigned int tag_num, unsigned int tag_size)”h]”(jO)�”}”(hŒint”h]”hŒint”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj©h²hh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M3ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj©h²hh³j»h´M3ubjr)�”}”(hŒtransport_alloc_session_tags”h]”jx)�”}”(hŒtransport_alloc_session_tags”h]”hŒtransport_alloc_session_tags”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÊubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhj©h²hh³j»h´M3ubj“)�”}”(hŒI(struct se_session *se_sess, unsigned int tag_num, unsigned int tag_size)”h]”(j™)�”}”(hŒstruct se_session *se_sess”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjæubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjæubh)�”}”(hhh]”jx)�”}”(hŒ se_session”h]”hŒ se_session”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j Œmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×jÐsbŒc.transport_alloc_session_tags”†”asbuh1hhjæubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjæubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjæubjx)�”}”(hŒse_sess”h]”hŒse_sess”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjæubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjâubj™)�”}”(hŒunsigned int tag_num”h]”(jO)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjXubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjXubjO)�”}”(hŒint”h]”hŒint”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjXubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjXubjx)�”}”(hŒtag_num”h]”hŒtag_num”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjXubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjâubj™)�”}”(hŒunsigned int tag_size”h]”(jO)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj©ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj©ubjO)�”}”(hŒint”h]”hŒint”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj©ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj©ubjx)�”}”(hŒtag_size”h]”hŒtag_size”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj©ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjâubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hj©h²hh³j»h´M3ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hj¥h²hh³j»h´M3ubah}”(h]”j ah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³j»h´M3hj¢h²hubj8)�”}”(hhh]”hÝ)�”}”(hŒ#allocate target driver private data”h]”hŒ#allocate target driver private data”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M3hj h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj¢h²hh³j»h´M3ubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYj'jZj'j[‰j\‰j]‰uh1j=h²hhjh³Nh´Nubj_)�”}”(hX**Parameters** ``struct se_session *se_sess`` Session pointer. ``unsigned int tag_num`` Maximum number of in-flight commands between initiator and target. ``unsigned int tag_size`` Size in bytes of the private data a target driver associates with each command.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hj1h]”hŒ Parameters”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M7hj+ubj)�”}”(hhh]”(j„)�”}”(hŒ0``struct se_session *se_sess`` Session pointer. ”h]”(jŠ)�”}”(hŒ``struct se_session *se_sess``”h]”j�)�”}”(hjPh]”hŒstruct se_session *se_sess”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjNubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M4hjJubj¦)�”}”(hhh]”hÝ)�”}”(hŒSession pointer.”h]”hŒSession pointer.”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jeh´M4hjfubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjJubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jeh´M4hjGubj„)�”}”(hŒ\``unsigned int tag_num`` Maximum number of in-flight commands between initiator and target. ”h]”(jŠ)�”}”(hŒ``unsigned int tag_num``”h]”j�)�”}”(hj‰h]”hŒunsigned int tag_num”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M5hjƒubj¦)�”}”(hhh]”hÝ)�”}”(hŒBMaximum number of in-flight commands between initiator and target.”h]”hŒBMaximum number of in-flight commands between initiator and target.”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jžh´M5hjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jžh´M5hjGubj„)�”}”(hŒi``unsigned int tag_size`` Size in bytes of the private data a target driver associates with each command.”h]”(jŠ)�”}”(hŒ``unsigned int tag_size``”h]”j�)�”}”(hjÂh]”hŒunsigned int tag_size”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M6hj¼ubj¦)�”}”(hhh]”hÝ)�”}”(hŒOSize in bytes of the private data a target driver associates with each command.”h]”hŒOSize in bytes of the private data a target driver associates with each command.”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j×h´M6hjØubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj¼ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j×h´M6hjGubeh}”(h]”h ]”h"]”h$]”h&]”uh1j~hj+ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hjh²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œtarget_init_cmd (C function)”Œc.target_init_cmd”hNt”auh1j,hjh²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒ¨int target_init_cmd (struct se_cmd *se_cmd, struct se_session *se_sess, unsigned char *sense, u64 unpacked_lun, u32 data_length, int task_attr, int data_dir, int flags)”h]”jI)�”}”(hŒ§int target_init_cmd(struct se_cmd *se_cmd, struct se_session *se_sess, unsigned char *sense, u64 unpacked_lun, u32 data_length, int task_attr, int data_dir, int flags)”h]”(jO)�”}”(hŒint”h]”hŒint”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjh²hh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M°ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjh²hh³j)h´M°ubjr)�”}”(hŒtarget_init_cmd”h]”jx)�”}”(hŒtarget_init_cmd”h]”hŒtarget_init_cmd”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj8ubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhjh²hh³j)h´M°ubj“)�”}”(hŒ”(struct se_cmd *se_cmd, struct se_session *se_sess, unsigned char *sense, u64 unpacked_lun, u32 data_length, int task_attr, int data_dir, int flags)”h]”(j™)�”}”(hŒstruct se_cmd *se_cmd”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjTubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjTubh)�”}”(hhh]”jx)�”}”(hŒse_cmd”h]”hŒse_cmd”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjsubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jxŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×j>sbŒc.target_init_cmd”†”asbuh1hhjTubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjTubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjTubjx)�”}”(hŒse_cmd”h]”hŒse_cmd”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjTubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjPubj™)�”}”(hŒstruct se_session *se_sess”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjÆubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjÆubh)�”}”(hhh]”jx)�”}”(hŒ se_session”h]”hŒ se_session”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjåubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jêŒmodname”NŒ classname”NjÛjÞ)�”}”já]”j’Œc.target_init_cmd”†”asbuh1hhjÆubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjÆubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjÆubjx)�”}”(hŒse_sess”h]”hŒse_sess”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjPubj™)�”}”(hŒunsigned char *sense”h]”(jO)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj6ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj6ubjO)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj6ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj6ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj6ubjx)�”}”(hŒsense”h]”hŒsense”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjPubj™)�”}”(hŒu64 unpacked_lun”h]”(h)�”}”(hhh]”jx)�”}”(hŒu64”h]”hŒu64”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj˜ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j�Œmodname”NŒ classname”NjÛjÞ)�”}”já]”j’Œc.target_init_cmd”†”asbuh1hhj”ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj”ubjx)�”}”(hŒ unpacked_lun”h]”hŒ unpacked_lun”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj”ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjPubj™)�”}”(hŒu32 data_length”h]”(h)�”}”(hhh]”jx)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjàubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jåŒmodname”NŒ classname”NjÛjÞ)�”}”já]”j’Œc.target_init_cmd”†”asbuh1hhjÜubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjÜubjx)�”}”(hŒ data_length”h]”hŒ data_length”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÜubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjPubj™)�”}”(hŒ int task_attr”h]”(jO)�”}”(hŒint”h]”hŒint”…”�”}”(hj( h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj$ ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6 h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj$ ubjx)�”}”(hŒ task_attr”h]”hŒ task_attr”…”�”}”(hjD h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj$ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjPubj™)�”}”(hŒ int data_dir”h]”(jO)�”}”(hŒint”h]”hŒint”…”�”}”(hj] h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjY ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjk h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjY ubjx)�”}”(hŒdata_dir”h]”hŒdata_dir”…”�”}”(hjy h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjY ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjPubj™)�”}”(hŒ int flags”h]”(jO)�”}”(hŒint”h]”hŒint”…”�”}”(hj’ h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjŽ ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj  h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjŽ ubjx)�”}”(hŒflags”h]”hŒflags”…”�”}”(hj® h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjŽ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjPubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hjh²hh³j)h´M°ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hjh²hh³j)h´M°ubah}”(h]”jah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³j)h´M°hjh²hubj8)�”}”(hhh]”hÝ)�”}”(hŒinitialize se_cmd”h]”hŒinitialize se_cmd”…”�”}”(hjØ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M°hjÕ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hjh²hh³j)h´M°ubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYjð jZjð j[‰j\‰j]‰uh1j=h²hhjh³Nh´Nubj_)�”}”(hX9**Parameters** ``struct se_cmd *se_cmd`` command descriptor to init ``struct se_session *se_sess`` associated se_sess for endpoint ``unsigned char *sense`` pointer to SCSI sense buffer ``u64 unpacked_lun`` unpacked LUN to reference for struct se_lun ``u32 data_length`` fabric expected data transfer length ``int task_attr`` SAM task attribute ``int data_dir`` DMA data direction ``int flags`` flags for command submission from target_sc_flags_tables **Description** Task tags are supported if the caller has set **se_cmd->tag**. If the fabric driver calls target_stop_session, then it must check the return code and handle failures. This will never fail for other drivers, and the return code can be ignored. **Return** - less than zero to signal active I/O shutdown failure. - zero on success.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hjú h]”hŒ Parameters”…”�”}”(hjü h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjø ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M´hjô ubj)�”}”(hhh]”(j„)�”}”(hŒ5``struct se_cmd *se_cmd`` command descriptor to init ”h]”(jŠ)�”}”(hŒ``struct se_cmd *se_cmd``”h]”j�)�”}”(hj h]”hŒstruct se_cmd *se_cmd”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M±hj ubj¦)�”}”(hhh]”hÝ)�”}”(hŒcommand descriptor to init”h]”hŒcommand descriptor to init”…”�”}”(hj2 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j. h´M±hj/ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j. h´M±hj ubj„)�”}”(hŒ?``struct se_session *se_sess`` associated se_sess for endpoint ”h]”(jŠ)�”}”(hŒ``struct se_session *se_sess``”h]”j�)�”}”(hjR h]”hŒstruct se_session *se_sess”…”�”}”(hjT h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjP ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M²hjL ubj¦)�”}”(hhh]”hÝ)�”}”(hŒassociated se_sess for endpoint”h]”hŒassociated se_sess for endpoint”…”�”}”(hjk h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jg h´M²hjh ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjL ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jg h´M²hj ubj„)�”}”(hŒ6``unsigned char *sense`` pointer to SCSI sense buffer ”h]”(jŠ)�”}”(hŒ``unsigned char *sense``”h]”j�)�”}”(hj‹ h]”hŒunsigned char *sense”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‰ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M³hj… ubj¦)�”}”(hhh]”hÝ)�”}”(hŒpointer to SCSI sense buffer”h]”hŒpointer to SCSI sense buffer”…”�”}”(hj¤ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j  h´M³hj¡ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj… ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j  h´M³hj ubj„)�”}”(hŒA``u64 unpacked_lun`` unpacked LUN to reference for struct se_lun ”h]”(jŠ)�”}”(hŒ``u64 unpacked_lun``”h]”j�)�”}”(hjÄ h]”hŒu64 unpacked_lun”…”�”}”(hjÆ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M´hj¾ ubj¦)�”}”(hhh]”hÝ)�”}”(hŒ+unpacked LUN to reference for struct se_lun”h]”hŒ+unpacked LUN to reference for struct se_lun”…”�”}”(hjÝ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÙ h´M´hjÚ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj¾ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jÙ h´M´hj ubj„)�”}”(hŒ9``u32 data_length`` fabric expected data transfer length ”h]”(jŠ)�”}”(hŒ``u32 data_length``”h]”j�)�”}”(hjý h]”hŒu32 data_length”…”�”}”(hjÿ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjû ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´Mµhj÷ ubj¦)�”}”(hhh]”hÝ)�”}”(hŒ$fabric expected data transfer length”h]”hŒ$fabric expected data transfer length”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j h´Mµhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj÷ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j h´Mµhj ubj„)�”}”(hŒ%``int task_attr`` SAM task attribute ”h]”(jŠ)�”}”(hŒ``int task_attr``”h]”j�)�”}”(hj6 h]”hŒ int task_attr”…”�”}”(hj8 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj4 ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M¶hj0 ubj¦)�”}”(hhh]”hÝ)�”}”(hŒSAM task attribute”h]”hŒSAM task attribute”…”�”}”(hjO h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jK h´M¶hjL ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj0 ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jK h´M¶hj ubj„)�”}”(hŒ$``int data_dir`` DMA data direction ”h]”(jŠ)�”}”(hŒ``int data_dir``”h]”j�)�”}”(hjo h]”hŒ int data_dir”…”�”}”(hjq h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjm ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M·hji ubj¦)�”}”(hhh]”hÝ)�”}”(hŒDMA data direction”h]”hŒDMA data direction”…”�”}”(hjˆ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j„ h´M·hj… ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hji ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j„ h´M·hj ubj„)�”}”(hŒG``int flags`` flags for command submission from target_sc_flags_tables ”h]”(jŠ)�”}”(hŒ ``int flags``”h]”j�)�”}”(hj¨ h]”hŒ int flags”…”�”}”(hjª h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¦ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M¸hj¢ ubj¦)�”}”(hhh]”hÝ)�”}”(hŒ8flags for command submission from target_sc_flags_tables”h]”hŒ8flags for command submission from target_sc_flags_tables”…”�”}”(hjÁ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j½ h´M¸hj¾ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj¢ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j½ h´M¸hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j~hjô ubhÝ)�”}”(hŒ**Description**”h]”ji)�”}”(hjã h]”hŒ Description”…”�”}”(hjå h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjá ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´Mºhjô ubhÝ)�”}”(hŒ>Task tags are supported if the caller has set **se_cmd->tag**.”h]”(hŒ.Task tags are supported if the caller has set ”…”�”}”(hjù h²hh³Nh´Nubji)�”}”(hŒ**se_cmd->tag**”h]”hŒ se_cmd->tag”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjù ubhŒ.”…”�”}”(hjù h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M¹hjô ubhÝ)�”}”(hŒ³If the fabric driver calls target_stop_session, then it must check the return code and handle failures. This will never fail for other drivers, and the return code can be ignored.”h]”hŒ³If the fabric driver calls target_stop_session, then it must check the return code and handle failures. This will never fail for other drivers, and the return code can be ignored.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M¼hjô ubhÝ)�”}”(hŒ **Return**”h]”ji)�”}”(hj+ h]”hŒReturn”…”�”}”(hj- h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj) ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´MÀhjô ubhŒ bullet_list”“”)�”}”(hhh]”(hŒ list_item”“”)�”}”(hŒ5less than zero to signal active I/O shutdown failure.”h]”hÝ)�”}”(hjJ h]”hŒ5less than zero to signal active I/O shutdown failure.”…”�”}”(hjL h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M¼hjH ubah}”(h]”h ]”h"]”h$]”h&]”uh1jF hjC ubjG )�”}”(hŒzero on success.”h]”hÝ)�”}”(hjb h]”hŒzero on success.”…”�”}”(hjd h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M½hj` ubah}”(h]”h ]”h"]”h$]”h&]”uh1jF hjC ubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1jA h³jY h´M¼hjô ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hjh²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œtarget_submit_prep (C function)”Œc.target_submit_prep”hNt”auh1j,hjh²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒÙint target_submit_prep (struct se_cmd *se_cmd, unsigned char *cdb, struct scatterlist *sgl, u32 sgl_count, struct scatterlist *sgl_bidi, u32 sgl_bidi_count, struct scatterlist *sgl_prot, u32 sgl_prot_count, gfp_t gfp)”h]”jI)�”}”(hŒØint target_submit_prep(struct se_cmd *se_cmd, unsigned char *cdb, struct scatterlist *sgl, u32 sgl_count, struct scatterlist *sgl_bidi, u32 sgl_bidi_count, struct scatterlist *sgl_prot, u32 sgl_prot_count, gfp_t gfp)”h]”(jO)�”}”(hŒint”h]”hŒint”…”�”}”(hj  h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjœ h²hh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´Mðubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯ h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjœ h²hh³j® h´Mðubjr)�”}”(hŒtarget_submit_prep”h]”jx)�”}”(hŒtarget_submit_prep”h]”hŒtarget_submit_prep”…”�”}”(hjÁ h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj½ ubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhjœ h²hh³j® h´Mðubj“)�”}”(hŒÂ(struct se_cmd *se_cmd, unsigned char *cdb, struct scatterlist *sgl, u32 sgl_count, struct scatterlist *sgl_bidi, u32 sgl_bidi_count, struct scatterlist *sgl_prot, u32 sgl_prot_count, gfp_t gfp)”h]”(j™)�”}”(hŒstruct se_cmd *se_cmd”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hjÝ h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjÙ ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjê h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjÙ ubh)�”}”(hhh]”jx)�”}”(hŒse_cmd”h]”hŒse_cmd”…”�”}”(hjû h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjø ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jý Œmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×jà sbŒc.target_submit_prep”†”asbuh1hhjÙ ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjÙ ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj) h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjÙ ubjx)�”}”(hŒse_cmd”h]”hŒse_cmd”…”�”}”(hj6 h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÙ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjÕ ubj™)�”}”(hŒunsigned char *cdb”h]”(jO)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjO h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjK ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj] h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjK ubjO)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjk h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjK ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjy h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjK ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj‡ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjK ubjx)�”}”(hŒcdb”h]”hŒcdb”…”�”}”(hj” h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjK ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjÕ ubj™)�”}”(hŒstruct scatterlist *sgl”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hj­ h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhj© ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjº h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj© ubh)�”}”(hhh]”jx)�”}”(hŒ scatterlist”h]”hŒ scatterlist”…”�”}”(hjË h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÈ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jÍ Œmodname”NŒ classname”NjÛjÞ)�”}”já]”j Œc.target_submit_prep”†”asbuh1hhj© ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjé h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj© ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj÷ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj© ubjx)�”}”(hŒsgl”h]”hŒsgl”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj© ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjÕ ubj™)�”}”(hŒ u32 sgl_count”h]”(h)�”}”(hhh]”jx)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j"Œmodname”NŒ classname”NjÛjÞ)�”}”já]”j Œc.target_submit_prep”†”asbuh1hhjubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjubjx)�”}”(hŒ sgl_count”h]”hŒ sgl_count”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjÕ ubj™)�”}”(hŒstruct scatterlist *sgl_bidi”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjaubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjaubh)�”}”(hhh]”jx)�”}”(hŒ scatterlist”h]”hŒ scatterlist”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj€ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j…Œmodname”NŒ classname”NjÛjÞ)�”}”já]”j Œc.target_submit_prep”†”asbuh1hhjaubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjaubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjaubjx)�”}”(hŒsgl_bidi”h]”hŒsgl_bidi”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjaubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjÕ ubj™)�”}”(hŒu32 sgl_bidi_count”h]”(h)�”}”(hhh]”jx)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÕubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jÚŒmodname”NŒ classname”NjÛjÞ)�”}”já]”j Œc.target_submit_prep”†”asbuh1hhjÑubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjÑubjx)�”}”(hŒsgl_bidi_count”h]”hŒsgl_bidi_count”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÑubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjÕ ubj™)�”}”(hŒstruct scatterlist *sgl_prot”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjubh)�”}”(hhh]”jx)�”}”(hŒ scatterlist”h]”hŒ scatterlist”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j=Œmodname”NŒ classname”NjÛjÞ)�”}”já]”j Œc.target_submit_prep”†”asbuh1hhjubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjubjx)�”}”(hŒsgl_prot”h]”hŒsgl_prot”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjÕ ubj™)�”}”(hŒu32 sgl_prot_count”h]”(h)�”}”(hhh]”jx)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j’Œmodname”NŒ classname”NjÛjÞ)�”}”já]”j Œc.target_submit_prep”†”asbuh1hhj‰ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj‰ubjx)�”}”(hŒsgl_prot_count”h]”hŒsgl_prot_count”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj‰ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjÕ ubj™)�”}”(hŒ gfp_t gfp”h]”(h)�”}”(hhh]”jx)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÕubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jÚŒmodname”NŒ classname”NjÛjÞ)�”}”já]”j Œc.target_submit_prep”†”asbuh1hhjÑubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjÑubjx)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÑubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjÕ ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hjœ h²hh³j® h´Mðubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hj˜ h²hh³j® h´Mðubah}”(h]”j“ ah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³j® h´Mðhj• h²hubj8)�”}”(hhh]”hÝ)�”}”(hŒprepare cmd for submission”h]”hŒprepare cmd for submission”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´Mðhj+h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj• h²hh³j® h´Mðubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYjFjZjFj[‰j\‰j]‰uh1j=h²hhjh³Nh´Nubj_)�”}”(hX**Parameters** ``struct se_cmd *se_cmd`` command descriptor to prep ``unsigned char *cdb`` pointer to SCSI CDB ``struct scatterlist *sgl`` struct scatterlist memory for unidirectional mapping ``u32 sgl_count`` scatterlist count for unidirectional mapping ``struct scatterlist *sgl_bidi`` struct scatterlist memory for bidirectional READ mapping ``u32 sgl_bidi_count`` scatterlist count for bidirectional READ mapping ``struct scatterlist *sgl_prot`` struct scatterlist memory protection information ``u32 sgl_prot_count`` scatterlist count for protection information ``gfp_t gfp`` gfp allocation type **Return** - less than zero to signal failure. - zero on success. **Description** If failure is returned, lio will the callers queue_status to complete the cmd.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hjPh]”hŒ Parameters”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjNubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´MôhjJubj)�”}”(hhh]”(j„)�”}”(hŒ5``struct se_cmd *se_cmd`` command descriptor to prep ”h]”(jŠ)�”}”(hŒ``struct se_cmd *se_cmd``”h]”j�)�”}”(hjoh]”hŒstruct se_cmd *se_cmd”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjmubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´Mñhjiubj¦)�”}”(hhh]”hÝ)�”}”(hŒcommand descriptor to prep”h]”hŒcommand descriptor to prep”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j„h´Mñhj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjiubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j„h´Mñhjfubj„)�”}”(hŒ+``unsigned char *cdb`` pointer to SCSI CDB ”h]”(jŠ)�”}”(hŒ``unsigned char *cdb``”h]”j�)�”}”(hj¨h]”hŒunsigned char *cdb”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´Mòhj¢ubj¦)�”}”(hhh]”hÝ)�”}”(hŒpointer to SCSI CDB”h]”hŒpointer to SCSI CDB”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j½h´Mòhj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j½h´Mòhjfubj„)�”}”(hŒQ``struct scatterlist *sgl`` struct scatterlist memory for unidirectional mapping ”h]”(jŠ)�”}”(hŒ``struct scatterlist *sgl``”h]”j�)�”}”(hjáh]”hŒstruct scatterlist *sgl”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjßubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´MóhjÛubj¦)�”}”(hhh]”hÝ)�”}”(hŒ4struct scatterlist memory for unidirectional mapping”h]”hŒ4struct scatterlist memory for unidirectional mapping”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jöh´Móhj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jöh´Móhjfubj„)�”}”(hŒ?``u32 sgl_count`` scatterlist count for unidirectional mapping ”h]”(jŠ)�”}”(hŒ``u32 sgl_count``”h]”j�)�”}”(hjh]”hŒ u32 sgl_count”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´Môhjubj¦)�”}”(hhh]”hÝ)�”}”(hŒ,scatterlist count for unidirectional mapping”h]”hŒ,scatterlist count for unidirectional mapping”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j/h´Môhj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j/h´Môhjfubj„)�”}”(hŒZ``struct scatterlist *sgl_bidi`` struct scatterlist memory for bidirectional READ mapping ”h]”(jŠ)�”}”(hŒ ``struct scatterlist *sgl_bidi``”h]”j�)�”}”(hjSh]”hŒstruct scatterlist *sgl_bidi”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjQubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´MõhjMubj¦)�”}”(hhh]”hÝ)�”}”(hŒ8struct scatterlist memory for bidirectional READ mapping”h]”hŒ8struct scatterlist memory for bidirectional READ mapping”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jhh´Mõhjiubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjMubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jhh´Mõhjfubj„)�”}”(hŒH``u32 sgl_bidi_count`` scatterlist count for bidirectional READ mapping ”h]”(jŠ)�”}”(hŒ``u32 sgl_bidi_count``”h]”j�)�”}”(hjŒh]”hŒu32 sgl_bidi_count”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´Möhj†ubj¦)�”}”(hhh]”hÝ)�”}”(hŒ0scatterlist count for bidirectional READ mapping”h]”hŒ0scatterlist count for bidirectional READ mapping”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j¡h´Möhj¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j¡h´Möhjfubj„)�”}”(hŒR``struct scatterlist *sgl_prot`` struct scatterlist memory protection information ”h]”(jŠ)�”}”(hŒ ``struct scatterlist *sgl_prot``”h]”j�)�”}”(hjÅh]”hŒstruct scatterlist *sgl_prot”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÃubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M÷hj¿ubj¦)�”}”(hhh]”hÝ)�”}”(hŒ0struct scatterlist memory protection information”h]”hŒ0struct scatterlist memory protection information”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÚh´M÷hjÛubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jÚh´M÷hjfubj„)�”}”(hŒD``u32 sgl_prot_count`` scatterlist count for protection information ”h]”(jŠ)�”}”(hŒ``u32 sgl_prot_count``”h]”j�)�”}”(hjþh]”hŒu32 sgl_prot_count”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjüubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´Møhjøubj¦)�”}”(hhh]”hÝ)�”}”(hŒ,scatterlist count for protection information”h]”hŒ,scatterlist count for protection information”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jh´Møhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjøubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jh´Møhjfubj„)�”}”(hŒ"``gfp_t gfp`` gfp allocation type ”h]”(jŠ)�”}”(hŒ ``gfp_t gfp``”h]”j�)�”}”(hj7h]”hŒ gfp_t gfp”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´Mùhj1ubj¦)�”}”(hhh]”hÝ)�”}”(hŒgfp allocation type”h]”hŒgfp allocation type”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jLh´MùhjMubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jLh´Mùhjfubeh}”(h]”h ]”h"]”h$]”h&]”uh1j~hjJubhÝ)�”}”(hŒ **Return**”h]”ji)�”}”(hjrh]”hŒReturn”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjpubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´MûhjJubjB )�”}”(hhh]”(jG )�”}”(hŒ!less than zero to signal failure.”h]”hÝ)�”}”(hj�h]”hŒ!less than zero to signal failure.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´Mûhj‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jF hjˆubjG )�”}”(hŒzero on success. ”h]”hÝ)�”}”(hŒzero on success.”h]”hŒzero on success.”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´Mühj£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jF hjˆubeh}”(h]”h ]”h"]”h$]”h&]”j~ j uh1jA h³jœh´MûhjJubhÝ)�”}”(hŒ**Description**”h]”ji)�”}”(hjÄh]”hŒ Description”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjÂubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´MþhjJubhÝ)�”}”(hŒNIf failure is returned, lio will the callers queue_status to complete the cmd.”h]”hŒNIf failure is returned, lio will the callers queue_status to complete the cmd.”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´MþhjJubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hjh²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œtarget_submit_cmd (C function)”Œc.target_submit_cmd”hNt”auh1j,hjh²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒ¿void target_submit_cmd (struct se_cmd *se_cmd, struct se_session *se_sess, unsigned char *cdb, unsigned char *sense, u64 unpacked_lun, u32 data_length, int task_attr, int data_dir, int flags)”h]”jI)�”}”(hŒ¾void target_submit_cmd(struct se_cmd *se_cmd, struct se_session *se_sess, unsigned char *cdb, unsigned char *sense, u64 unpacked_lun, u32 data_length, int task_attr, int data_dir, int flags)”h]”(jO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjh²hh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M?ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjh²hh³jh´M?ubjr)�”}”(hŒtarget_submit_cmd”h]”jx)�”}”(hŒtarget_submit_cmd”h]”hŒtarget_submit_cmd”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj&ubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhjh²hh³jh´M?ubj“)�”}”(hŒ¨(struct se_cmd *se_cmd, struct se_session *se_sess, unsigned char *cdb, unsigned char *sense, u64 unpacked_lun, u32 data_length, int task_attr, int data_dir, int flags)”h]”(j™)�”}”(hŒstruct se_cmd *se_cmd”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjBubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjBubh)�”}”(hhh]”jx)�”}”(hŒse_cmd”h]”hŒse_cmd”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjaubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jfŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×j,sbŒc.target_submit_cmd”†”asbuh1hhjBubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjBubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjBubjx)�”}”(hŒse_cmd”h]”hŒse_cmd”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjBubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj>ubj™)�”}”(hŒstruct se_session *se_sess”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhj´ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj´ubh)�”}”(hhh]”jx)�”}”(hŒ se_session”h]”hŒ se_session”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÓubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jØŒmodname”NŒ classname”NjÛjÞ)�”}”já]”j€Œc.target_submit_cmd”†”asbuh1hhj´ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj´ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj´ubjx)�”}”(hŒse_sess”h]”hŒse_sess”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj´ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj>ubj™)�”}”(hŒunsigned char *cdb”h]”(jO)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj$ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj$ubjO)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj$ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj$ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj$ubjx)�”}”(hŒcdb”h]”hŒcdb”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj$ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj>ubj™)�”}”(hŒunsigned char *sense”h]”(jO)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj‚ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj‚ubjO)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj‚ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj‚ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj‚ubjx)�”}”(hŒsense”h]”hŒsense”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj‚ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj>ubj™)�”}”(hŒu64 unpacked_lun”h]”(h)�”}”(hhh]”jx)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjäubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jéŒmodname”NŒ classname”NjÛjÞ)�”}”já]”j€Œc.target_submit_cmd”†”asbuh1hhjàubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjàubjx)�”}”(hŒ unpacked_lun”h]”hŒ unpacked_lun”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjàubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj>ubj™)�”}”(hŒu32 data_length”h]”(h)�”}”(hhh]”jx)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj,ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j1Œmodname”NŒ classname”NjÛjÞ)�”}”já]”j€Œc.target_submit_cmd”†”asbuh1hhj(ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj(ubjx)�”}”(hŒ data_length”h]”hŒ data_length”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj(ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj>ubj™)�”}”(hŒ int task_attr”h]”(jO)�”}”(hŒint”h]”hŒint”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjpubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjpubjx)�”}”(hŒ task_attr”h]”hŒ task_attr”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjpubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj>ubj™)�”}”(hŒ int data_dir”h]”(jO)�”}”(hŒint”h]”hŒint”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj¥ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj¥ubjx)�”}”(hŒdata_dir”h]”hŒdata_dir”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj¥ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj>ubj™)�”}”(hŒ int flags”h]”(jO)�”}”(hŒint”h]”hŒint”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjÚubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjÚubjx)�”}”(hŒflags”h]”hŒflags”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÚubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj>ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hjh²hh³jh´M?ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hjh²hh³jh´M?ubah}”(h]”jüah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³jh´M?hjþh²hubj8)�”}”(hhh]”hÝ)�”}”(hŒ3lookup unpacked lun and submit uninitialized se_cmd”h]”hŒ3lookup unpacked lun and submit uninitialized se_cmd”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M?hj!h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hjþh²hh³jh´M?ubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYj<jZj<j[‰j\‰j]‰uh1j=h²hhjh³Nh´Nubj_)�”}”(hX**Parameters** ``struct se_cmd *se_cmd`` command descriptor to submit ``struct se_session *se_sess`` associated se_sess for endpoint ``unsigned char *cdb`` pointer to SCSI CDB ``unsigned char *sense`` pointer to SCSI sense buffer ``u64 unpacked_lun`` unpacked LUN to reference for struct se_lun ``u32 data_length`` fabric expected data transfer length ``int task_attr`` SAM task attribute ``int data_dir`` DMA data direction ``int flags`` flags for command submission from target_sc_flags_tables **Description** Task tags are supported if the caller has set **se_cmd->tag**. This may only be called from process context, and also currently assumes internal allocation of fabric payload buffer by target-core. It also assumes interal target core SGL memory allocation. This function must only be used by drivers that do their own sync during shutdown and does not use target_stop_session. If there is a failure this function will call into the fabric driver's queue_status with a CHECK_CONDITION.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hjFh]”hŒ Parameters”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjDubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´MChj@ubj)�”}”(hhh]”(j„)�”}”(hŒ7``struct se_cmd *se_cmd`` command descriptor to submit ”h]”(jŠ)�”}”(hŒ``struct se_cmd *se_cmd``”h]”j�)�”}”(hjeh]”hŒstruct se_cmd *se_cmd”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjcubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´MAhj_ubj¦)�”}”(hhh]”hÝ)�”}”(hŒcommand descriptor to submit”h]”hŒcommand descriptor to submit”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jzh´MAhj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jzh´MAhj\ubj„)�”}”(hŒ?``struct se_session *se_sess`` associated se_sess for endpoint ”h]”(jŠ)�”}”(hŒ``struct se_session *se_sess``”h]”j�)�”}”(hjžh]”hŒstruct se_session *se_sess”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjœubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´MBhj˜ubj¦)�”}”(hhh]”hÝ)�”}”(hŒassociated se_sess for endpoint”h]”hŒassociated se_sess for endpoint”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j³h´MBhj´ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j³h´MBhj\ubj„)�”}”(hŒ+``unsigned char *cdb`` pointer to SCSI CDB ”h]”(jŠ)�”}”(hŒ``unsigned char *cdb``”h]”j�)�”}”(hj×h]”hŒunsigned char *cdb”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÕubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”•h´MChjÑubj¦)�”}”(hhh]”hÝ)�”}”(hŒpointer to SCSI CDB”h]”hŒpointer to SCSI CDB”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jìh´MChjíubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjÑubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jìh´MChj\ubj„)�”}”(hŒ6``unsigned char *sense`` pointer to SCSI sense buffer ”h]”(jŠ)�”}”(hŒ``unsigned char *sense``”h]”j�)�”}”(hjh]”hŒunsigned char *sense”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´MDhj ubj¦)�”}”(hhh]”hÝ)�”}”(hŒpointer to SCSI sense buffer”h]”hŒpointer to SCSI sense buffer”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j%h´MDhj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j%h´MDhj\ubj„)�”}”(hŒA``u64 unpacked_lun`` unpacked LUN to reference for struct se_lun ”h]”(jŠ)�”}”(hŒ``u64 unpacked_lun``”h]”j�)�”}”(hjIh]”hŒu64 unpacked_lun”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjGubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´MEhjCubj¦)�”}”(hhh]”hÝ)�”}”(hŒ+unpacked LUN to reference for struct se_lun”h]”hŒ+unpacked LUN to reference for struct se_lun”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j^h´MEhj_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjCubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j^h´MEhj\ubj„)�”}”(hŒ9``u32 data_length`` fabric expected data transfer length ”h]”(jŠ)�”}”(hŒ``u32 data_length``”h]”j�)�”}”(hj‚h]”hŒu32 data_length”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj€ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´MFhj|ubj¦)�”}”(hhh]”hÝ)�”}”(hŒ$fabric expected data transfer length”h]”hŒ$fabric expected data transfer length”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j—h´MFhj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j—h´MFhj\ubj„)�”}”(hŒ%``int task_attr`` SAM task attribute ”h]”(jŠ)�”}”(hŒ``int task_attr``”h]”j�)�”}”(hj»h]”hŒ int task_attr”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´MGhjµubj¦)�”}”(hhh]”hÝ)�”}”(hŒSAM task attribute”h]”hŒSAM task attribute”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÐh´MGhjÑubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjµubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jÐh´MGhj\ubj„)�”}”(hŒ$``int data_dir`` DMA data direction ”h]”(jŠ)�”}”(hŒ``int data_dir``”h]”j�)�”}”(hjôh]”hŒ int data_dir”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjòubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´MHhjîubj¦)�”}”(hhh]”hÝ)�”}”(hŒDMA data direction”h]”hŒDMA data direction”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j h´MHhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjîubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j h´MHhj\ubj„)�”}”(hŒG``int flags`` flags for command submission from target_sc_flags_tables ”h]”(jŠ)�”}”(hŒ ``int flags``”h]”j�)�”}”(hj-h]”hŒ int flags”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´MIhj'ubj¦)�”}”(hhh]”hÝ)�”}”(hŒ8flags for command submission from target_sc_flags_tables”h]”hŒ8flags for command submission from target_sc_flags_tables”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jBh´MIhjCubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jBh´MIhj\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j~hj@ubhÝ)�”}”(hŒ**Description**”h]”ji)�”}”(hjhh]”hŒ Description”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjfubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´MKhj@ubhÝ)�”}”(hŒ>Task tags are supported if the caller has set **se_cmd->tag**.”h]”(hŒ.Task tags are supported if the caller has set ”…”�”}”(hj~h²hh³Nh´Nubji)�”}”(hŒ**se_cmd->tag**”h]”hŒ se_cmd->tag”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj~ubhŒ.”…”�”}”(hj~h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´MJhj@ubhÝ)�”}”(hŒ…This may only be called from process context, and also currently assumes internal allocation of fabric payload buffer by target-core.”h]”hŒ…This may only be called from process context, and also currently assumes internal allocation of fabric payload buffer by target-core.”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´MLhj@ubhÝ)�”}”(hŒ:It also assumes interal target core SGL memory allocation.”h]”hŒ:It also assumes interal target core SGL memory allocation.”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´MOhj@ubhÝ)�”}”(hŒãThis function must only be used by drivers that do their own sync during shutdown and does not use target_stop_session. If there is a failure this function will call into the fabric driver's queue_status with a CHECK_CONDITION.”h]”hŒåThis function must only be used by drivers that do their own sync during shutdown and does not use target_stop_session. If there is a failure this function will call into the fabric driver’s queue_status with a CHECK_CONDITION.”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´MQhj@ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hjh²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œtarget_submit (C function)”Œc.target_submit”hNt”auh1j,hjh²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒ)int target_submit (struct se_cmd *se_cmd)”h]”jI)�”}”(hŒ(int target_submit(struct se_cmd *se_cmd)”h]”(jO)�”}”(hŒint”h]”hŒint”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjèh²hh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M´ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjèh²hh³júh´M´ubjr)�”}”(hŒ target_submit”h]”jx)�”}”(hŒ target_submit”h]”hŒ target_submit”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj ubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhjèh²hh³júh´M´ubj“)�”}”(hŒ(struct se_cmd *se_cmd)”h]”j™)�”}”(hŒstruct se_cmd *se_cmd”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhj%ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj%ubh)�”}”(hhh]”jx)�”}”(hŒse_cmd”h]”hŒse_cmd”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjDubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jIŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×jsbŒc.target_submit”†”asbuh1hhj%ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj%ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj%ubjx)�”}”(hŒse_cmd”h]”hŒse_cmd”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj%ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj!ubah}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hjèh²hh³júh´M´ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hjäh²hh³júh´M´ubah}”(h]”jßah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³júh´M´hjáh²hubj8)�”}”(hhh]”hÝ)�”}”(hŒ7perform final initialization and submit cmd to LIO core”h]”hŒ7perform final initialization and submit cmd to LIO core”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M´hj©h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hjáh²hh³júh´M´ubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYjÄjZjÄj[‰j\‰j]‰uh1j=h²hhjh³Nh´Nubj_)�”}”(hŒÒ**Parameters** ``struct se_cmd *se_cmd`` command descriptor to submit **Description** target_submit_prep or something similar must have been called on the cmd, and this must be called from process context.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hjÎh]”hŒ Parameters”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjÌubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M¸hjÈubj)�”}”(hhh]”j„)�”}”(hŒ7``struct se_cmd *se_cmd`` command descriptor to submit ”h]”(jŠ)�”}”(hŒ``struct se_cmd *se_cmd``”h]”j�)�”}”(hjíh]”hŒstruct se_cmd *se_cmd”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjëubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´Mµhjçubj¦)�”}”(hhh]”hÝ)�”}”(hŒcommand descriptor to submit”h]”hŒcommand descriptor to submit”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jh´Mµhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjçubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jh´Mµhjäubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÈubhÝ)�”}”(hŒ**Description**”h]”ji)�”}”(hj(h]”hŒ Description”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M·hjÈubhÝ)�”}”(hŒwtarget_submit_prep or something similar must have been called on the cmd, and this must be called from process context.”h]”hŒwtarget_submit_prep or something similar must have been called on the cmd, and this must be called from process context.”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M¶hjÈubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hjh²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œtarget_submit_tmr (C function)”Œc.target_submit_tmr”hNt”auh1j,hjh²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒ½int target_submit_tmr (struct se_cmd *se_cmd, struct se_session *se_sess, unsigned char *sense, u64 unpacked_lun, void *fabric_tmr_ptr, unsigned char tm_type, gfp_t gfp, u64 tag, int flags)”h]”jI)�”}”(hŒ¼int target_submit_tmr(struct se_cmd *se_cmd, struct se_session *se_sess, unsigned char *sense, u64 unpacked_lun, void *fabric_tmr_ptr, unsigned char tm_type, gfp_t gfp, u64 tag, int flags)”h]”(jO)�”}”(hŒint”h]”hŒint”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjih²hh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´MÜubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjih²hh³j{h´MÜubjr)�”}”(hŒtarget_submit_tmr”h]”jx)�”}”(hŒtarget_submit_tmr”h]”hŒtarget_submit_tmr”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjŠubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhjih²hh³j{h´MÜubj“)�”}”(hŒ§(struct se_cmd *se_cmd, struct se_session *se_sess, unsigned char *sense, u64 unpacked_lun, void *fabric_tmr_ptr, unsigned char tm_type, gfp_t gfp, u64 tag, int flags)”h]”(j™)�”}”(hŒstruct se_cmd *se_cmd”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhj¦ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj¦ubh)�”}”(hhh]”jx)�”}”(hŒse_cmd”h]”hŒse_cmd”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÅubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jÊŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×j�sbŒc.target_submit_tmr”†”asbuh1hhj¦ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj¦ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj¦ubjx)�”}”(hŒse_cmd”h]”hŒse_cmd”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj¦ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj¢ubj™)�”}”(hŒstruct se_session *se_sess”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjubh)�”}”(hhh]”jx)�”}”(hŒ se_session”h]”hŒ se_session”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj7ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j<Œmodname”NŒ classname”NjÛjÞ)�”}”já]”jäŒc.target_submit_tmr”†”asbuh1hhjubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjubjx)�”}”(hŒse_sess”h]”hŒse_sess”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj¢ubj™)�”}”(hŒunsigned char *sense”h]”(jO)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjˆubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjˆubjO)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjˆubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjˆubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjˆubjx)�”}”(hŒsense”h]”hŒsense”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjˆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj¢ubj™)�”}”(hŒu64 unpacked_lun”h]”(h)�”}”(hhh]”jx)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjêubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jïŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jäŒc.target_submit_tmr”†”asbuh1hhjæubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjæubjx)�”}”(hŒ unpacked_lun”h]”hŒ unpacked_lun”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjæubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj¢ubj™)�”}”(hŒvoid *fabric_tmr_ptr”h]”(jO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj.ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj.ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj.ubjx)�”}”(hŒfabric_tmr_ptr”h]”hŒfabric_tmr_ptr”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj.ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj¢ubj™)�”}”(hŒunsigned char tm_type”h]”(jO)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjpubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjpubjO)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjpubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjpubjx)�”}”(hŒtm_type”h]”hŒtm_type”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjpubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj¢ubj™)�”}”(hŒ gfp_t gfp”h]”(h)�”}”(hhh]”jx)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÅubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jÊŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jäŒc.target_submit_tmr”†”asbuh1hhjÁubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjÁubjx)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÁubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj¢ubj™)�”}”(hŒu64 tag”h]”(h)�”}”(hhh]”jx)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jäŒc.target_submit_tmr”†”asbuh1hhj ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj ubjx)�”}”(hŒtag”h]”hŒtag”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj¢ubj™)�”}”(hŒ int flags”h]”(jO)�”}”(hŒint”h]”hŒint”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjQubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjQubjx)�”}”(hŒflags”h]”hŒflags”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjQubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj¢ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hjih²hh³j{h´MÜubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hjeh²hh³j{h´MÜubah}”(h]”j`ah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³j{h´MÜhjbh²hubj8)�”}”(hhh]”hÝ)�”}”(hŒ@lookup unpacked lun and submit uninitialized se_cmd for TMR CDBs”h]”hŒ@lookup unpacked lun and submit uninitialized se_cmd for TMR CDBs”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´MÜhj˜h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hjbh²hh³j{h´MÜubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYj³jZj³j[‰j\‰j]‰uh1j=h²hhjh³Nh´Nubj_)�”}”(hX**Parameters** ``struct se_cmd *se_cmd`` command descriptor to submit ``struct se_session *se_sess`` associated se_sess for endpoint ``unsigned char *sense`` pointer to SCSI sense buffer ``u64 unpacked_lun`` unpacked LUN to reference for struct se_lun ``void *fabric_tmr_ptr`` fabric context for TMR req ``unsigned char tm_type`` Type of TM request ``gfp_t gfp`` gfp type for caller ``u64 tag`` referenced task tag for TMR_ABORT_TASK ``int flags`` submit cmd flags **Description** Callable from all contexts.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hj½h]”hŒ Parameters”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj»ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´Màhj·ubj)�”}”(hhh]”(j„)�”}”(hŒ7``struct se_cmd *se_cmd`` command descriptor to submit ”h]”(jŠ)�”}”(hŒ``struct se_cmd *se_cmd``”h]”j�)�”}”(hjÜh]”hŒstruct se_cmd *se_cmd”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´MßhjÖubj¦)�”}”(hhh]”hÝ)�”}”(hŒcommand descriptor to submit”h]”hŒcommand descriptor to submit”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jñh´Mßhjòubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjÖubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jñh´MßhjÓubj„)�”}”(hŒ?``struct se_session *se_sess`` associated se_sess for endpoint ”h]”(jŠ)�”}”(hŒ``struct se_session *se_sess``”h]”j�)�”}”(hjh]”hŒstruct se_session *se_sess”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´Màhjubj¦)�”}”(hhh]”hÝ)�”}”(hŒassociated se_sess for endpoint”h]”hŒassociated se_sess for endpoint”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j*h´Màhj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j*h´MàhjÓubj„)�”}”(hŒ6``unsigned char *sense`` pointer to SCSI sense buffer ”h]”(jŠ)�”}”(hŒ``unsigned char *sense``”h]”j�)�”}”(hjNh]”hŒunsigned char *sense”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjLubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´MáhjHubj¦)�”}”(hhh]”hÝ)�”}”(hŒpointer to SCSI sense buffer”h]”hŒpointer to SCSI sense buffer”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jch´Máhjdubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjHubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jch´MáhjÓubj„)�”}”(hŒA``u64 unpacked_lun`` unpacked LUN to reference for struct se_lun ”h]”(jŠ)�”}”(hŒ``u64 unpacked_lun``”h]”j�)�”}”(hj‡h]”hŒu64 unpacked_lun”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´Mâhj�ubj¦)�”}”(hhh]”hÝ)�”}”(hŒ+unpacked LUN to reference for struct se_lun”h]”hŒ+unpacked LUN to reference for struct se_lun”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jœh´Mâhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jœh´MâhjÓubj„)�”}”(hŒ4``void *fabric_tmr_ptr`` fabric context for TMR req ”h]”(jŠ)�”}”(hŒ``void *fabric_tmr_ptr``”h]”j�)�”}”(hjÀh]”hŒvoid *fabric_tmr_ptr”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´Mãhjºubj¦)�”}”(hhh]”hÝ)�”}”(hŒfabric context for TMR req”h]”hŒfabric context for TMR req”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÕh´MãhjÖubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjºubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jÕh´MãhjÓubj„)�”}”(hŒ-``unsigned char tm_type`` Type of TM request ”h]”(jŠ)�”}”(hŒ``unsigned char tm_type``”h]”j�)�”}”(hjùh]”hŒunsigned char tm_type”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´Mähjóubj¦)�”}”(hhh]”hÝ)�”}”(hŒType of TM request”h]”hŒType of TM request”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jh´Mähjubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjóubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jh´MähjÓubj„)�”}”(hŒ"``gfp_t gfp`` gfp type for caller ”h]”(jŠ)�”}”(hŒ ``gfp_t gfp``”h]”j�)�”}”(hj2h]”hŒ gfp_t gfp”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´Måhj,ubj¦)�”}”(hhh]”hÝ)�”}”(hŒgfp type for caller”h]”hŒgfp type for caller”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jGh´MåhjHubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jGh´MåhjÓubj„)�”}”(hŒ3``u64 tag`` referenced task tag for TMR_ABORT_TASK ”h]”(jŠ)�”}”(hŒ ``u64 tag``”h]”j�)�”}”(hjkh]”hŒu64 tag”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjiubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´Mæhjeubj¦)�”}”(hhh]”hÝ)�”}”(hŒ&referenced task tag for TMR_ABORT_TASK”h]”hŒ&referenced task tag for TMR_ABORT_TASK”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j€h´Mæhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjeubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j€h´MæhjÓubj„)�”}”(hŒ``int flags`` submit cmd flags ”h]”(jŠ)�”}”(hŒ ``int flags``”h]”j�)�”}”(hj¤h]”hŒ int flags”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´Mçhjžubj¦)�”}”(hhh]”hÝ)�”}”(hŒsubmit cmd flags”h]”hŒsubmit cmd flags”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j¹h´Mçhjºubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjžubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j¹h´MçhjÓubeh}”(h]”h ]”h"]”h$]”h&]”uh1j~hj·ubhÝ)�”}”(hŒ**Description**”h]”ji)�”}”(hjßh]”hŒ Description”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjÝubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´Méhj·ubhÝ)�”}”(hŒCallable from all contexts.”h]”hŒCallable from all contexts.”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´Mèhj·ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hjh²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œ target_get_sess_cmd (C function)”Œc.target_get_sess_cmd”hNt”auh1j,hjh²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒ>int target_get_sess_cmd (struct se_cmd *se_cmd, bool ack_kref)”h]”jI)�”}”(hŒ=int target_get_sess_cmd(struct se_cmd *se_cmd, bool ack_kref)”h]”(jO)�”}”(hŒint”h]”hŒint”…”�”}”(hj$ h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj h²hh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´Mè ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3 h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj h²hh³j2 h´Mè ubjr)�”}”(hŒtarget_get_sess_cmd”h]”jx)�”}”(hŒtarget_get_sess_cmd”h]”hŒtarget_get_sess_cmd”…”�”}”(hjE h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjA ubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhj h²hh³j2 h´Mè ubj“)�”}”(hŒ&(struct se_cmd *se_cmd, bool ack_kref)”h]”(j™)�”}”(hŒstruct se_cmd *se_cmd”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hja h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhj] ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjn h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj] ubh)�”}”(hhh]”jx)�”}”(hŒse_cmd”h]”hŒse_cmd”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj| ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j� Œmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×jG sbŒc.target_get_sess_cmd”†”asbuh1hhj] ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸ h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj] ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj­ h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj] ubjx)�”}”(hŒse_cmd”h]”hŒse_cmd”…”�”}”(hjº h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj] ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjY ubj™)�”}”(hŒ bool ack_kref”h]”(jO)�”}”(hŒbool”h]”hŒbool”…”�”}”(hjÓ h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjÏ ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjá h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjÏ ubjx)�”}”(hŒack_kref”h]”hŒack_kref”…”�”}”(hjï h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÏ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjY ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hj h²hh³j2 h´Mè ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hj h²hh³j2 h´Mè ubah}”(h]”j ah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³j2 h´Mè hj h²hubj8)�”}”(hhh]”hÝ)�”}”(hŒ1Verify the session is accepting cmds and take ref”h]”hŒ1Verify the session is accepting cmds and take ref”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´Mè hj!h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj h²hh³j2 h´Mè ubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYj1!jZj1!j[‰j\‰j]‰uh1j=h²hhjh³Nh´Nubj_)�”}”(hŒ—**Parameters** ``struct se_cmd *se_cmd`` command descriptor to add ``bool ack_kref`` Signal that fabric will perform an ack target_put_sess_cmd()”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hj;!h]”hŒ Parameters”…”�”}”(hj=!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj9!ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´Mì hj5!ubj)�”}”(hhh]”(j„)�”}”(hŒ4``struct se_cmd *se_cmd`` command descriptor to add ”h]”(jŠ)�”}”(hŒ``struct se_cmd *se_cmd``”h]”j�)�”}”(hjZ!h]”hŒstruct se_cmd *se_cmd”…”�”}”(hj\!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjX!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´Mé hjT!ubj¦)�”}”(hhh]”hÝ)�”}”(hŒcommand descriptor to add”h]”hŒcommand descriptor to add”…”�”}”(hjs!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jo!h´Mé hjp!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjT!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jo!h´Mé hjQ!ubj„)�”}”(hŒN``bool ack_kref`` Signal that fabric will perform an ack target_put_sess_cmd()”h]”(jŠ)�”}”(hŒ``bool ack_kref``”h]”j�)�”}”(hj“!h]”hŒ bool ack_kref”…”�”}”(hj•!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‘!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´Më hj�!ubj¦)�”}”(hhh]”hÝ)�”}”(hŒ)�”}”(hhh]”(jC)�”}”(hŒ/int target_put_sess_cmd (struct se_cmd *se_cmd)”h]”jI)�”}”(hŒ.int target_put_sess_cmd(struct se_cmd *se_cmd)”h]”(jO)�”}”(hŒint”h]”hŒint”…”�”}”(hjí!h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjé!h²hh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M& ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjü!h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjé!h²hh³jû!h´M& ubjr)�”}”(hŒtarget_put_sess_cmd”h]”jx)�”}”(hŒtarget_put_sess_cmd”h]”hŒtarget_put_sess_cmd”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj "ubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhjé!h²hh³jû!h´M& ubj“)�”}”(hŒ(struct se_cmd *se_cmd)”h]”j™)�”}”(hŒstruct se_cmd *se_cmd”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hj*"h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhj&"ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7"h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj&"ubh)�”}”(hhh]”jx)�”}”(hŒse_cmd”h]”hŒse_cmd”…”�”}”(hjH"h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjE"ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jJ"Œmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×j"sbŒc.target_put_sess_cmd”†”asbuh1hhj&"ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh"h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj&"ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjv"h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj&"ubjx)�”}”(hŒse_cmd”h]”hŒse_cmd”…”�”}”(hjƒ"h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj&"ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj""ubah}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hjé!h²hh³jû!h´M& ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hjå!h²hh³jû!h´M& ubah}”(h]”jà!ah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³jû!h´M& hjâ!h²hubj8)�”}”(hhh]”hÝ)�”}”(hŒ$decrease the command reference count”h]”hŒ$decrease the command reference count”…”�”}”(hj­"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M& hjª"h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hjâ!h²hh³jû!h´M& ubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYjÅ"jZjÅ"j[‰j\‰j]‰uh1j=h²hhjh³Nh´Nubj_)�”}”(hŒÔ**Parameters** ``struct se_cmd *se_cmd`` command to drop a reference from **Description** Returns 1 if and only if this target_put_sess_cmd() call caused the refcount to drop to zero. Returns zero otherwise.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hjÏ"h]”hŒ Parameters”…”�”}”(hjÑ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjÍ"ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M* hjÉ"ubj)�”}”(hhh]”j„)�”}”(hŒ;``struct se_cmd *se_cmd`` command to drop a reference from ”h]”(jŠ)�”}”(hŒ``struct se_cmd *se_cmd``”h]”j�)�”}”(hjî"h]”hŒstruct se_cmd *se_cmd”…”�”}”(hjð"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjì"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M' hjè"ubj¦)�”}”(hhh]”hÝ)�”}”(hŒ command to drop a reference from”h]”hŒ command to drop a reference from”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j#h´M' hj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjè"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j#h´M' hjå"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÉ"ubhÝ)�”}”(hŒ**Description**”h]”ji)�”}”(hj)#h]”hŒ Description”…”�”}”(hj+#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj'#ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M) hjÉ"ubhÝ)�”}”(hŒuReturns 1 if and only if this target_put_sess_cmd() call caused the refcount to drop to zero. Returns zero otherwise.”h]”hŒuReturns 1 if and only if this target_put_sess_cmd() call caused the refcount to drop to zero. Returns zero otherwise.”…”�”}”(hj?#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M( hjÉ"ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hjh²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œ$target_stop_cmd_counter (C function)”Œc.target_stop_cmd_counter”hNt”auh1j,hjh²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒAvoid target_stop_cmd_counter (struct target_cmd_counter *cmd_cnt)”h]”jI)�”}”(hŒ@void target_stop_cmd_counter(struct target_cmd_counter *cmd_cnt)”h]”(jO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjn#h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjj#h²hh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M¢ ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}#h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjj#h²hh³j|#h´M¢ ubjr)�”}”(hŒtarget_stop_cmd_counter”h]”jx)�”}”(hŒtarget_stop_cmd_counter”h]”hŒtarget_stop_cmd_counter”…”�”}”(hj�#h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj‹#ubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhjj#h²hh³j|#h´M¢ ubj“)�”}”(hŒ$(struct target_cmd_counter *cmd_cnt)”h]”j™)�”}”(hŒ"struct target_cmd_counter *cmd_cnt”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hj«#h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhj§#ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸#h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj§#ubh)�”}”(hhh]”jx)�”}”(hŒtarget_cmd_counter”h]”hŒtarget_cmd_counter”…”�”}”(hjÉ#h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÆ#ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jË#Œmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×j‘#sbŒc.target_stop_cmd_counter”†”asbuh1hhj§#ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjé#h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj§#ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj÷#h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj§#ubjx)�”}”(hŒcmd_cnt”h]”hŒcmd_cnt”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj§#ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj£#ubah}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hjj#h²hh³j|#h´M¢ ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hjf#h²hh³j|#h´M¢ ubah}”(h]”ja#ah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³j|#h´M¢ hjc#h²hubj8)�”}”(hhh]”hÝ)�”}”(hŒ,Stop new IO from being added to the counter.”h]”hŒ,Stop new IO from being added to the counter.”…”�”}”(hj.$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M¢ hj+$h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hjc#h²hh³j|#h´M¢ ubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYjF$jZjF$j[‰j\‰j]‰uh1j=h²hhjh³Nh´Nubj_)�”}”(hŒH**Parameters** ``struct target_cmd_counter *cmd_cnt`` counter to stop”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hjP$h]”hŒ Parameters”…”�”}”(hjR$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjN$ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M¦ hjJ$ubj)�”}”(hhh]”j„)�”}”(hŒ6``struct target_cmd_counter *cmd_cnt`` counter to stop”h]”(jŠ)�”}”(hŒ&``struct target_cmd_counter *cmd_cnt``”h]”j�)�”}”(hjo$h]”hŒ"struct target_cmd_counter *cmd_cnt”…”�”}”(hjq$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjm$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M¨ hji$ubj¦)�”}”(hhh]”hÝ)�”}”(hŒcounter to stop”h]”hŒcounter to stop”…”�”}”(hjˆ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M£ hj…$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hji$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j„$h´M¨ hjf$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjJ$ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hjh²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œ target_stop_session (C function)”Œc.target_stop_session”hNt”auh1j,hjh²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒ5void target_stop_session (struct se_session *se_sess)”h]”jI)�”}”(hŒ4void target_stop_session(struct se_session *se_sess)”h]”(jO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÉ$h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjÅ$h²hh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M¯ ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØ$h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjÅ$h²hh³j×$h´M¯ ubjr)�”}”(hŒtarget_stop_session”h]”jx)�”}”(hŒtarget_stop_session”h]”hŒtarget_stop_session”…”�”}”(hjê$h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjæ$ubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhjÅ$h²hh³j×$h´M¯ ubj“)�”}”(hŒ(struct se_session *se_sess)”h]”j™)�”}”(hŒstruct se_session *se_sess”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhj%ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj%ubh)�”}”(hhh]”jx)�”}”(hŒ se_session”h]”hŒ se_session”…”�”}”(hj$%h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj!%ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j&%Œmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×jì$sbŒc.target_stop_session”†”asbuh1hhj%ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjD%h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj%ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjR%h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj%ubjx)�”}”(hŒse_sess”h]”hŒse_sess”…”�”}”(hj_%h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj%ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjþ$ubah}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hjÅ$h²hh³j×$h´M¯ ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hjÁ$h²hh³j×$h´M¯ ubah}”(h]”j¼$ah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³j×$h´M¯ hj¾$h²hubj8)�”}”(hhh]”hÝ)�”}”(hŒ-Stop new IO from being queued on the session.”h]”hŒ-Stop new IO from being queued on the session.”…”�”}”(hj‰%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M¯ hj†%h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj¾$h²hh³j×$h´M¯ ubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYj¡%jZj¡%j[‰j\‰j]‰uh1j=h²hhjh³Nh´Nubj_)�”}”(hŒ@**Parameters** ``struct se_session *se_sess`` session to stop”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hj«%h]”hŒ Parameters”…”�”}”(hj­%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj©%ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M³ hj¥%ubj)�”}”(hhh]”j„)�”}”(hŒ.``struct se_session *se_sess`` session to stop”h]”(jŠ)�”}”(hŒ``struct se_session *se_sess``”h]”j�)�”}”(hjÊ%h]”hŒstruct se_session *se_sess”…”�”}”(hjÌ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÈ%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´Mµ hjÄ%ubj¦)�”}”(hhh]”hÝ)�”}”(hŒsession to stop”h]”hŒsession to stop”…”�”}”(hjã%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M° hjà%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjÄ%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jß%h´Mµ hjÁ%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj¥%ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hjh²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œ!target_wait_for_cmds (C function)”Œc.target_wait_for_cmds”hNt”auh1j,hjh²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒ>void target_wait_for_cmds (struct target_cmd_counter *cmd_cnt)”h]”jI)�”}”(hŒ=void target_wait_for_cmds(struct target_cmd_counter *cmd_cnt)”h]”(jO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj$&h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj &h²hh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M¹ ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3&h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj &h²hh³j2&h´M¹ ubjr)�”}”(hŒtarget_wait_for_cmds”h]”jx)�”}”(hŒtarget_wait_for_cmds”h]”hŒtarget_wait_for_cmds”…”�”}”(hjE&h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjA&ubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhj &h²hh³j2&h´M¹ ubj“)�”}”(hŒ$(struct target_cmd_counter *cmd_cnt)”h]”j™)�”}”(hŒ"struct target_cmd_counter *cmd_cnt”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hja&h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhj]&ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjn&h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj]&ubh)�”}”(hhh]”jx)�”}”(hŒtarget_cmd_counter”h]”hŒtarget_cmd_counter”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj|&ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j�&Œmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×jG&sbŒc.target_wait_for_cmds”†”asbuh1hhj]&ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸ&h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj]&ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj­&h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj]&ubjx)�”}”(hŒcmd_cnt”h]”hŒcmd_cnt”…”�”}”(hjº&h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj]&ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjY&ubah}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hj &h²hh³j2&h´M¹ ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hj&h²hh³j2&h´M¹ ubah}”(h]”j&ah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³j2&h´M¹ hj&h²hubj8)�”}”(hhh]”hÝ)�”}”(hŒWait for outstanding cmds.”h]”hŒWait for outstanding cmds.”…”�”}”(hjä&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M¹ hjá&h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj&h²hh³j2&h´M¹ ubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYjü&jZjü&j[‰j\‰j]‰uh1j=h²hhjh³Nh´Nubj_)�”}”(hŒ\**Parameters** ``struct target_cmd_counter *cmd_cnt`` counter to wait for active I/O for.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hj'h]”hŒ Parameters”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M½ hj'ubj)�”}”(hhh]”j„)�”}”(hŒJ``struct target_cmd_counter *cmd_cnt`` counter to wait for active I/O for.”h]”(jŠ)�”}”(hŒ&``struct target_cmd_counter *cmd_cnt``”h]”j�)�”}”(hj%'h]”hŒ"struct target_cmd_counter *cmd_cnt”…”�”}”(hj''h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj#'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M¿ hj'ubj¦)�”}”(hhh]”hÝ)�”}”(hŒ#counter to wait for active I/O for.”h]”hŒ#counter to wait for active I/O for.”…”�”}”(hj>'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´Mº hj;'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j:'h´M¿ hj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj'ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hjh²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œ&target_wait_for_sess_cmds (C function)”Œc.target_wait_for_sess_cmds”hNt”auh1j,hjh²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒ;void target_wait_for_sess_cmds (struct se_session *se_sess)”h]”jI)�”}”(hŒ:void target_wait_for_sess_cmds(struct se_session *se_sess)”h]”(jO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj{'h²hh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´MÏ ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽ'h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj{'h²hh³j�'h´MÏ ubjr)�”}”(hŒtarget_wait_for_sess_cmds”h]”jx)�”}”(hŒtarget_wait_for_sess_cmds”h]”hŒtarget_wait_for_sess_cmds”…”�”}”(hj 'h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjœ'ubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhj{'h²hh³j�'h´MÏ ubj“)�”}”(hŒ(struct se_session *se_sess)”h]”j™)�”}”(hŒstruct se_session *se_sess”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hj¼'h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhj¸'ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉ'h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj¸'ubh)�”}”(hhh]”jx)�”}”(hŒ se_session”h]”hŒ se_session”…”�”}”(hjÚ'h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj×'ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jÜ'Œmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×j¢'sbŒc.target_wait_for_sess_cmds”†”asbuh1hhj¸'ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjú'h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj¸'ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj¸'ubjx)�”}”(hŒse_sess”h]”hŒse_sess”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj¸'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj´'ubah}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hj{'h²hh³j�'h´MÏ ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hjw'h²hh³j�'h´MÏ ubah}”(h]”jr'ah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³j�'h´MÏ hjt'h²hubj8)�”}”(hhh]”hÝ)�”}”(hŒWait for outstanding commands”h]”hŒWait for outstanding commands”…”�”}”(hj?(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´MÏ hj<(h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hjt'h²hh³j�'h´MÏ ubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYjW(jZjW(j[‰j\‰j]‰uh1j=h²hhjh³Nh´Nubj_)�”}”(hŒO**Parameters** ``struct se_session *se_sess`` session to wait for active I/O”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hja(h]”hŒ Parameters”…”�”}”(hjc(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj_(ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´MÓ hj[(ubj)�”}”(hhh]”j„)�”}”(hŒ=``struct se_session *se_sess`` session to wait for active I/O”h]”(jŠ)�”}”(hŒ``struct se_session *se_sess``”h]”j�)�”}”(hj€(h]”hŒstruct se_session *se_sess”…”�”}”(hj‚(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj~(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´MÕ hjz(ubj¦)�”}”(hhh]”hÝ)�”}”(hŒsession to wait for active I/O”h]”hŒsession to wait for active I/O”…”�”}”(hj™(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´MÐ hj–(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjz(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j•(h´MÕ hjw(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj[(ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hjh²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œ%transport_wait_for_tasks (C function)”Œc.transport_wait_for_tasks”hNt”auh1j,hjh²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒ2bool transport_wait_for_tasks (struct se_cmd *cmd)”h]”jI)�”}”(hŒ1bool transport_wait_for_tasks(struct se_cmd *cmd)”h]”(jO)�”}”(hjÕ h]”hŒbool”…”�”}”(hjÚ(h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjÖ(h²hh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjè(h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjÖ(h²hh³jç(h´M ubjr)�”}”(hŒtransport_wait_for_tasks”h]”jx)�”}”(hŒtransport_wait_for_tasks”h]”hŒtransport_wait_for_tasks”…”�”}”(hjú(h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjö(ubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhjÖ(h²hh³jç(h´M ubj“)�”}”(hŒ(struct se_cmd *cmd)”h]”j™)�”}”(hŒstruct se_cmd *cmd”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhj)ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#)h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj)ubh)�”}”(hhh]”jx)�”}”(hŒse_cmd”h]”hŒse_cmd”…”�”}”(hj4)h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj1)ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j6)Œmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×jü(sbŒc.transport_wait_for_tasks”†”asbuh1hhj)ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjT)h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj)ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjb)h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj)ubjx)�”}”(hŒcmd”h]”hŒcmd”…”�”}”(hjo)h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj)ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj)ubah}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hjÖ(h²hh³jç(h´M ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hjÒ(h²hh³jç(h´M ubah}”(h]”jÍ(ah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³jç(h´M hjÏ(h²hubj8)�”}”(hhh]”hÝ)�”}”(hŒ1set CMD_T_STOP and wait for t_transport_stop_comp”h]”hŒ1set CMD_T_STOP and wait for t_transport_stop_comp”…”�”}”(hj™)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M hj–)h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hjÏ(h²hh³jç(h´M ubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYj±)jZj±)j[‰j\‰j]‰uh1j=h²hhjh³Nh´Nubj_)�”}”(hŒ;**Parameters** ``struct se_cmd *cmd`` command to wait on”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hj»)h]”hŒ Parameters”…”�”}”(hj½)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj¹)ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M hjµ)ubj)�”}”(hhh]”j„)�”}”(hŒ)``struct se_cmd *cmd`` command to wait on”h]”(jŠ)�”}”(hŒ``struct se_cmd *cmd``”h]”j�)�”}”(hjÚ)h]”hŒstruct se_cmd *cmd”…”�”}”(hjÜ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjØ)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M hjÔ)ubj¦)�”}”(hhh]”hÝ)�”}”(hŒcommand to wait on”h]”hŒcommand to wait on”…”�”}”(hjó)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M hjð)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjÔ)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jï)h´M hjÑ)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjµ)ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hjh²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œtarget_send_busy (C function)”Œc.target_send_busy”hNt”auh1j,hjh²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒ)int target_send_busy (struct se_cmd *cmd)”h]”jI)�”}”(hŒ(int target_send_busy(struct se_cmd *cmd)”h]”(jO)�”}”(hŒint”h]”hŒint”…”�”}”(hj4*h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj0*h²hh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´Mubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjC*h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj0*h²hh³jB*h´Mubjr)�”}”(hŒtarget_send_busy”h]”jx)�”}”(hŒtarget_send_busy”h]”hŒtarget_send_busy”…”�”}”(hjU*h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjQ*ubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhj0*h²hh³jB*h´Mubj“)�”}”(hŒ(struct se_cmd *cmd)”h]”j™)�”}”(hŒstruct se_cmd *cmd”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hjq*h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjm*ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~*h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjm*ubh)�”}”(hhh]”jx)�”}”(hŒse_cmd”h]”hŒse_cmd”…”�”}”(hj�*h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjŒ*ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j‘*Œmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×jW*sbŒc.target_send_busy”†”asbuh1hhjm*ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯*h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjm*ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj½*h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjm*ubjx)�”}”(hŒcmd”h]”hŒcmd”…”�”}”(hjÊ*h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjm*ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hji*ubah}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hj0*h²hh³jB*h´Mubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hj,*h²hh³jB*h´Mubah}”(h]”j'*ah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³jB*h´Mhj)*h²hubj8)�”}”(hhh]”hÝ)�”}”(hŒ+Send SCSI BUSY status back to the initiator”h]”hŒ+Send SCSI BUSY status back to the initiator”…”�”}”(hjô*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´Mhjñ*h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj)*h²hh³jB*h´Mubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYj +jZj +j[‰j\‰j]‰uh1j=h²hhjh³Nh´Nubj_)�”}”(hŒ˜**Parameters** ``struct se_cmd *cmd`` SCSI command for which to send a BUSY reply. **Note** Only call this function if target_submit_cmd*() failed.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hj+h]”hŒ Parameters”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M#hj+ubj)�”}”(hhh]”j„)�”}”(hŒD``struct se_cmd *cmd`` SCSI command for which to send a BUSY reply. ”h]”(jŠ)�”}”(hŒ``struct se_cmd *cmd``”h]”j�)�”}”(hj5+h]”hŒstruct se_cmd *cmd”…”�”}”(hj7+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj3+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M hj/+ubj¦)�”}”(hhh]”hÝ)�”}”(hŒ,SCSI command for which to send a BUSY reply.”h]”hŒ,SCSI command for which to send a BUSY reply.”…”�”}”(hjN+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jJ+h´M hjK+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj/+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jJ+h´M hj,+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj+ubhÝ)�”}”(hŒ**Note**”h]”ji)�”}”(hjp+h]”hŒNote”…”�”}”(hjr+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjn+ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M"hj+ubhÝ)�”}”(hŒ7Only call this function if target_submit_cmd*() failed.”h]”hŒ7Only call this function if target_submit_cmd*() failed.”…”�”}”(hj†+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œh/var/lib/git/docbuild/linux/Documentation/driver-api/target:19: ./drivers/target/target_core_transport.c”h´M"hj+ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hjh²hh³Nh´Nubeh}”(h]”Œ target-core-transport-interfaces”ah ]”h"]”Œ target core transport interfaces”ah$]”h&]”uh1hµhh·h²hh³hÊh´Kubh¶)�”}”(hhh]”(h»)�”}”(hŒTarget-supported userspace I/O”h]”hŒTarget-supported userspace I/O”…”�”}”(hj§+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj¤+h²hh³hÊh´Kubh¶)�”}”(hhh]”(h»)�”}”(hŒ Userspace I/O”h]”hŒ Userspace I/O”…”�”}”(hj¸+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjµ+h³Nh´NubhÝ)�”}”(hŒ¹Define a shared-memory interface for LIO to pass SCSI commands and data to userspace for processing. This is to allow backends that are too complex for in-kernel support to be possible.”h]”hŒ¹Define a shared-memory interface for LIO to pass SCSI commands and data to userspace for processing. This is to allow backends that are too complex for in-kernel support to be possible.”…”�”}”(hjÆ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/target:25: ./drivers/target/target_core_user.c”h´K%hjµ+ubhÝ)�”}”(hŒ[It uses the UIO framework to do a lot of the device-creation and introspection work for us.”h]”hŒ[It uses the UIO framework to do a lot of the device-creation and introspection work for us.”…”�”}”(hjÕ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/target:25: ./drivers/target/target_core_user.c”h´K)hjµ+ubhÝ)�”}”(hXÀSee the .h file for how the ring is laid out. Note that while the command ring is defined, the particulars of the data area are not. Offset values in the command entry point to other locations internal to the mmap-ed area. There is separate space outside the command ring for data buffers. This leaves maximum flexibility for moving buffer allocations, or even page flipping or other allocation techniques, without altering the command ring layout.”h]”hXÀSee the .h file for how the ring is laid out. Note that while the command ring is defined, the particulars of the data area are not. Offset values in the command entry point to other locations internal to the mmap-ed area. There is separate space outside the command ring for data buffers. This leaves maximum flexibility for moving buffer allocations, or even page flipping or other allocation techniques, without altering the command ring layout.”…”�”}”(hjä+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/target:25: ./drivers/target/target_core_user.c”h´K,hjµ+ubhÝ)�”}”(hXpSECURITY: The user process must be assumed to be malicious. There's no way to prevent it breaking the command ring protocol if it wants, but in order to prevent other issues we must only ever read *data* from the shared memory area, not offsets or sizes. This applies to command ring entries as well as the mailbox. Extra code needed for this may have a 'UAM' comment.”h]”(hŒÇSECURITY: The user process must be assumed to be malicious. There’s no way to prevent it breaking the command ring protocol if it wants, but in order to prevent other issues we must only ever read ”…”�”}”(hjó+h²hh³Nh´NubhŒemphasis”“”)�”}”(hŒ*data*”h]”hŒdata”…”�”}”(hjý+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jû+hjó+ubhŒ© from the shared memory area, not offsets or sizes. This applies to command ring entries as well as the mailbox. Extra code needed for this may have a ‘UAM’ comment.”…”�”}”(hjó+h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œc/var/lib/git/docbuild/linux/Documentation/driver-api/target:25: ./drivers/target/target_core_user.c”h´K4hjµ+ubeh}”(h]”Œ userspace-i-o”ah ]”h"]”Œ userspace i/o”ah$]”h&]”uh1hµhj¤+h²hh³Nh´Nubh¶)�”}”(hhh]”(h»)�”}”(hŒ Ring Design”h]”hŒ Ring Design”…”�”}”(hj!,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj,h³Nh´NubhÝ)�”}”(hŒœThe mmaped area is divided into three parts: 1) The mailbox (struct tcmu_mailbox, below); 2) The command ring; 3) Everything beyond the command ring (data).”h]”hŒœThe mmaped area is divided into three parts: 1) The mailbox (struct tcmu_mailbox, below); 2) The command ring; 3) Everything beyond the command ring (data).”…”�”}”(hj/,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/target:28: ./include/uapi/linux/target_core_user.h”h´Khj,ubhÝ)�”}”(hŒ‡The mailbox tells userspace the offset of the command ring from the start of the shared memory region, and how big the command ring is.”•h]”hŒ‡The mailbox tells userspace the offset of the command ring from the start of the shared memory region, and how big the command ring is.”…”�”}”(hj>,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/target:28: ./include/uapi/linux/target_core_user.h”h´Khj,ubhÝ)�”}”(hŒ¬The kernel passes SCSI commands to userspace by putting a struct tcmu_cmd_entry in the ring, updating mailbox->cmd_head, and poking userspace via UIO's interrupt mechanism.”h]”hŒ®The kernel passes SCSI commands to userspace by putting a struct tcmu_cmd_entry in the ring, updating mailbox->cmd_head, and poking userspace via UIO’s interrupt mechanism.”…”�”}”(hjM,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/target:28: ./include/uapi/linux/target_core_user.h”h´Khj,ubhÝ)�”}”(hŒ�tcmu_cmd_entry contains a header. If the header type is PAD, userspace should skip hdr->length bytes (mod cmdr_size) to find the next cmd_entry.”h]”hŒ�tcmu_cmd_entry contains a header. If the header type is PAD, userspace should skip hdr->length bytes (mod cmdr_size) to find the next cmd_entry.”…”�”}”(hj\,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/target:28: ./include/uapi/linux/target_core_user.h”h´Khj,ubhÝ)�”}”(hŒÅOtherwise, the entry will contain offsets into the mmaped area that contain the cdb and data buffers -- the latter accessible via the iov array. iov addresses are also offsets into the shared area.”h]”hŒÅOtherwise, the entry will contain offsets into the mmaped area that contain the cdb and data buffers -- the latter accessible via the iov array. iov addresses are also offsets into the shared area.”…”�”}”(hjk,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/target:28: ./include/uapi/linux/target_core_user.h”h´K hj,ubhÝ)�”}”(hX/When userspace is completed handling the command, set entry->rsp.scsi_status, fill in rsp.sense_buffer if appropriate, and also set mailbox->cmd_tail equal to the old cmd_tail plus hdr->length, mod cmdr_size. If cmd_tail doesn't equal cmd_head, it should process the next packet the same way, and so on.”h]”hX1When userspace is completed handling the command, set entry->rsp.scsi_status, fill in rsp.sense_buffer if appropriate, and also set mailbox->cmd_tail equal to the old cmd_tail plus hdr->length, mod cmdr_size. If cmd_tail doesn’t equal cmd_head, it should process the next packet the same way, and so on.”…”�”}”(hjz,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œg/var/lib/git/docbuild/linux/Documentation/driver-api/target:28: ./include/uapi/linux/target_core_user.h”h´K$hj,ubeh}”(h]”Œ ring-design”ah ]”h"]”Œ ring design”ah$]”h&]”uh1hµhj¤+h²hh³Nh´Nubeh}”(h]”Œtarget-supported-userspace-i-o”ah ]”h"]”Œtarget-supported userspace i/o”ah$]”h&]”uh1hµhh·h²hh³hÊh´Kubh¶)�”}”(hhh]”(h»)�”}”(hŒiSCSI helper functions”h]”hŒiSCSI helper functions”…”�”}”(hjœ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj™,h²hh³hÊh´K ubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œ$iscsi_prep_data_out_pdu (C function)”Œc.iscsi_prep_data_out_pdu”hNt”auh1j,hj™,h²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒjvoid iscsi_prep_data_out_pdu (struct iscsi_task *task, struct iscsi_r2t_info *r2t, struct iscsi_data *hdr)”h]”jI)�”}”(hŒivoid iscsi_prep_data_out_pdu(struct iscsi_task *task, struct iscsi_r2t_info *r2t, struct iscsi_data *hdr)”h]”(jO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÃ,h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj¿,h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´K‡ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒ,h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj¿,h²hh³jÑ,h´K‡ubjr)�”}”(hŒiscsi_prep_data_out_pdu”h]”jx)�”}”(hŒiscsi_prep_data_out_pdu”h]”hŒiscsi_prep_data_out_pdu”…”�”}”(hjä,h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjà,ubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhj¿,h²hh³jÑ,h´K‡ubj“)�”}”(hŒM(struct iscsi_task *task, struct iscsi_r2t_info *r2t, struct iscsi_data *hdr)”h]”(j™)�”}”(hŒstruct iscsi_task *task”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjü,ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj -h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjü,ubh)�”}”(hhh]”jx)�”}”(hŒ iscsi_task”h]”hŒ iscsi_task”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj-ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j -Œmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×jæ,sbŒc.iscsi_prep_data_out_pdu”†”asbuh1hhjü,ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>-h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjü,ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjL-h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjü,ubjx)�”}”(hŒtask”h]”hŒtask”…”�”}”(hjY-h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjü,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjø,ubj™)�”}”(hŒstruct iscsi_r2t_info *r2t”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hjr-h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjn-ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjn-ubh)�”}”(hhh]”jx)�”}”(hŒiscsi_r2t_info”h]”hŒiscsi_r2t_info”…”�”}”(hj�-h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj�-ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j’-Œmodname”NŒ classname”NjÛjÞ)�”}”já]”j:-Œc.iscsi_prep_data_out_pdu”†”asbuh1hhjn-ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®-h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjn-ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj¼-h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjn-ubjx)�”}”(hŒr2t”h]”hŒr2t”…”�”}”(hjÉ-h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjn-ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjø,ubj™)�”}”(hŒstruct iscsi_data *hdr”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hjâ-h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjÞ-ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjï-h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjÞ-ubh)�”}”(hhh]”jx)�”}”(hŒ iscsi_data”h]”hŒ iscsi_data”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjý-ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j.Œmodname”NŒ classname”NjÛjÞ)�”}”já]”j:-Œc.iscsi_prep_data_out_pdu”†”asbuh1hhjÞ-ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjÞ-ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj,.h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjÞ-ubjx)�”}”(hŒhdr”h]”hŒhdr”…”�”}”(hj9.h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÞ-ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjø,ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hj¿,h²hh³jÑ,h´K‡ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hj»,h²hh³jÑ,h´K‡ubah}”(h]”j¶,ah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³jÑ,h´K‡hj¸,h²hubj8)�”}”(hhh]”hÝ)�”}”(hŒinitialize Data-Out”h]”hŒinitialize Data-Out”…”�”}”(hjc.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´K‡hj`.h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj¸,h²hh³jÑ,h´K‡ubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYj{.jZj{.j[‰j\‰j]‰uh1j=h²hhj™,h³Nh´Nubj_)�”}”(hXN**Parameters** ``struct iscsi_task *task`` scsi command task ``struct iscsi_r2t_info *r2t`` R2T info ``struct iscsi_data *hdr`` iscsi data in pdu **Notes** Initialize Data-Out within this R2T sequence and finds proper data_offset within this SCSI command. This function is called with connection lock taken.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hj….h]”hŒ Parameters”…”�”}”(hj‡.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjƒ.ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´K‹hj.ubj)�”}”(hhh]”(j„)�”}”(hŒ.``struct iscsi_task *task`` scsi command task ”h]”(jŠ)�”}”(hŒ``struct iscsi_task *task``”h]”j�)�”}”(hj¤.h]”hŒstruct iscsi_task *task”…”�”}”(hj¦.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¢.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´Kˆhjž.ubj¦)�”}”(hhh]”hÝ)�”}”(hŒscsi command task”h]”hŒscsi command task”…”�”}”(hj½.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j¹.h´Kˆhjº.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjž.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j¹.h´Kˆhj›.ubj„)�”}”(hŒ(``struct iscsi_r2t_info *r2t`` R2T info ”h]”(jŠ)�”}”(hŒ``struct iscsi_r2t_info *r2t``”h]”j�)�”}”(hjÝ.h]”hŒstruct iscsi_r2t_info *r2t”…”�”}”(hjß.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÛ.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´K‰hj×.ubj¦)�”}”(hhh]”hÝ)�”}”(hŒR2T info”h]”hŒR2T info”…”�”}”(hjö.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jò.h´K‰hjó.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj×.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jò.h´K‰hj›.ubj„)�”}”(hŒ-``struct iscsi_data *hdr`` iscsi data in pdu ”h]”(jŠ)�”}”(hŒ``struct iscsi_data *hdr``”h]”j�)�”}”(hj/h]”hŒstruct iscsi_data *hdr”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´KŠhj/ubj¦)�”}”(hhh]”hÝ)�”}”(hŒiscsi data in pdu”h]”hŒiscsi data in pdu”…”�”}”(hj//h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j+/h´KŠhj,/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j+/h´KŠhj›.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j~hj.ubhÝ)�”}”(hŒ **Notes**”h]”ji)�”}”(hjQ/h]”hŒNotes”…”�”}”(hjS/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjO/ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´KŒhj.ubhŒ block_quote”“”)�”}”(hŒ˜Initialize Data-Out within this R2T sequence and finds proper data_offset within this SCSI command. This function is called with connection lock taken.”h]”(hÝ)�”}”(hŒcInitialize Data-Out within this R2T sequence and finds proper data_offset within this SCSI command.”h]”hŒcInitialize Data-Out within this R2T sequence and finds proper data_offset within this SCSI command.”…”�”}”(hjm/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´KŒhji/ubhÝ)�”}”(hŒ3This function is called with connection lock taken.”h]”hŒ3This function is called with connection lock taken.”…”�”}”(hj|/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´K�hji/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jg/h³j{/h´KŒhj.ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hj™,h²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œ__iscsi_put_task (C function)”Œc.__iscsi_put_task”hNt”auh1j,hj™,h²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒ/void __iscsi_put_task (struct iscsi_task *task)”h]”jI)�”}”(hŒ.void __iscsi_put_task(struct iscsi_task *task)”h]”(jO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj±/h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj­/h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´Mîubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀ/h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj­/h²hh³j¿/h´Mîubjr)�”}”(hŒ__iscsi_put_task”h]”jx)�”}”(hŒ__iscsi_put_task”h]”hŒ__iscsi_put_task”…”�”}”(hjÒ/h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÎ/ubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhj­/h²hh³j¿/h´Mîubj“)�”}”(hŒ(struct iscsi_task *task)”h]”j™)�”}”(hŒstruct iscsi_task *task”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hjî/h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjê/ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjû/h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjê/ubh)�”}”(hhh]”jx)�”}”(hŒ iscsi_task”h]”hŒ iscsi_task”…”�”}”(hj 0h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj 0ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j0Œmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×jÔ/sbŒc.__iscsi_put_task”†”asbuh1hhjê/ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,0h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjê/ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj:0h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjê/ubjx)�”}”(hŒtask”h]”hŒtask”…”�”}”(hjG0h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjê/ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjæ/ubah}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hj­/h²hh³j¿/h´Mîubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hj©/h²hh³j¿/h´Mîubah}”(h]”j¤/ah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³j¿/h´Mîhj¦/h²hubj8)�”}”(hhh]”hÝ)�”}”(hŒdrop the refcount on a task”h]”hŒdrop the refcount on a task”…”�”}”(hjq0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´Mîhjn0h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj¦/h²hh³j¿/h´Mîubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYj‰0jZj‰0j[‰j\‰j]‰uh1j=h²hhj™,h³Nh´Nubj_)�”}”(hŒ¥**Parameters** ``struct iscsi_task *task`` iscsi_task to drop the refcount on **Description** The back_lock must be held when calling in case it frees the task.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hj“0h]”hŒ Parameters”…”�”}”(hj•0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj‘0ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´Mòhj�0ubj)�”}”(hhh]”j„)�”}”(hŒ?``struct iscsi_task *task`` iscsi_task to drop the refcount on ”h]”(jŠ)�”}”(hŒ``struct iscsi_task *task``”h]”j�)�”}”(hj²0h]”hŒstruct iscsi_task *task”…”�”}”(hj´0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj°0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´Mïhj¬0ubj¦)�”}”(hhh]”hÝ)�”}”(hŒ"iscsi_task to drop the refcount on”h]”hŒ"iscsi_task to drop the refcount on”…”�”}”(hjË0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÇ0h´MïhjÈ0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj¬0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jÇ0h´Mïhj©0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj�0ubhÝ)�”}”(hŒ**Description**”h]”ji)�”}”(hjí0h]”hŒ Description”…”�”}”(hjï0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjë0ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´Mñhj�0ubhÝ)�”}”(hŒBThe back_lock must be held when calling in case it frees the task.”h]”hŒBThe back_lock must be held when calling in case it frees the task.”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´Mðhj�0ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hj™,h²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œ%iscsi_complete_scsi_task (C function)”Œc.iscsi_complete_scsi_task”hNt”auh1j,hj™,h²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒ_void iscsi_complete_scsi_task (struct iscsi_task *task, uint32_t exp_cmdsn, uint32_t max_cmdsn)”h]”jI)�”}”(hŒ^void iscsi_complete_scsi_task(struct iscsi_task *task, uint32_t exp_cmdsn, uint32_t max_cmdsn)”h]”(jO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj21h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj.1h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M$ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjA1h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj.1h²hh³j@1h´M$ubjr)�”}”(hŒiscsi_complete_scsi_task”h]”jx)�”}”(hŒiscsi_complete_scsi_task”h]”hŒiscsi_complete_scsi_task”…”�”}”(hjS1h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjO1ubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhj.1h²hh³j@1h´M$ubj“)�”}”(hŒA(struct iscsi_task *task, uint32_t exp_cmdsn, uint32_t max_cmdsn)”h]”(j™)�”}”(hŒstruct iscsi_task *task”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hjo1h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjk1ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|1h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjk1ubh)�”}”(hhh]”jx)�”}”(hŒ iscsi_task”h]”hŒ iscsi_task”…”�”}”(hj�1h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjŠ1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j�1Œmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×jU1sbŒc.iscsi_complete_scsi_task”†”asbuh1hhjk1ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­1h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjk1ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj»1h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjk1ubjx)�”}”(hŒtask”h]”hŒtask”…”�”}”(hjÈ1h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjk1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjg1ubj™)�”}”(hŒuint32_t exp_cmdsn”h]”(h)�”}”(hhh]”jx)�”}”(hŒuint32_t”h]”hŒuint32_t”…”�”}”(hjä1h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjá1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jæ1Œmodname”NŒ classname”NjÛjÞ)�”}”já]”j©1Œc.iscsi_complete_scsi_task”†”asbuh1hhjÝ1ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjÝ1ubjx)�”}”(hŒ exp_cmdsn”h]”hŒ exp_cmdsn”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÝ1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjg1ubj™)�”}”(hŒuint32_t max_cmdsn”h]”(h)�”}”(hhh]”jx)�”}”(hŒuint32_t”h]”hŒuint32_t”…”�”}”(hj,2h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj)2ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j.2Œmodname”NŒ classname”NjÛjÞ)�”}”já]”j©1Œc.iscsi_complete_scsi_task”†”asbuh1hhj%2ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJ2h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj%2ubjx)�”}”(hŒ max_cmdsn”h]”hŒ max_cmdsn”…”�”}”(hjX2h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj%2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjg1ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hj.1h²hh³j@1h´M$ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hj*1h²hh³j@1h´M$ubah}”(h]”j%1ah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³j@1h´M$hj'1h²hubj8)�”}”(hhh]”hÝ)�”}”(hŒfinish scsi task normally”h]”hŒfinish scsi task normally”…”�”}”(hj‚2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M$hj2h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj'1h²hh³j@1h´M$ubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYjš2jZjš2j[‰j\‰j]‰uh1j=h²hhj™,h³Nh´Nubj_)�”}”(hX5**Parameters** ``struct iscsi_task *task`` iscsi task for scsi cmd ``uint32_t exp_cmdsn`` expected cmd sn in cpu format ``uint32_t max_cmdsn`` max cmd sn in cpu format **Description** This is used when drivers do not need or cannot perform lower level pdu processing. Called with session back_lock”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hj¤2h]”hŒ Parameters”…”�”}”(hj¦2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj¢2ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M(hjž2ubj)�”}”(hhh]”(j„)�”}”(hŒ4``struct iscsi_task *task`` iscsi task for scsi cmd ”h]”(jŠ)�”}”(hŒ``struct iscsi_task *task``”h]”j�)�”}”(hjÃ2h]”hŒstruct iscsi_task *task”…”�”}”(hjÅ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÁ2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M%hj½2ubj¦)�”}”(hhh]”hÝ)�”}”(hŒiscsi task for scsi cmd”h]”hŒiscsi task for scsi cmd”…”�”}”(hjÜ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jØ2h´M%hjÙ2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj½2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jØ2h´M%hjº2ubj„)�”}”(hŒ5``uint32_t exp_cmdsn`` expected cmd sn in cpu format ”h]”(jŠ)�”}”(hŒ``uint32_t exp_cmdsn``”h]”j�)�”}”(hjü2h]”hŒuint32_t exp_cmdsn”…”�”}”(hjþ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjú2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M&hjö2ubj¦)�”}”(hhh]”hÝ)�”}”(hŒexpected cmd sn in cpu format”h]”hŒexpected cmd sn in cpu format”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j3h´M&hj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjö2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j3h´M&hjº2ubj„)�”}”(hŒ0``uint32_t max_cmdsn`` max cmd sn in cpu format ”h]”(jŠ)�”}”(hŒ``uint32_t max_cmdsn``”h]”j�)�”}”(hj53h]”hŒuint32_t max_cmdsn”…”�”}”(hj73h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj33ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M'hj/3ubj¦)�”}”(hhh]”hÝ)�”}”(hŒmax cmd sn in cpu format”h]”hŒmax cmd sn in cpu format”…”�”}”(hjN3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jJ3h´M'hjK3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj/3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jJ3h´M'hjº2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j~hjž2ubhÝ)�”}”(hŒ**Description**”h]”ji)�”}”(hjp3h]”hŒ Description”…”�”}”(hjr3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjn3ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M)hjž2ubhÝ)�”}”(hŒSThis is used when drivers do not need or cannot perform lower level pdu processing.”h]”hŒSThis is used when drivers do not need or cannot perform lower level pdu processing.”…”�”}”(hj†3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M(hjž2ubhÝ)�”}”(hŒCalled with session back_lock”h]”hŒCalled with session back_lock”…”�”}”(hj•3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M+hjž2ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hj™,h²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œiscsi_itt_to_task (C function)”Œc.iscsi_itt_to_task”hNt”auh1j,hj™,h²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒJstruct iscsi_task * iscsi_itt_to_task (struct iscsi_conn *conn, itt_t itt)”h]”jI)�”}”(hŒHstruct iscsi_task *iscsi_itt_to_task(struct iscsi_conn *conn, itt_t itt)”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hjÄ3h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjÀ3h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M•ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒ3h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjÀ3h²hh³jÑ3h´M•ubh)�”}”(hhh]”jx)�”}”(hŒ iscsi_task”h]”hŒ iscsi_task”…”�”}”(hjã3h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjà3ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jå3Œmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j׌iscsi_itt_to_task”sbŒc.iscsi_itt_to_task”†”asbuh1hhjÀ3h²hh³jÑ3h´M•ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjÀ3h²hh³jÑ3h´M•ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjÀ3h²hh³jÑ3h´M•ubjr)�”}”(hŒiscsi_itt_to_task”h]”jx)�”}”(hj4h]”hŒiscsi_itt_to_task”…”�”}”(hj#4h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj4ubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhjÀ3h²hh³jÑ3h´M•ubj“)�”}”(hŒ$(struct iscsi_conn *conn, itt_t itt)”h]”(j™)�”}”(hŒstruct iscsi_conn *conn”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hj>4h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhj:4ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjK4h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj:4ubh)�”}”(hhh]”jx)�”}”(hŒ iscsi_conn”h]”hŒ iscsi_conn”…”�”}”(hj\4h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjY4ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j^4Œmodname”NŒ classname”NjÛjÞ)�”}”já]”jÿ3Œc.iscsi_itt_to_task”†”asbuh1hhj:4ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjz4h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj:4ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjˆ4h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj:4ubjx)�”}”(hŒconn”h]”hŒconn”…”�”}”(hj•4h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj:4ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj64ubj™)�”}”(hŒ itt_t itt”h]”(h)�”}”(hhh]”jx)�”}”(hŒitt_t”h]”hŒitt_t”…”�”}”(hj±4h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj®4ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j³4Œmodname”NŒ classname”NjÛjÞ)�”}”já]”jÿ3Œc.iscsi_itt_to_task”†”asbuh1hhjª4ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏ4h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjª4ubjx)�”}”(hŒitt”h]”hŒitt”…”�”}”(hjÝ4h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjª4ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj64ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hjÀ3h²hh³jÑ3h´M•ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hj¼3h²hh³jÑ3h´M•ubah}”(h]”j·3ah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³jÑ3h´M•hj¹3h²hubj8)�”}”(hhh]”hÝ)�”}”(hŒlook up task by itt”h]”hŒlook up task by itt”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M•hj5h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj¹3h²hh³jÑ3h´M•ubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYj5jZj5j[‰j\‰j]‰uh1j=h²hhj™,h³Nh´Nubj_)�”}”(hŒþ**Parameters** ``struct iscsi_conn *conn`` iscsi connection ``itt_t itt`` itt **Description** This should be used for mgmt tasks like login and nops, or if the LDD's itt space does not include the session age. The session back_lock must be held.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hj)5h]”hŒ Parameters”…”�”}”(hj+5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj'5ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M™hj#5ubj)�”}”(hhh]”(j„)�”}”(hŒ-``struct iscsi_conn *conn`` iscsi connection ”h]”(jŠ)�”}”(hŒ``struct iscsi_conn *conn``”h]”j�)�”}”(hjH5h]”hŒstruct iscsi_conn *conn”…”�”}”(hjJ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjF5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M–hjB5ubj¦)�”}”(hhh]”hÝ)�”}”(hŒiscsi connection”h]”hŒiscsi connection”…”�”}”(hja5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j]5h´M–hj^5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjB5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j]5h´M–hj?5ubj„)�”}”(hŒ``itt_t itt`` itt ”h]”(jŠ)�”}”(hŒ ``itt_t itt``”h]”j�)�”}”(hj�5h]”hŒ itt_t itt”…”�”}”(hjƒ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M—hj{5ubj¦)�”}”(hhh]”hÝ)�”}”(hŒitt”h]”hŒitt”…”�”}”(hjš5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j–5h´M—hj—5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj{5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j–5h´M—hj?5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j~hj#5ubhÝ)�”}”(hŒ**Description**”h]”ji)�”}”(hj¼5h]”hŒ Description”…”�”}”(hj¾5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjº5ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M™hj#5ubhÝ)�”}”(hŒsThis should be used for mgmt tasks like login and nops, or if the LDD's itt space does not include the session age.”h]”hŒuThis should be used for mgmt tasks like login and nops, or if the LDD’s itt space does not include the session age.”…”�”}”(hjÒ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M˜hj#5ubhÝ)�”}”(hŒ#The session back_lock must be held.”h]”hŒ#The session back_lock must be held.”…”�”}”(hjá5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M›hj#5ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hj™,h²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œ!__iscsi_complete_pdu (C function)”Œc.__iscsi_complete_pdu”hNt”auh1j,hj™,h²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒbint __iscsi_complete_pdu (struct iscsi_conn *conn, struct iscsi_hdr *hdr, char *data, int datalen)”h]”jI)�”}”(hŒaint __iscsi_complete_pdu(struct iscsi_conn *conn, struct iscsi_hdr *hdr, char *data, int datalen)”h]”(jO)�”}”(hŒint”h]”hŒint”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj 6h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M²ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj 6h²hh³j6h´M²ubjr)�”}”(hŒ__iscsi_complete_pdu”h]”jx)�”}”(hŒ__iscsi_complete_pdu”h]”hŒ__iscsi_complete_pdu”…”�”}”(hj16h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj-6ubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhj 6h²hh³j6h´M²ubj“)�”}”(hŒI(struct iscsi_conn *conn, struct iscsi_hdr *hdr, char *data, int datalen)”h]”(j™)�”}”(hŒstruct iscsi_conn *conn”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hjM6h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjI6ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZ6h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjI6ubh)�”}”(hhh]”jx)�”}”(hŒ iscsi_conn”h]”hŒ iscsi_conn”…”�”}”(hjk6h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjh6ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jm6Œmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×j36sbŒc.__iscsi_complete_pdu”†”asbuh1hhjI6ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹6h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjI6ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj™6h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjI6ubjx)�”}”(hŒconn”h]”hŒconn”…”�”}”(hj¦6h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjI6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjE6ubj™)�”}”(hŒstruct iscsi_hdr *hdr”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hj¿6h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhj»6ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌ6h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj»6ubh)�”}”(hhh]”jx)�”}”(hŒ iscsi_hdr”h]”hŒ iscsi_hdr”…”�”}”(hjÝ6h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÚ6ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jß6Œmodname”NŒ classname”NjÛjÞ)�”}”já]”j‡6Œc.__iscsi_complete_pdu”†”asbuh1hhj»6ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjû6h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj»6ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj 7h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj»6ubjx)�”}”(hŒhdr”h]”hŒhdr”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj»6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjE6ubj™)�”}”(hŒ char *data”h]”(jO)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj/7h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj+7ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=7h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj+7ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjK7h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj+7ubjx)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjX7h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj+7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjE6ubj™)�”}”(hŒ int datalen”h]”(jO)�”}”(hŒint”h]”hŒint”…”�”}”(hjq7h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjm7ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjm7ubjx)�”}”(hŒdatalen”h]”hŒdatalen”…”�”}”(hj�7h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjm7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjE6ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hj 6h²hh³j6h´M²ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hj6h²hh³j6h´M²ubah}”(h]”j6ah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³j6h´M²hj6h²hubj8)�”}”(hhh]”hÝ)�”}”(hŒ complete pdu”h]”hŒ complete pdu”…”�”}”(hj·7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M²hj´7h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj6h²hh³j6h´M²ubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYjÏ7jZjÏ7j[‰j\‰j]‰uh1j=h²hhj™,h³Nh´Nubj_)�”}”(hXZ**Parameters** ``struct iscsi_conn *conn`` iscsi conn ``struct iscsi_hdr *hdr`` iscsi header ``char *data`` data buffer ``int datalen`` len of data buffer **Description** Completes pdu processing by freeing any resources allocated at queuecommand or send generic. session back_lock must be held and verify itt must have been called.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hjÙ7h]”hŒ Parameters”…”�”}”(hjÛ7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj×7ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M¶hjÓ7ubj)�”}”(hhh]”(j„)�”}”(hŒ'``struct iscsi_conn *conn`` iscsi conn ”h]”(jŠ)�”}”(hŒ``struct iscsi_conn *conn``”h]”j�)�”}”(hjø7h]”hŒstruct iscsi_conn *conn”…”�”}”(hjú7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjö7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M³hjò7ubj¦)�”}”(hhh]”hÝ)�”}”(hŒ iscsi conn”h]”hŒ iscsi conn”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j 8h´M³hj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjò7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j 8h´M³hjï7ubj„)�”}”(hŒ'``struct iscsi_hdr *hdr`` iscsi header ”h]”(jŠ)�”}”(hŒ``struct iscsi_hdr *hdr``”h]”j�)�”}”(hj18h]”hŒstruct iscsi_hdr *hdr”…”�”}”(hj38h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj/8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M´hj+8ubj¦)�”}”(hhh]”hÝ)�”}”(hŒ iscsi header”h]”hŒ iscsi header”…”�”}”(hjJ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jF8h´M´hjG8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj+8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jF8h´M´hjï7ubj„)�”}”(hŒ``char *data`` data buffer ”h]”(jŠ)�”}”(hŒ``char *data``”h]”j�)�”}”(hjj8h]”hŒ char *data”…”�”}”(hjl8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjh8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´Mµhjd8ubj¦)�”}”(hhh]”hÝ)�”}”(hŒ data buffer”h]”hŒ data buffer”…”�”}”(hjƒ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j8h´Mµhj€8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjd8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j8h´Mµhjï7ubj„)�”}”(hŒ#``int datalen`` len of data buffer ”h]”(jŠ)�”}”(hŒ``int datalen``”h]”j�)�”}”(hj£8h]”hŒ int datalen”…”�”}”(hj¥8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¡8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M¶hj�8ubj¦)�”}”(hhh]”hÝ)�”}”(hŒlen of data buffer”h]”hŒlen of data buffer”…”�”}”(hj¼8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j¸8h´M¶hj¹8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj�8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j¸8h´M¶hjï7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÓ7ubhÝ)�”}”(hŒ**Description**”h]”ji)�”}”(hjÞ8h]”hŒ Description”…”�”}”(hjà8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjÜ8ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M¸hjÓ7ubhÝ)�”}”(hŒ¡Completes pdu processing by freeing any resources allocated at queuecommand or send generic. session back_lock must be held and verify itt must have been called.”h]”hŒ¡Completes pdu processing by freeing any resources allocated at queuecommand or send generic. session back_lock must be held and verify itt must have been called.”…”�”}”(hjô8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M·hjÓ7ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hj™,h²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œiscsi_itt_to_ctask (C function)”Œc.iscsi_itt_to_ctask”hNt”auh1j,hj™,h²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒKstruct iscsi_task * iscsi_itt_to_ctask (struct iscsi_conn *conn, itt_t itt)”h]”jI)�”}”(hŒIstruct iscsi_task *iscsi_itt_to_ctask(struct iscsi_conn *conn, itt_t itt)”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hj#9h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhj9h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´Mvubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj19h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj9h²hh³j09h´Mvubh)�”}”(hhh]”jx)�”}”(hŒ iscsi_task”h]”hŒ iscsi_task”…”�”}”(hjB9h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj?9ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jD9Œmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j׌iscsi_itt_to_ctask”sbŒc.iscsi_itt_to_ctask”†”asbuh1hhj9h²hh³j09h´Mvubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjc9h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj9h²hh³j09h´Mvubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjq9h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj9h²hh³j09h´Mvubjr)�”}”(hŒiscsi_itt_to_ctask”h]”jx)�”}”(hj`9h]”hŒiscsi_itt_to_ctask”…”�”}”(hj‚9h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj~9ubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhj9h²hh³j09h´Mvubj“)�”}”(hŒ$(struct iscsi_conn *conn, itt_t itt)”h]”(j™)�”}”(hŒstruct iscsi_conn *conn”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hj�9h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhj™9ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjª9h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj™9ubh)�”}”(hhh]”jx)�”}”(hŒ iscsi_conn”h]”hŒ iscsi_conn”…”�”}”(hj»9h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj¸9ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j½9Œmodname”NŒ classname”NjÛjÞ)�”}”já]”j^9Œc.iscsi_itt_to_ctask”†”asbuh1hhj™9ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙ9h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj™9ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjç9h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj™9ubjx)�”}”(hŒconn”h]”hŒconn”…”�”}”(hjô9h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj™9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj•9ubj™)�”}”(hŒ itt_t itt”h]”(h)�”}”(hhh]”jx)�”}”(hŒitt_t”h]”hŒitt_t”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj :ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j:Œmodname”NŒ classname”NjÛjÞ)�”}”já]”j^9Œc.iscsi_itt_to_ctask”†”asbuh1hhj :ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.:h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj :ubjx)�”}”(hŒitt”h]”hŒitt”…”�”}”(hj<:h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj :ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj•9ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hj9h²hh³j09h´Mvubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hj9h²hh³j09h´Mvubah}”(h]”j9ah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³j09h´Mvhj9h²hubj8)�”}”(hhh]”hÝ)�”}”(hŒlook up ctask by itt”h]”hŒlook up ctask by itt”…”�”}”(hjf:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´Mvhjc:h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj9h²hh³j09h´Mvubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYj~:jZj~:j[‰j\‰j]‰uh1j=h²hhj™,h³Nh´Nubj_)�”}”(hŒ­**Parameters** ``struct iscsi_conn *conn`` iscsi connection ``itt_t itt`` itt **Description** This should be used for cmd tasks. The session back_lock must be held.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hjˆ:h]”hŒ Parameters”…”�”}”(hjŠ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj†:ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´Mzhj‚:ubj)�”}”(hhh]”(j„)�”}”(hŒ-``struct iscsi_conn *conn`` iscsi connection ”h]”(jŠ)�”}”(hŒ``struct iscsi_conn *conn``”h]”j�)�”}”(hj§:h]”hŒstruct iscsi_conn *conn”…”�”}”(hj©:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¥:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´Mwhj¡:ubj¦)�”}”(hhh]”hÝ)�”}”(hŒiscsi connection”h]”hŒiscsi connection”…”�”}”(hjÀ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j¼:h´Mwhj½:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj¡:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j¼:h´Mwhjž:ubj„)�”}”(hŒ``itt_t itt`` itt ”h]”(jŠ)�”}”(hŒ ``itt_t itt``”h]”j�)�”}”(hjà:h]”hŒ itt_t itt”…”�”}”(hjâ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÞ:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´MxhjÚ:ubj¦)�”}”(hhh]”hÝ)�”}”(hŒitt”h]”hŒitt”…”�”}”(hjù:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jõ:h´Mxhjö:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjÚ:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jõ:h´Mxhjž:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j~hj‚:ubhÝ)�”}”(hŒ**Description**”h]”ji)�”}”(hj;h]”hŒ Description”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´Mzhj‚:ubhÝ)�”}”(hŒ"This should be used for cmd tasks.”h]”hŒ"This should be used for cmd tasks.”…”�”}”(hj1;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´Myhj‚:ubhÝ)�”}”(hŒ#The session back_lock must be held.”h]”hŒ#The session back_lock must be held.”…”�”}”(hj@;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M{hj‚:ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hj™,h²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œiscsi_requeue_task (C function)”Œc.iscsi_requeue_task”hNt”auh1j,hj™,h²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒ1void iscsi_requeue_task (struct iscsi_task *task)”h]”jI)�”}”(hŒ0void iscsi_requeue_task(struct iscsi_task *task)”h]”(jO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjo;h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjk;h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´Mubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~;h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjk;h²hh³j};h´Mubjr)�”}”(hŒiscsi_requeue_task”h]”jx)�”}”(hŒiscsi_requeue_task”h]”hŒiscsi_requeue_task”…”�”}”(hj�;h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjŒ;ubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhjk;h²hh³j};h´Mubj“)�”}”(hŒ(struct iscsi_task *task)”h]”j™)�”}”(hŒstruct iscsi_task *task”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hj¬;h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhj¨;ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹;h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj¨;ubh)�”}”(hhh]”jx)�”}”(hŒ iscsi_task”h]”hŒ iscsi_task”…”�”}”(hjÊ;h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÇ;ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jÌ;Œmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×j’;sbŒc.iscsi_requeue_task”†”asbuh1hhj¨;ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjê;h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj¨;ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjø;h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj¨;ubjx)�”}”(hŒtask”h]”hŒtask”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj¨;ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj¤;ubah}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hjk;h²hh³j};h´Mubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hjg;h²hh³j};h´Mubah}”(h]”jb;ah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³j};h´Mhjd;h²hubj8)�”}”(hhh]”hÝ)�”}”(hŒ*requeue task to run from session workqueue”h]”hŒ*requeue task to run from session workqueue”…”�”}”(hj/<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´Mhj,<h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hjd;h²hh³j};h´Mubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYjG<jZjG<j[‰j\‰j]‰uh1j=h²hhj™,h³Nh´Nubj_)�”}”(hŒ—**Parameters** ``struct iscsi_task *task`` task to requeue **Description** Callers must have taken a ref to the task that is going to be requeued.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hjQ<h]”hŒ Parameters”…”�”}”(hjS<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjO<ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´MhjK<ubj)�”}”(hhh]”j„)�”}”(hŒ,``struct iscsi_task *task`` task to requeue ”h]”(jŠ)�”}”(hŒ``struct iscsi_task *task``”h]”j�)�”}”(hjp<h]”hŒstruct iscsi_task *task”…”�”}”(hjr<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjn<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´Mhjj<ubj¦)�”}”(hhh]”hÝ)�”}”(hŒtask to requeue”h]”hŒtask to requeue”…”�”}”(hj‰<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j…<h´Mhj†<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjj<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j…<h´Mhjg<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjK<ubhÝ)�”}”(hŒ**Description**”h]”ji)�”}”(hj«<h]”hŒ Description”…”�”}”(hj­<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj©<ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´MhjK<ubhÝ)�”}”(hŒGCallers must have taken a ref to the task that is going to be requeued.”h]”hŒGCallers must have taken a ref to the task that is going to be requeued.”…”�”}”(hjÁ<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´MhjK<ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hj™,h²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œ iscsi_suspend_queue (C function)”Œc.iscsi_suspend_queue”hNt”auh1j,hj™,h²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒ2void iscsi_suspend_queue (struct iscsi_conn *conn)”h]”jI)�”}”(hŒ1void iscsi_suspend_queue(struct iscsi_conn *conn)”h]”(jO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjð<h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjì<h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´MÒubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿ<h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjì<h²hh³jþ<h´MÒubjr)�”}”(hŒiscsi_suspend_queue”h]”jx)�”}”(hŒiscsi_suspend_queue”h]”hŒiscsi_suspend_queue”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj =ubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhjì<h²hh³jþ<h´MÒubj“)�”}”(hŒ(struct iscsi_conn *conn)”h]”j™)�”}”(hŒstruct iscsi_conn *conn”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hj-=h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhj)=ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:=h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj)=ubh)�”}”(hhh]”jx)�”}”(hŒ iscsi_conn”h]”hŒ iscsi_conn”…”�”}”(hjK=h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjH=ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jM=Œmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×j=sbŒc.iscsi_suspend_queue”†”asbuh1hhj)=ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjk=h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj)=ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjy=h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj)=ubjx)�”}”(hŒconn”h]”hŒconn”…”�”}”(hj†=h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj)=ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj%=ubah}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hjì<h²hh³jþ<h´MÒubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hjè<h²hh³jþ<h´MÒubah}”(h]”jã<ah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³jþ<h´MÒhjå<h²hubj8)�”}”(hhh]”hÝ)�”}”(hŒsuspend iscsi_queuecommand”h]”hŒsuspend iscsi_queuecommand”…”�”}”(hj°=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´MÒhj­=h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hjå<h²hh³jþ<h´MÒubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYjÈ=jZjÈ=j[‰j\‰j]‰uh1j=h²hhj™,h³Nh´Nubj_)�”}”(hXÓ**Parameters** ``struct iscsi_conn *conn`` iscsi conn to stop queueing IO on **Description** This grabs the session frwd_lock to make sure no one is in xmit_task/queuecommand, and then sets suspend to prevent new commands from being queued. This only needs to be called by offload drivers that need to sync a path like ep disconnect with the iscsi_queuecommand/xmit_task. To start IO again libiscsi will call iscsi_start_tx and iscsi_unblock_session when in FFP.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hjÒ=h]”hŒ Parameters”…”�”}”(hjÔ=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjÐ=ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´MÖhjÌ=ubj)�”}”(hhh]”j„)�”}”(hŒ>``struct iscsi_conn *conn`` iscsi conn to stop queueing IO on ”h]”(jŠ)�”}”(hŒ``struct iscsi_conn *conn``”h]”j�)�”}”(hjñ=h]”hŒstruct iscsi_conn *conn”…”�”}”(hjó=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjï=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´MÓhjë=ubj¦)�”}”(hhh]”hÝ)�”}”(hŒ!iscsi conn to stop queueing IO on”h]”hŒ!iscsi conn to stop queueing IO on”…”�”}”(hj >h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j>h´MÓhj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjë=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j>h´MÓhjè=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÌ=ubhÝ)�”}”(hŒ**Description**”h]”ji)�”}”(hj,>h]”hŒ Description”…”�”}”(hj.>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj*>ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´MÕhjÌ=ubhÝ)�”}”(hXqThis grabs the session frwd_lock to make sure no one is in xmit_task/queuecommand, and then sets suspend to prevent new commands from being queued. This only needs to be called by offload drivers that need to sync a path like ep disconnect with the iscsi_queuecommand/xmit_task. To start IO again libiscsi will call iscsi_start_tx and iscsi_unblock_session when in FFP.”h]”hXqThis grabs the session frwd_lock to make sure no one is in xmit_task/queuecommand, and then sets suspend to prevent new commands from being queued. This only needs to be called by offload drivers that need to sync a path like ep disconnect with the iscsi_queuecommand/xmit_task. To start IO again libiscsi will call iscsi_start_tx and iscsi_unblock_session when in FFP.”…”�”}”(hjB>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´MÔhjÌ=ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hj™,h²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œiscsi_suspend_tx (C function)”Œc.iscsi_suspend_tx”hNt”auh1j,hj™,h²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒ/void iscsi_suspend_tx (struct iscsi_conn *conn)”h]”jI)�”}”(hŒ.void iscsi_suspend_tx(struct iscsi_conn *conn)”h]”(jO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjq>h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjm>h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´Måubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€>h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjm>h²hh³j>h´Måubjr)�”}”(hŒiscsi_suspend_tx”h]”jx)�”}”(hŒiscsi_suspend_tx”h]”hŒiscsi_suspend_tx”…”�”}”(hj’>h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjŽ>ubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhjm>h²hh³j>h´Måubj“)�”}”(hŒ(struct iscsi_conn *conn)”h]”j™)�”}”(hŒstruct iscsi_conn *conn”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hj®>h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjª>ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»>h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjª>ubh)�”}”(hhh]”jx)�”}”(hŒ iscsi_conn”h]”hŒ iscsi_conn”…”�”}”(hjÌ>h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÉ>ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jÎ>Œmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×j”>sbŒc.iscsi_suspend_tx”†”asbuh1hhjª>ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjì>h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjª>ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjú>h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjª>ubjx)�”}”(hŒconn”h]”hŒconn”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjª>ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj¦>ubah}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hjm>h²hh³j>h´Måubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hji>h²hh³j>h´Måubah}”(h]”jd>ah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³j>h´Måhjf>h²hubj8)�”}”(hhh]”hÝ)�”}”(hŒsuspend iscsi_data_xmit”h]”hŒsuspend iscsi_data_xmit”…”�”}”(hj1?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´Måhj.?h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hjf>h²hh³j>h´Måubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYjI?jZjI?j[‰j\‰j]‰uh1j=h²hhj™,h³Nh´Nubj_)�”}”(hX**Parameters** ``struct iscsi_conn *conn`` iscsi conn to stop processing IO on. **Description** This function sets the suspend bit to prevent iscsi_data_xmit from sending new IO, and if work is queued on the xmit thread it will wait for it to be completed.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hjS?h]”hŒ Parameters”…”�”}”(hjU?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjQ?ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´MéhjM?ubj)�”}”(hhh]”j„)�”}”(hŒA``struct iscsi_conn *conn`` iscsi conn to stop processing IO on. ”h]”(jŠ)�”}”(hŒ``struct iscsi_conn *conn``”h]”j�)�”}”(hjr?h]”hŒstruct iscsi_conn *conn”…”�”}”(hjt?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjp?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´Mæhjl?ubj¦)�”}”(hhh]”hÝ)�”}”(hŒ$iscsi conn to stop processing IO on.”h]”hŒ$iscsi conn to stop processing IO on.”…”�”}”(hj‹?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j‡?h´Mæhjˆ?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjl?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j‡?h´Mæhji?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjM?ubhÝ)�”}”(hŒ**Description**”h]”ji)�”}”(hj­?h]”hŒ Description”…”�”}”(hj¯?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj«?ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´MèhjM?ubhÝ)�”}”(hŒ This function sets the suspend bit to prevent iscsi_data_xmit from sending new IO, and if work is queued on the xmit thread it will wait for it to be completed.”h]”hŒ This function sets the suspend bit to prevent iscsi_data_xmit from sending new IO, and if work is queued on the xmit thread it will wait for it to be completed.”…”�”}”(hjÃ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´MçhjM?ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hj™,h²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œiscsi_suspend_rx (C function)”Œc.iscsi_suspend_rx”hNt”auh1j,hj™,h²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒ/void iscsi_suspend_rx (struct iscsi_conn *conn)”h]”jI)�”}”(hŒ.void iscsi_suspend_rx(struct iscsi_conn *conn)”h]”(jO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjò?h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjî?h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´Mþubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjî?h²hh³j@h´Mþubjr)�”}”(hŒiscsi_suspend_rx”h]”jx)�”}”(hŒiscsi_suspend_rx”h]”hŒiscsi_suspend_rx”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj@ubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhjî?h²hh³j@h´Mþubj“)�”}”(hŒ(struct iscsi_conn *conn)”h]”j™)�”}”(hŒstruct iscsi_conn *conn”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hj/@h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhj+@ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<@h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj+@ubh)�”}”(hhh]”jx)�”}”(hŒ iscsi_conn”h]”hŒ iscsi_conn”…”�”}”(hjM@h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjJ@ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jO@Œmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×j@sbŒc.iscsi_suspend_rx”†”asbuh1hhj+@ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjm@h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj+@ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj{@h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj+@ubjx)�”}”(hŒconn”h]”hŒconn”…”�”}”(hjˆ@h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj+@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj'@ubah}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hjî?h²hh³j@h´Mþubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hjê?h²hh³j@h´Mþubah}”(h]”jå?ah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³j@h´Mþhjç?h²hubj8)�”}”(hhh]”hÝ)�”}”(hŒ$Prevent recvwork from running again.”h]”hŒ$Prevent recvwork from running again.”…”�”}”(hj²@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´Mþhj¯@h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hjç?h²hh³j@h´Mþubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYjÊ@jZjÊ@j[‰j\‰j]‰uh1j=h²hhj™,h³Nh´Nubj_)�”}”(hŒA**Parameters** ``struct iscsi_conn *conn`` iscsi conn to stop.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hjÔ@h]”hŒ Parameters”…”�”}”(hjÖ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjÒ@ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´MhjÎ@ubj)�”}”(hhh]”j„)�”}”(hŒ/``struct iscsi_conn *conn`` iscsi conn to stop.”h]”(jŠ)�”}”(hŒ``struct iscsi_conn *conn``”h]”j�)�”}”(hjó@h]”hŒstruct iscsi_conn *conn”…”�”}”(hjõ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjñ@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´Mhjí@ubj¦)�”}”(hhh]”hÝ)�”}”(hŒiscsi conn to stop.”h]”hŒiscsi conn to stop.”…”�”}”(hj Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´Mÿhj Aubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjí@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jAh´Mhjê@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÎ@ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hj™,h²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œiscsi_conn_unbind (C function)”Œc.iscsi_conn_unbind”hNt”auh1j,hj™,h²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒHvoid iscsi_conn_unbind (struct iscsi_cls_conn *cls_conn, bool is_active)”h]”jI)�”}”(hŒGvoid iscsi_conn_unbind(struct iscsi_cls_conn *cls_conn, bool is_active)”h]”(jO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjMAh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjIAh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´Mðubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\Ah²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjIAh²hh³j[Ah´Mðubjr)�”}”(hŒiscsi_conn_unbind”h]”jx)�”}”(hŒiscsi_conn_unbind”h]”hŒiscsi_conn_unbind”…”�”}”(hjnAh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjjAubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhjIAh²hh³j[Ah´Mðubj“)�”}”(hŒ1(struct iscsi_cls_conn *cls_conn, bool is_active)”h]”(j™)�”}”(hŒstruct iscsi_cls_conn *cls_conn”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hjŠAh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhj†Aubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—Ah²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj†Aubh)�”}”(hhh]”jx)�”}”(hŒiscsi_cls_conn”h]”hŒiscsi_cls_conn”…”�”}”(hj¨Ah²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj¥Aubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jªAŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×jpAsbŒc.iscsi_conn_unbind”†”asbuh1hhj†Aubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈAh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj†Aubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjÖAh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj†Aubjx)�”}”(hŒcls_conn”h]”hŒcls_conn”…”�”}”(hjãAh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj†Aubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj‚Aubj™)�”}”(hŒbool is_active”h]”(jO)�”}”(hjÕ h]”hŒbool”…”�”}”(hjüAh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjøAubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Bh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjøAubjx)�”}”(hŒ is_active”h]”hŒ is_active”…”�”}”(hjBh²hh³Nh´•DNubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjøAubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj‚Aubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hjIAh²hh³j[Ah´Mðubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hjEAh²hh³j[Ah´Mðubah}”(h]”j@Aah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³j[Ah´MðhjBAh²hubj8)�”}”(hhh]”hÝ)�”}”(hŒprevent queueing to conn.”h]”hŒprevent queueing to conn.”…”�”}”(hjABh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´Mðhj>Bh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hjBAh²hh³j[Ah´Mðubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYjYBjZjYBj[‰j\‰j]‰uh1j=h²hhj™,h³Nh´Nubj_)�”}”(hXX**Parameters** ``struct iscsi_cls_conn *cls_conn`` iscsi conn ep is bound to. ``bool is_active`` is the conn in use for boot or is this for EH/termination **Description** This must be called by drivers implementing the ep_disconnect callout. It disables queueing to the connection from libiscsi in preparation for an ep_disconnect call.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hjcBh]”hŒ Parameters”…”�”}”(hjeBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjaBubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´Môhj]Bubj)�”}”(hhh]”(j„)�”}”(hŒ?``struct iscsi_cls_conn *cls_conn`` iscsi conn ep is bound to. ”h]”(jŠ)�”}”(hŒ#``struct iscsi_cls_conn *cls_conn``”h]”j�)�”}”(hj‚Bh]”hŒstruct iscsi_cls_conn *cls_conn”…”�”}”(hj„Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj€Bubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´Mñhj|Bubj¦)�”}”(hhh]”hÝ)�”}”(hŒiscsi conn ep is bound to.”h]”hŒiscsi conn ep is bound to.”…”�”}”(hj›Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j—Bh´Mñhj˜Bubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj|Bubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j—Bh´MñhjyBubj„)�”}”(hŒM``bool is_active`` is the conn in use for boot or is this for EH/termination ”h]”(jŠ)�”}”(hŒ``bool is_active``”h]”j�)�”}”(hj»Bh]”hŒbool is_active”…”�”}”(hj½Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¹Bubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´MòhjµBubj¦)�”}”(hhh]”hÝ)�”}”(hŒ9is the conn in use for boot or is this for EH/termination”h]”hŒ9is the conn in use for boot or is this for EH/termination”…”�”}”(hjÔBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÐBh´MòhjÑBubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjµBubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jÐBh´MòhjyBubeh}”(h]”h ]”h"]”h$]”h&]”uh1j~hj]BubhÝ)�”}”(hŒ**Description**”h]”ji)�”}”(hjöBh]”hŒ Description”…”�”}”(hjøBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjôBubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´Môhj]BubhÝ)�”}”(hŒ¥This must be called by drivers implementing the ep_disconnect callout. It disables queueing to the connection from libiscsi in preparation for an ep_disconnect call.”h]”hŒ¥This must be called by drivers implementing the ep_disconnect callout. It disables queueing to the connection from libiscsi in preparation for an ep_disconnect call.”…”�”}”(hj Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´Móhj]Bubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hj™,h²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œ#iscsi_eh_session_reset (C function)”Œc.iscsi_eh_session_reset”hNt”auh1j,hj™,h²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒ1int iscsi_eh_session_reset (struct scsi_cmnd *sc)”h]”jI)�”}”(hŒ0int iscsi_eh_session_reset(struct scsi_cmnd *sc)”h]”(jO)�”}”(hŒint”h]”hŒint”…”�”}”(hj;Ch²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj7Ch²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M' ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJCh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj7Ch²hh³jICh´M' ubjr)�”}”(hŒiscsi_eh_session_reset”h]”jx)�”}”(hŒiscsi_eh_session_reset”h]”hŒiscsi_eh_session_reset”…”�”}”(hj\Ch²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjXCubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhj7Ch²hh³jICh´M' ubj“)�”}”(hŒ(struct scsi_cmnd *sc)”h]”j™)�”}”(hŒstruct scsi_cmnd *sc”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hjxCh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjtCubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…Ch²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjtCubh)�”}”(hhh]”jx)�”}”(hŒ scsi_cmnd”h]”hŒ scsi_cmnd”…”�”}”(hj–Ch²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj“Cubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j˜CŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×j^CsbŒc.iscsi_eh_session_reset”†”asbuh1hhjtCubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶Ch²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjtCubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjÄCh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjtCubjx)�”}”(hŒsc”h]”hŒsc”…”�”}”(hjÑCh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjtCubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjpCubah}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hj7Ch²hh³jICh´M' ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hj3Ch²hh³jICh´M' ubah}”(h]”j.Cah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³jICh´M' hj0Ch²hubj8)�”}”(hhh]”hÝ)�”}”(hŒ drop session and attempt relogin”h]”hŒ drop session and attempt relogin”…”�”}”(hjûCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M' hjøCh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj0Ch²hh³jICh´M' ubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYjDjZjDj[‰j\‰j]‰uh1j=h²hhj™,h³Nh´Nubj_)�”}”(hŒ·**Parameters** ``struct scsi_cmnd *sc`` scsi command **Description** This function will wait for a relogin, session termination from userspace, or a recovery/replacement timeout.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hjDh]”hŒ Parameters”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjDubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M+ hjDubj)�”}”(hhh]”j„)�”}”(hŒ&``struct scsi_cmnd *sc`` scsi command ”h]”(jŠ)�”}”(hŒ``struct scsi_cmnd *sc``”h]”j�)�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj:Dubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M( hj6Dubj¦)�”}”(hhh]”hÝ)�”}”(hŒ scsi command”h]”hŒ scsi command”…”�”}”(hjUDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jQDh´M( hjRDubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj6Dubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jQDh´M( hj3Dubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjDubhÝ)�”}”(hŒ**Description**”h]”ji)�”}”(hjwDh]”hŒ Description”…”�”}”(hjyDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjuDubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M* hjDubhÝ)�”}”(hŒmThis function will wait for a relogin, session termination from userspace, or a recovery/replacement timeout.”h]”hŒmThis function will wait for a relogin, session termination from userspace, or a recovery/replacement timeout.”…”�”}”(hj�Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M) hjDubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hj™,h²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œ$iscsi_eh_recover_target (C function)”Œc.iscsi_eh_recover_target”hNt”auh1j,hj™,h²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒ2int iscsi_eh_recover_target (struct scsi_cmnd *sc)”h]”jI)�”}”(hŒ1int iscsi_eh_recover_target(struct scsi_cmnd *sc)”h]”(jO)�”}”(hŒint”h]”hŒint”…”�”}”(hj¼Dh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj¸Dh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M» ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjËDh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj¸Dh²hh³jÊDh´M» ubjr)�”}”(hŒiscsi_eh_recover_target”h]”jx)�”}”(hŒiscsi_eh_recover_target”h]”hŒiscsi_eh_recover_target”…”�”}”(hjÝDh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÙDubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhj¸Dh²hh³jÊDh´M» ubj“)�”}”(hŒ(struct scsi_cmnd *sc)”h]”j™)�”}”(hŒstruct scsi_cmnd *sc”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hjùDh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjõDubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjõDubh)�”}”(hhh]”jx)�”}”(hŒ scsi_cmnd”h]”hŒ scsi_cmnd”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjEubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jEŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×jßDsbŒc.iscsi_eh_recover_target”†”asbuh1hhjõDubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7Eh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjõDubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjEEh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjõDubjx)�”}”(hŒsc”h]”hŒsc”…”�”}”(hjREh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjõDubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjñDubah}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hj¸Dh²hh³jÊDh´M» ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hj´Dh²hh³jÊDh´M» ubah}”(h]”j¯Dah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³jÊDh´M» hj±Dh²hubj8)�”}”(hhh]”hÝ)�”}”(hŒ%reset target and possibly the session”h]”hŒ%reset target and possibly the session”…”�”}”(hj|Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M» hjyEh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj±Dh²hh³jÊDh´M» ubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYj”EjZj”Ej[‰j\‰j]‰uh1j=h²hhj™,h³Nh´Nubj_)�”}”(hŒ²**Parameters** ``struct scsi_cmnd *sc`` scsi command **Description** This will attempt to send a warm target reset. If that fails, we will escalate to ERL0 session recovery.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hjžEh]”hŒ Parameters”…”�”}”(hj Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjœEubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M¿ hj˜Eubj)�”}”(hhh]”j„)�”}”(hŒ&``struct scsi_cmnd *sc`` scsi command ”h]”(jŠ)�”}”(hŒ``struct scsi_cmnd *sc``”h]”j�)�”}”(hj½Eh]”hŒstruct scsi_cmnd *sc”…”�”}”(hj¿Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj»Eubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M¼ hj·Eubj¦)�”}”(hhh]”hÝ)�”}”(hŒ scsi command”h]”hŒ scsi command”…”�”}”(hjÖEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÒEh´M¼ hjÓEubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj·Eubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jÒEh´M¼ hj´Eubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj˜EubhÝ)�”}”(hŒ**Description**”h]”ji)�”}”(hjøEh]”hŒ Description”…”�”}”(hjúEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjöEubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M¾ hj˜EubhÝ)�”}”(hŒhThis will attempt to send a warm target reset. If that fails, we will escalate to ERL0 session recovery.”h]”hŒhThis will attempt to send a warm target reset. If that fails, we will escalate to ERL0 session recovery.”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M½ hj˜Eubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hj™,h²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œiscsi_host_add (C function)”Œc.iscsi_host_add”hNt”auh1j,hj™,h²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒAint iscsi_host_add (struct Scsi_Host *shost, struct device *pdev)”h]”jI)�”}”(hŒ@int iscsi_host_add(struct Scsi_Host *shost, struct device *pdev)”h]”(jO)�”}”(hŒint”h]”hŒint”…”�”}”(hj=Fh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj9Fh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M8 ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjLFh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj9Fh²hh³jKFh´M8 ubjr)�”}”(hŒiscsi_host_add”h]”jx)�”}”(hŒiscsi_host_add”h]”hŒiscsi_host_add”…”�”}”(hj^Fh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjZFubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhj9Fh²hh³jKFh´M8 ubj“)�”}”(hŒ.(struct Scsi_Host *shost, struct device *pdev)”h]”(j™)�”}”(hŒstruct Scsi_Host *shost”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hjzFh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjvFubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡Fh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjvFubh)�”}”(hhh]”jx)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hj˜Fh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj•Fubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jšFŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×j`FsbŒc.iscsi_host_add”†”asbuh1hhjvFubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸Fh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjvFubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjÆFh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjvFubjx)�”}”(hŒshost”h]”hŒshost”…”�”}”(hjÓFh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjvFubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjrFubj™)�”}”(hŒstruct device *pdev”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hjìFh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjèFubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùFh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjèFubh)�”}”(hhh]”jx)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj Gh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjGubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j GŒmodname”NŒ classname”NjÛjÞ)�”}”já]”j´FŒc.iscsi_host_add”†”asbuh1hhjèFubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(Gh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjèFubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj6Gh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjèFubjx)�”}”(hŒpdev”h]”hŒpdev”…”�”}”(hjCGh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjèFubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjrFubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hj9Fh²hh³jKFh´M8 ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hj5Fh²hh³jKFh´M8 ubah}”(h]”j0Fah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³jKFh´M8 hj2Fh²hubj8)�”}”(hhh]”hÝ)�”}”(hŒadd host to system”h]”hŒadd host to system”…”�”}”(hjmGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M8 hjjGh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj2Fh²hh³jKFh´M8 ubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYj…GjZj…Gj[‰j\‰j]‰uh1j=h²hhj™,h³Nh´Nubj_)�”}”(hŒÓ**Parameters** ``struct Scsi_Host *shost`` scsi host ``struct device *pdev`` parent device **Description** This should be called by partial offload and software iscsi drivers to add a host to the system.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hj�Gh]”hŒ Parameters”…”�”}”(hj‘Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj�Gubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M< hj‰Gubj)�”}”(hhh]”(j„)�”}”(hŒ&``struct Scsi_Host *shost`` scsi host ”h]”(jŠ)�”}”(hŒ``struct Scsi_Host *shost``”h]”j�)�”}”(hj®Gh]”hŒstruct Scsi_Host *shost”…”�”}”(hj°Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¬Gubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M9 hj¨Gubj¦)�”}”(hhh]”hÝ)�”}”(hŒ scsi host”h]”hŒ scsi host”…”�”}”(hjÇGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÃGh´M9 hjÄGubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj¨Gubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jÃGh´M9 hj¥Gubj„)�”}”(hŒ&``struct device *pdev`` parent device ”h]”(jŠ)�”}”(hŒ``struct device *pdev``”h]”j�)�”}”(hjçGh]”hŒstruct device *pdev”…”�”}”(hjéGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjåGubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M: hjáGubj¦)�”}”(hhh]”hÝ)�”}”(hŒ parent device”h]”hŒ parent device”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jüGh´M: hjýGubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjáGubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jüGh´M: hj¥Gubeh}”(h]”h ]”h"]”h$]”h&]”uh1j~hj‰GubhÝ)�”}”(hŒ**Description**”h]”ji)�”}”(hj"Hh]”hŒ Description”…”�”}”(hj$Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj Hubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M< hj‰GubhÝ)�”}”(hŒ`This should be called by partial offload and software iscsi drivers to add a host to the system.”h]”hŒ`This should be called by partial offload and software iscsi drivers to add a host to the system.”…”�”}”(hj8Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M; hj‰Gubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hj™,h²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œiscsi_host_alloc (C function)”Œc.iscsi_host_alloc”hNt”auh1j,hj™,h²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒqstruct Scsi_Host * iscsi_host_alloc (const struct scsi_host_template *sht, int dd_data_size, bool xmit_can_sleep)”h]”jI)�”}”(hŒostruct Scsi_Host *iscsi_host_alloc(const struct scsi_host_template *sht, int dd_data_size, bool xmit_can_sleep)”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hjgHh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjcHh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´ML ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjuHh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjcHh²hh³jtHh´ML ubh)�”}”(hhh]”jx)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hj†Hh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjƒHubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jˆHŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j׌iscsi_host_alloc”sbŒc.iscsi_host_alloc”†”asbuh1hhjcHh²hh³jtHh´ML ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§Hh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjcHh²hh³jtHh´ML ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjµHh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjcHh²hh³jtHh´ML ubjr)�”}”(hŒiscsi_host_alloc”h]”jx)�”}”(hj¤Hh]”hŒiscsi_host_alloc”…”�”}”(hjÆHh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÂHubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhjcHh²hh³jtHh´ML ubj“)�”}”(hŒM(const struct scsi_host_template *sht, int dd_data_size, bool xmit_can_sleep)”h]”(j™)�”}”(hŒ$const struct scsi_host_template *sht”h]”(jŸ)�”}”(hŒconst”h]”hŒconst”…”�”}”(hjáHh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjÝHubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïHh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjÝHubjŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hjýHh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjÝHubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Ih²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjÝHubh)�”}”(hhh]”jx)�”}”(hŒscsi_host_template”h]”hŒscsi_host_template”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjIubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jIŒmodname”NŒ classname”NjÛjÞ)�”}”já]”j¢HŒc.iscsi_host_alloc”†”asbuh1hhjÝHubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9Ih²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjÝHubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjGIh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjÝHubjx)�”}”(hŒsht”h]”hŒsht”…”�”}”(hjTIh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÝHubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjÙHubj™)�”}”(hŒint dd_data_size”h]”(jO)�”}”(hŒint”h]”hŒint”…”�”}”(hjmIh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjiIubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{Ih²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjiIubjx)�”}”(hŒ dd_data_size”h]”hŒ dd_data_size”…”�”}”(hj‰Ih²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjiIubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjÙHubj™)�”}”(hŒbool xmit_can_sleep”h]”(jO)�”}”(hjÕ h]”hŒbool”…”�”}”(hj¢Ih²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjžIubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯Ih²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjžIubjx)�”}”(hŒxmit_can_sleep”h]”hŒxmit_can_sleep”…”�”}”(hj½Ih²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjžIubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjÙHubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hjcHh²hh³jtHh´ML ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hj_Hh²hh³jtHh´ML ubah}”(h]”jZHah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³jtHh´ML hj\Hh²hubj8)�”}”(hhh]”hÝ)�”}”(hŒallocate a host and driver data”h]”hŒallocate a host and driver data”…”�”}”(hjçIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´ML hjäIh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj\Hh²hh³jtHh´ML ubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYjÿIjZjÿIj[‰j\‰j]‰uh1j=h²hhj™,h³Nh´Nubj_)�”}”(hXj**Parameters** ``const struct scsi_host_template *sht`` scsi host template ``int dd_data_size`` driver host data size ``bool xmit_can_sleep`` bool indicating if LLD will queue IO from a work queue **Description** This should be called by partial offload and software iscsi drivers. To access the driver specific memory use the iscsi_host_priv() macro.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hj Jh]”hŒ Parameters”…”�”}”(hj Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjJubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´MP hjJubj)�”}”(hhh]”(j„)�”}”(hŒ<``const struct scsi_host_template *sht`` scsi host template ”h]”(jŠ)�”}”(hŒ(``const struct scsi_host_template *sht``”h]”j�)�”}”(hj(Jh]”hŒ$const struct scsi_host_template *sht”…”�”}”(hj*Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj&Jubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´MM hj"Jubj¦)�”}”(hhh]”hÝ)�”}”(hŒscsi host template”h]”hŒscsi host template”…”�”}”(hjAJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j=Jh´MM hj>Jubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj"Jubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j=Jh´MM hjJubj„)�”}”(hŒ+``int dd_data_size`` driver host data size ”h]”(jŠ)�”}”(hŒ``int dd_data_size``”h]”j�)�”}”(hjaJh]”hŒint dd_data_size”…”�”}”(hjcJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj_Jubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´MN hj[Jubj¦)�”}”(hhh]”hÝ)�”}”(hŒdriver host data size”h]”hŒdriver host data size”…”�”}”(hjzJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jvJh´MN hjwJubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj[Jubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jvJh´MN hjJubj„)�”}”(hŒO``bool xmit_can_sleep`` bool indicating if LLD will queue IO from a work queue ”h]”(jŠ)�”}”(hŒ``bool xmit_can_sleep``”h]”j�)�”}”(hjšJh]”hŒbool xmit_can_sleep”…”�”}”(hjœJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj˜Jubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´MO hj”Jubj¦)�”}”(hhh]”hÝ)�”}”(hŒ6bool indicating if LLD will queue IO from a work queue”h]”hŒ6bool indicating if LLD will queue IO from a work queue”…”�”}”(hj³Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j¯Jh´MO hj°Jubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj”Jubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j¯Jh´MO hjJubeh}”(h]”h ]”h"]”h$]”h&]”uh1j~hjJubhÝ)�”}”(hŒ**Description**”h]”ji)�”}”(hjÕJh]”hŒ Description”…”�”}”(hj×Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjÓJubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´MQ hjJubhÝ)�”}”(hŒŠThis should be called by partial offload and software iscsi drivers. To access the driver specific memory use the iscsi_host_priv() macro.”h]”hŒŠThis should be called by partial offload and software iscsi drivers. To access the driver specific memory use the iscsi_host_priv() macro.”…”�”}”(hjëJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´MP hjJubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hj™,h²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œiscsi_host_remove (C function)”Œc.iscsi_host_remove”hNt”auh1j,hj™,h²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒBvoid iscsi_host_remove (struct Scsi_Host *shost, bool is_shutdown)”h]”jI)�”}”(hŒAvoid iscsi_host_remove(struct Scsi_Host *shost, bool is_shutdown)”h]”(jO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjKh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´My ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)Kh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjKh²hh³j(Kh´My ubjr)�”}”(hŒiscsi_host_remove”h]”jx)�”}”(hŒiscsi_host_remove”h]”hŒiscsi_host_remove”…”�”}”(hj;Kh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj7Kubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhjKh²hh³j(Kh´My ubj“)�”}”(hŒ+(struct Scsi_Host *shost, bool is_shutdown)”h]”(j™)�”}”(hŒstruct Scsi_Host *shost”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hjWKh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjSKubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdKh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjSKubh)�”}”(hhh]”jx)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hjuKh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjrKubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jwKŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×j=KsbŒc.iscsi_host_remove”†”asbuh1hhjSKubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•Kh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjSKubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj£Kh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjSKubjx)�”}”(hŒshost”h]”hŒshost”…”�”}”(hj°Kh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjSKubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjOKubj™)�”}”(hŒbool is_shutdown”h]”(jO)�”}”(hjÕ h]”hŒbool”…”�”}”(hjÉKh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjÅKubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖKh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjÅKubjx)�”}”(hŒ is_shutdown”h]”hŒ is_shutdown”…”�”}”(hjäKh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÅKubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjOKubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hjKh²hh³j(Kh´My ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hjKh²hh³j(Kh´My ubah}”(h]”j Kah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³j(Kh´My hjKh²hubj8)�”}”(hhh]”hÝ)�”}”(hŒremove host and sessions”h]”hŒremove host and sessions”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´My hj Lh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hjKh²hh³j(Kh´My ubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYj&LjZj&Lj[‰j\‰j]‰uh1j=h²hhj™,h³Nh´Nubj_)�”}”(hŒë**Parameters** ``struct Scsi_Host *shost`` scsi host ``bool is_shutdown`` true if called from a driver shutdown callout **Description** If there are any sessions left, this will initiate the removal and wait for the completion.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hj0Lh]”hŒ Parameters”…”�”}”(hj2Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj.Lubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M} hj*Lubj)�”}”(hhh]”(j„)�”}”(hŒ&``struct Scsi_Host *shost`` scsi host ”h]”(jŠ)�”}”(hŒ``struct Scsi_Host *shost``”h]”j�)�”}”(hjOLh]”hŒstruct Scsi_Host *shost”…”�”}”(hjQLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjMLubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´Mz hjILubj¦)�”}”(hhh]”hÝ)�”}”(hŒ scsi host”h]”hŒ scsi host”…”�”}”(hjhLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jdLh´Mz hjeLubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjILubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jdLh´Mz hjFLubj„)�”}”(hŒC``bool is_shutdown`` true if called from a driver shutdown callout ”h]”(jŠ)�”}”(hŒ``bool is_shutdown``”h]”j�)�”}”(hjˆLh]”hŒbool is_shutdown”…”�”}”(hjŠLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj†Lubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M{ hj‚Lubj¦)�”}”(hhh]”hÝ)�”}”(hŒ-true if called from a driver shutdown callout”h]”hŒ-true if called from a driver shutdown callout”…”�”}”(hj¡Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j�Lh´M{ hjžLubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj‚Lubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j�Lh´M{ hjFLubeh}”(h]”h ]”h"]”h$]”h&]”uh1j~hj*LubhÝ)�”}”(hŒ**Description**”h]”ji)�”}”(hjÃLh]”hŒ Description”…”�”}”(hjÅLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjÁLubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M} hj*LubhÝ)�”}”(hŒ[If there are any sessions left, this will initiate the removal and wait for the completion.”h]”hŒ[If there are any sessions left, this will initiate the removal and wait for the completion.”…”�”}”(hjÙLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M| hj*Lubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hj™,h²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œ iscsi_session_setup (C function)”Œc.iscsi_session_setup”hNt”auh1j,hj™,h²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒÄstruct iscsi_cls_session * iscsi_session_setup (struct iscsi_transport *iscsit, struct Scsi_Host *shost, uint16_t cmds_max, int dd_size, int cmd_task_size, uint32_t initial_cmdsn, unsigned int id)”h]”jI)�”}”(hŒÂstruct iscsi_cls_session *iscsi_session_setup(struct iscsi_transport *iscsit, struct Scsi_Host *shost, uint16_t cmds_max, int dd_size, int cmd_task_size, uint32_t initial_cmdsn, unsigned int id)”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjMh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M» ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjMh²hh³jMh´M» ubh)�”}”(hhh]”jx)�”}”(hŒiscsi_cls_session”h]”hŒiscsi_cls_session”…”�”}”(hj'Mh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj$Mubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j)MŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j׌iscsi_session_setup”sbŒc.iscsi_session_setup”†”asbuh1hhjMh²hh³jMh´M» ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHMh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjMh²hh³jMh´M» ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjVMh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjMh²hh³jMh´M» ubjr)�”}”(hŒiscsi_session_setup”h]”jx)�”}”(hjEMh]”hŒiscsi_session_setup”…”�”}”(hjgMh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjcMubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhjMh²hh³jMh´M» ubj“)�”}”(hŒ•(struct iscsi_transport *iscsit, struct Scsi_Host *shost, uint16_t cmds_max, int dd_size, int cmd_task_size, uint32_t initial_cmdsn, unsigned int id)”h]”(j™)�”}”(hŒstruct iscsi_transport *iscsit”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hj‚Mh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhj~Mubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Mh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj~Mubh)�”}”(hhh]”jx)�”}”(hŒiscsi_transport”h]”hŒiscsi_transport”…”�”}”(hj Mh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj�Mubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j¢MŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jCMŒc.iscsi_session_setup”†”asbuh1hhj~Mubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾Mh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj~Mubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjÌMh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj~Mubjx)�”}”(hŒiscsit”h]”hŒiscsit”…”�”}”(hjÙMh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj~Mubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjzMubj™)�”}”(hŒstruct Scsi_Host *shost”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hjòMh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjîMubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿMh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjîMubh)�”}”(hhh]”jx)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj Nubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jNŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jCMŒc.iscsi_session_setup”†”asbuh1hhjîMubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.Nh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjîMubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj)�”}”(hhh]”(jC)�”}”(hŒ?void iscsi_session_free (struct iscsi_cls_session *cls_session)”h]”jI)�”}”(hŒ>void iscsi_session_free(struct iscsi_cls_session *cls_session)”h]”(jO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjäQh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjàQh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M8 ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóQh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjàQh²hh³jòQh´M8 ubjr)�”}”(hŒiscsi_session_free”h]”jx)�”}”(hŒiscsi_session_free”h]”hŒiscsi_session_free”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjRubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhjàQh²hh³jòQh´M8 ubj“)�”}”(hŒ'(struct iscsi_cls_session *cls_session)”h]”j™)�”}”(hŒ%struct iscsi_cls_session *cls_session”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hj!Rh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjRubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.Rh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjRubh)�”}”(hhh]”jx)�”}”(hŒiscsi_cls_session”h]”hŒiscsi_cls_session”…”�”}”(hj?Rh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj hjßRubj¦)�”}”(hhh]”hÝ)�”}”(hŒ iscsi session”h]”hŒ iscsi session”…”�”}”(hjþRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M9 hjûRubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjßRubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³júRh´M> hjÜRubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÀRubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hj™,h²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œ#iscsi_session_teardown (C function)”Œc.iscsi_session_teardown”hNt”auh1j,hj™,h²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒCvoid iscsi_session_teardown (struct iscsi_cls_session *cls_session)”h]”jI)�”}”(hŒBvoid iscsi_session_teardown(struct iscsi_cls_session *cls_session)”h]”(jO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj?Sh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj;Sh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´MU ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNSh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj;Sh²hh³jMSh´MU ubjr)�”}”(hŒiscsi_session_teardown”h]”jx)�”}”(hŒiscsi_session_teardown”h]”hŒiscsi_session_teardown”…”�”}”(hj`Sh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj\Subah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhj;Sh²hh³jMSh´MU ubj“)�”}”(hŒ'(struct iscsi_cls_session *cls_session)”h]”j™)�”}”(hŒ%struct iscsi_cls_session *cls_session”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hj|Sh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjxSubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰Sh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjxSubh)�”}”(hhh]”jx)�”}”(hŒiscsi_cls_session”h]”hŒiscsi_cls_session”…”�”}”(hjšSh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj—Subah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jœSŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×jbSsbŒc.iscsi_session_teardown”†”asbuh1hhjxSubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjºSh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjxSubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjÈSh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjxSubjx)�”}”(hŒ cls_session”h]”hŒ cls_session”…”�”}”(hjÕSh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjxSubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjtSubah}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hj;Sh²hh³jMSh´MU ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hj7Sh²hh³jMSh´MU ubah}”(h]”j2Sah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³jMSh´MU hj4Sh²hubj8)�”}”(hhh]”hÝ)�”}”(hŒdestroy session and cls_session”h]”hŒdestroy session and cls_session”…”�”}”(hjÿSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´MU hjüSh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj4Sh²hh³jMSh´MU ubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYjTjZjTj[‰j\‰j]‰uh1j=h²hhj™,h³Nh´Nubj_)�”}”(hŒI**Parameters** ``struct iscsi_cls_session *cls_session`` iscsi session”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hj!Th]”hŒ Parameters”…”�”}”(hj#Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjTubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´MY hjTubj)�”}”(hhh]”j„)�”}”(hŒ7``struct iscsi_cls_session *cls_session`` iscsi session”h]”(jŠ)�”}”(hŒ)``struct iscsi_cls_session *cls_session``”h]”j�)�”}”(hj@Th]”hŒ%struct iscsi_cls_session *cls_session”…”�”}”(hjBTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj>Tubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M[ hj:Tubj¦)�”}”(hhh]”hÝ)�”}”(hŒ iscsi session”h]”hŒ iscsi session”…”�”}”(hjYTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´MV hjVTubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj:Tubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jUTh´M[ hj7Tubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjTubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hj™,h²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œiscsi_conn_setup (C function)”Œc.iscsi_conn_setup”hNt”auh1j,hj™,h²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒpstruct iscsi_cls_conn * iscsi_conn_setup (struct iscsi_cls_session *cls_session, int dd_size, uint32_t conn_idx)”h]”jI)�”}”(hŒnstruct iscsi_cls_conn *iscsi_conn_setup(struct iscsi_cls_session *cls_session, int dd_size, uint32_t conn_idx)”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hjšTh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhj–Th²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M` ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨Th²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj–Th²hh³j§Th´M` ubh)�”}”(hhh]”jx)�”}”(hŒiscsi_cls_conn”h]”hŒiscsi_cls_conn”…”�”}”(hj¹Th²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj¶Tubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j»TŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j׌iscsi_conn_setup”sbŒc.iscsi_conn_setup”†”asbuh1hhj–Th²hh³j§Th´M` ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚTh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj–Th²hh³j§Th´M` ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjèTh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj–Th²hh³j§Th´M` ubjr)�”}”(hŒiscsi_conn_setup”h]”jx)�”}”(hj×Th]”hŒiscsi_conn_setup”…”�”}”(hjùTh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjõTubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhj–Th²hh³j§Th´M` ubj“)�”}”(hŒG(struct iscsi_cls_session *cls_session, int dd_size, uint32_t conn_idx)”h]”(j™)�”}”(hŒ%struct iscsi_cls_session *cls_session”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjUubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!Uh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjUubh)�”}”(hhh]”jx)�”}”(hŒiscsi_cls_session”h]”hŒiscsi_cls_session”…”�”}”(hj2Uh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj/Uubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j4UŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jÕTŒc.iscsi_conn_setup”†”asbuh1hhjUubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPUh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjUubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj^Uh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjUubjx)�”}”(hŒ cls_session”h]”hŒ cls_session”…”�”}”(hjkUh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjUubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj Uubj™)�”}”(hŒ int dd_size”h]”(jO)�”}”(hŒint”h]”hŒint”…”�”}”(hj„Uh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj€Uubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’Uh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj€Uubjx)�”}”(hŒdd_size”h]”hŒdd_size”…”�”}”(hj Uh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj€Uubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj Uubj™)�”}”(hŒuint32_t conn_idx”h]”(h)�”}”(hhh]”jx)�”}”(hŒuint32_t”h]”hŒuint32_t”…”�”}”(hj¼Uh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj¹Uubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j¾UŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jÕTŒc.iscsi_conn_setup”†”asbuh1hhjµUubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚUh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjµUubjx)�”}”(hŒconn_idx”h]”hŒconn_idx”…”�”}”(hjèUh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjµUubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj Uubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hj–Th²hh³j§Th´M` ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hj’Th²hh³j§Th´M` ubah}”(h]”j�Tah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³j§Th´M` hj�Th²hubj8)�”}”(hhh]”hÝ)�”}”(hŒ$create iscsi_cls_conn and iscsi_conn”h]”hŒ$create iscsi_cls_conn and iscsi_conn”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M` hjVh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj�Th²hh³j§Th´M` ubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYj*VjZj*Vj[‰j\‰j]‰uh1j=h²hhj™,h³Nh´Nubj_)�”}”(hŒ–**Parameters** ``struct iscsi_cls_session *cls_session`` iscsi_cls_session ``int dd_size`` private driver data size ``uint32_t conn_idx`` cid”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hj4Vh]”hŒ Parameters”…”�”}”(hj6Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj2Vubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´Md hj.Vubj)�”}”(hhh]”(j„)�”}”(hŒ<``struct iscsi_cls_session *cls_session`` iscsi_cls_session ”h]”(jŠ)�”}”(hŒ)``struct iscsi_cls_session *cls_session``”h]”j�)�”}”(hjSVh]”hŒ%struct iscsi_cls_session *cls_session”…”�”}”(hjUVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjQVubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´Ma hjMVubj¦)�”}”(hhh]”hÝ)�”}”(hŒiscsi_cls_session”h]”hŒiscsi_cls_session”…”�”}”(hjlVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jhVh´Ma hjiVubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjMVubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jhVh´Ma hjJVubj„)�”}”(hŒ)``int dd_size`` private driver data size ”h]”(jŠ)�”}”(hŒ``int dd_size``”h]”j�)�”}”(hjŒVh]”hŒ int dd_size”…”�”}”(hjŽVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjŠVubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´Mb hj†Vubj¦)�”}”(hhh]”hÝ)�”}”(hŒprivate driver data size”h]”hŒprivate driver data size”…”�”}”(hj¥Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j¡Vh´Mb hj¢Vubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj†Vubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j¡Vh´Mb hjJVubj„)�”}”(hŒ``uint32_t conn_idx`` cid”h]”(jŠ)�”}”(hŒ``uint32_t conn_idx``”h]”j�)�”}”(hjÅVh]”hŒuint32_t conn_idx”…”�”}”(hjÇVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÃVubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´Md hj¿Vubj¦)�”}”(hhh]”hÝ)�”}”(hŒcid”h]”hŒcid”…”�”}”(hjÞVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´Mc hjÛVubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj¿Vubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jÚVh´Md hjJVubeh}”(h]”h ]”h"]”h$]”h&]”uh1j~hj.Vubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hj™,h²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œ iscsi_conn_teardown (C function)”Œc.iscsi_conn_teardown”hNt”auh1j,hj™,h²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒ:void iscsi_conn_teardown (struct iscsi_cls_conn *cls_conn)”h]”jI)�”}”(hŒ9void iscsi_conn_teardown(struct iscsi_cls_conn *cls_conn)”h]”(jO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjWh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M¨ ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.Wh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjWh²hh³j-Wh´M¨ ubjr)�”}”(hŒiscsi_conn_teardown”h]”jx)�”}”(hŒiscsi_conn_teardown”h]”hŒiscsi_conn_teardown”…”�”}”(hj@Wh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj)�”}”(hhh]”(jC)�”}”(hŒëstruct iscsi_boot_kobj * iscsi_boot_create_target (struct iscsi_boot_kset *boot_kset, int index, void *data, ssize_t (*show) (void *data, int type, char *buf), umode_t (*is_visible) (void *data, int type), void (*release) (void *data))”h]”jI)�”}”(hŒæstruct iscsi_boot_kobj *iscsi_boot_create_target(struct iscsi_boot_kset *boot_kset, int index, void *data, ssize_t (*show)(void *data, int type, char *buf), umode_t (*is_visible)(void *data, int type), void (*release)(void *data))”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hj¹Xh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjµXh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´M†ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇXh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjµXh²hh³jÆXh´M†ubh)�”}”(hhh]”jx)�”}”(hŒiscsi_boot_kobj”h]”hŒiscsi_boot_kobj”…”�”}”(hjØXh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÕXubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jÚXŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j׌iscsi_boot_create_target”sbŒc.iscsi_boot_create_target”†”asbuh1hhjµXh²hh³jÆXh´M†ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùXh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjµXh²hh³jÆXh´M†ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjµXh²hh³jÆXh´M†ubjr)�”}”(hŒiscsi_boot_create_target”h]”jx)�”}”(hjöXh]”hŒiscsi_boot_create_target”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjYubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhjµXh²hh³jÆXh´M†ubj“)�”}”(hŒ¶(struct iscsi_boot_kset *boot_kset, int index, void *data, ssize_t (*show)(void *data, int type, char *buf), umode_t (*is_visible)(void *data, int type), void (*release)(void *data))”h]”(j™)�”}”(hŒ!struct iscsi_boot_kset *boot_kset”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hj3Yh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhj/Yubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@Yh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj/Yubh)�”}”(hhh]”jx)�”}”(hŒiscsi_boot_kset”h]”hŒiscsi_boot_kset”…”�”}”(hjQYh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjNYubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jSYŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jôXŒc.iscsi_boot_create_target”†”asbuh1hhj/Yubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoYh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj/Yubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj}Yh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj/Yubjx)�”}”(hŒ boot_kset”h]”hŒ boot_kset”…”�”}”(hjŠYh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj/Yubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj+Yubj™)�”}”(hŒ int index”h]”(jO)�”}”(hŒint”h]”hŒint”…”�”}”(hj£Yh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjŸYubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±Yh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjŸYubjx)�”}”(hŒindex”h]”hŒindex”…”�”}”(hj¿Yh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjŸYubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj+Yubj™)�”}”(hŒ void *data”h]”(jO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjØYh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjÔYubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæYh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjÔYubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjôYh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjÔYubjx)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÔYubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj+Yubj™)�”}”(hŒ0ssize_t (*show)(void *data, int type, char *buf)”h]”(h)�”}”(hhh]”jx)�”}”(hŒssize_t”h]”hŒssize_t”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjZubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jZŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jôXŒc.iscsi_boot_create_target”†”asbuh1hhjZubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;Zh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjZubjø)�”}”(hŒ(”h]”hŒ(”…”�”}”(hjIZh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjZubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjWZh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjZubjx)�”}”(hŒshow”h]”hŒshow”…”�”}”(hjdZh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjZubjø)�”}”(hŒ)”h]”hŒ)”…”�”}”(hjrZh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjZubjø)�”}”(hjKZh]”hŒ(”…”�”}”(hj€Zh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjZubjO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj�Zh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjZubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›Zh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjZubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj©Zh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjZubjx)�”}”(hŒdata”h]”hŒdata”…”�”}”(hj¶Zh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjZubjø)�”}”(hŒ,”h]”hŒ,”…”�”}”(hjÄZh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjZubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒZh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjZubjO)�”}”(hŒint”h]”hŒint”…”�”}”(hjàZh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjZubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîZh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjZubjx)�”}”(hŒtype”h]”hŒtype”…”�”}”(hjüZh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjZubjø)�”}”(hjÆZh]”hŒ,”…”�”}”(hj [h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjZubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjZubjO)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj%[h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjZubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3[h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjZubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjA[h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjZubjx)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hjN[h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjZubjø)�”}”(hjtZh]”hŒ)”…”�”}”(hj\[h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjZubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj+Yubj™)�”}”(hŒ+umode_t (*is_visible)(void *data, int type)”h]”(h)�”}”(hhh]”jx)�”}”(hŒumode_t”h]”hŒumode_t”…”�”}”(hjw[h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjt[ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jy[Œmodname”NŒ classname”NjÛjÞ)�”}”já]”jôXŒc.iscsi_boot_create_target”†”asbuh1hhjp[ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•[h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjp[ubjø)�”}”(hjKZh]”hŒ(”…”�”}”(hj£[h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjp[ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj°[h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjp[ubjx)�”}”(hŒ is_visible”h]”hŒ is_visible”…”�”}”(hj½[h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjp[ubjø)�”}”(hjtZh]”hŒ)”…”�”}”(hjË[h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjp[ubjø)�”}”(hjKZh]”hŒ(”…”�”}”(hjØ[h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjp[ubjO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjå[h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjp[ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjó[h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjp[ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjp[ubjx)�”}”(hŒdata”h]”hŒdata”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjp[ubjø)�”}”(hjÆZh]”hŒ,”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjp[ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)\h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjp[ubjO)�”}”(hŒint”h]”hŒint”…”�”}”(hj7\h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjp[ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjE\h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjp[ubjx)�”}”(hŒtype”h]”hŒtype”…”�”}”(hjS\h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjp[ubjø)�”}”(hjtZh]”hŒ)”…”�”}”(hja\h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjp[ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj+Yubj™)�”}”(hŒvoid (*release)(void *data)”h]”(jO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjy\h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhju\ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡\h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hju\ubjø)�”}”(hjKZh]”hŒ(”…”�”}”(hj•\h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hju\ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj¢\h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hju\ubjx)�”}”(hŒrelease”h]”hŒrelease”…”�”}”(hj¯\h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhju\ubjø)�”}”(hjtZh]”hŒ)”…”�”}”(hj½\h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hju\ubjø)�”}”(hjKZh]”hŒ(”…”�”}”(hjÊ\h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hju\ubjO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj×\h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhju\ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjå\h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hju\ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjó\h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hju\ubjx)�”}”(hŒdata”h]”hŒdata”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhju\ubjø)�”}”(hjtZh]”hŒ)”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hju\ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj+Yubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hjµXh²hh³jÆXh´M†ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hj±Xh²hh³jÆXh´M†ubah}”(h]”j¬Xah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³jÆXh´M†hj®Xh²hubj8)�”}”(hhh]”hÝ)�”}”(hŒcreate boot target sysfs dir”h]”hŒcreate boot target sysfs dir”…”�”}”(hj7]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´M†hj4]h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj®Xh²hh³jÆXh´M†ubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYjO]jZjO]j[‰j\‰j]‰uh1j=h²hhj�Xh³Nh´Nubj_)�”}”(hXâ**Parameters** ``struct iscsi_boot_kset *boot_kset`` boot kset ``int index`` the target id ``void *data`` driver specific data for target ``ssize_t (*show) (void *data, int type, char *buf)`` attr show function ``umode_t (*is_visible) (void *data, int type)`` attr visibility function ``void (*release) (void *data)`` release function **Note** The boot sysfs lib will free the data passed in for the caller when all refs to the target kobject have been released.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hjY]h]”hŒ Parameters”…”�”}”(hj[]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjW]ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´MŠhjS]ubj)�”}”(hhh]”(j„)�”}”(hŒ0``struct iscsi_boot_kset *boot_kset`` boot kset ”h]”(jŠ)�”}”(hŒ%``struct iscsi_boot_kset *boot_kset``”h]”j�)�”}”(hjx]h]”hŒ!struct iscsi_boot_kset *boot_kset”…”�”}”(hjz]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjv]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´M‡hjr]ubj¦)�”}”(hhh]”hÝ)�”}”(hŒ boot kset”h]”hŒ boot kset”…”�”}”(hj‘]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j�]h´M‡hjŽ]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjr]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j�]h´M‡hjo]ubj„)�”}”(hŒ``int index`` the target id ”h]”(jŠ)�”}”(hŒ ``int index``”h]”j�)�”}”(hj±]h]”hŒ int index”…”�”}”(hj³]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¯]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´Mˆhj«]ubj¦)�”}”(hhh]”hÝ)�”}”(hŒ the target id”h]”hŒ the target id”…”�”}”(hjÊ]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÆ]h´MˆhjÇ]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj«]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jÆ]h´Mˆhjo]ubj„)�”}”(hŒ/``void *data`` driver specific data for target ”h]”(jŠ)�”}”(hŒ``void *data``”h]”j�)�”}”(hjê]h]”hŒ void *data”…”�”}”(hjì]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjè]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´M‰hjä]ubj¦)�”}”(hhh]”hÝ)�”}”(hŒdriver specific data for target”h]”hŒdriver specific data for target”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÿ]h´M‰hj^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjä]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jÿ]h´M‰hjo]ubj„)�”}”(hŒI``ssize_t (*show) (void *data, int type, char *buf)`` attr show function ”h]”(jŠ)�”}”(hŒ5``ssize_t (*show) (void *data, int type, char *buf)``”h]”j�)�”}”(hj#^h]”hŒ1ssize_t (*show) (void *data, int type, char *buf)”…”�”}”(hj%^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj!^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´MŠhj^ubj¦)�”}”(hhh]”hÝ)�”}”(hŒattr show function”h]”hŒattr show function”…”�”}”(hj<^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j8^h´MŠhj9^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j8^h´MŠhjo]ubj„)�”}”(hŒJ``umode_t (*is_visible) (void *data, int type)`` attr visibility function ”h]”(jŠ)�”}”(hŒ0``umode_t (*is_visible) (void *data, int type)``”h]”j�)�”}”(hj\^h]”hŒ,umode_t (*is_visible) (void *data, int type)”…”�”}”(hj^^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjZ^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´M‹hjV^ubj¦)�”}”(hhh]”hÝ)�”}”(hŒattr visibility function”h]”hŒattr visibility function”…”�”}”(hju^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jq^h´M‹hjr^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjV^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jq^h´M‹hjo]ubj„)�”}”(hŒ2``void (*release) (void *data)`` release function ”h]”(jŠ)�”}”(hŒ ``void (*release) (void *data)``”h]”j�)�”}”(hj•^h]”hŒvoid (*release) (void *data)”…”�”}”(hj—^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj“^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´MŒhj�^ubj¦)�”}”(hhh]”hÝ)�”}”(hŒrelease function”h]”hŒrelease function”…”�”}”(hj®^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jª^h´MŒhj«^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj�^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jª^h´MŒhjo]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j~hjS]ubhÝ)�”}”(hŒ**Note**”h]”ji)�”}”(hjÐ^h]”hŒNote”…”�”}”(hjÒ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjÎ^ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´MŽhjS]ubhÝ)�”}”(hŒvThe boot sysfs lib will free the data passed in for the caller when all refs to the target kobject have been released.”h]”hŒvThe boot sysfs lib will free the data passed in for the caller when all refs to the target kobject have been released.”…”�”}”(hjæ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´MŽhjS]ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hj�Xh²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œ(iscsi_boot_create_initiator (C function)”Œc.iscsi_boot_create_initiator”hNt”auh1j,hj�Xh²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒîstruct iscsi_boot_kobj * iscsi_boot_create_initiator (struct iscsi_boot_kset *boot_kset, int index, void *data, ssize_t (*show) (void *data, int type, char *buf), umode_t (*is_visible) (void *data, int type), void (*release) (void *data))”h]”jI)�”}”(hŒéstruct iscsi_boot_kobj *iscsi_boot_create_initiator(struct iscsi_boot_kset *boot_kset, int index, void *data, ssize_t (*show)(void *data, int type, char *buf), umode_t (*is_visible)(void *data, int type), void (*release)(void *data))”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhj_h²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´MŸubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#_h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj_h²hh³j"_h´MŸubh)�”}”(hhh]”jx)�”}”(hŒiscsi_boot_kobj”h]”hŒiscsi_boot_kobj”…”�”}”(hj4_h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj1_ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j6_Œmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j׌iscsi_boot_create_initiator”sbŒc.iscsi_boot_create_initiator”†”asbuh1hhj_h²hh³j"_h´MŸubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjU_h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj_h²hh³j"_h´MŸubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjc_h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj_h²hh³j"_h´MŸubjr)�”}”(hŒiscsi_boot_create_initiator”h]”jx)�”}”(hjR_h]”hŒiscsi_boot_create_initiator”…”�”}”(hjt_h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjp_ubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhj_h²hh³j"_h´MŸubj“)�”}”(hŒ¶(struct iscsi_boot_kset *boot_kset, int index, void *data, ssize_t (*show)(void *data, int type, char *buf), umode_t (*is_visible)(void *data, int type), void (*release)(void *data))”h]”(j™)�”}”(hŒ!struct iscsi_boot_kset *boot_kset”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hj�_h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhj‹_ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœ_h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj‹_ubh)�”}”(hhh]”jx)�”}”(hŒiscsi_boot_kset”h]”hŒiscsi_boot_kset”…”�”}”(hj­_h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjª_ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j¯_Œmodname”NŒ classname”NjÛjÞ)�”}”já]”jP_Œc.iscsi_boot_create_initiator”†”asbuh1hhj‹_ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjË_h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj‹_ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjÙ_h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj‹_ubjx)�”}”(hŒ boot_kset”h]”hŒ boot_kset”…”�”}”(hjæ_h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj‹_ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj‡_ubj™)�”}”(hŒ int index”h]”(jO)�”}”(hŒint”h]”hŒint”…”�”}”(hjÿ_h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjû_ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj `h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjû_ubjx)�”}”(hŒindex”h]”hŒindex”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjû_ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj‡_ubj™)�”}”(hŒ void *data”h]”(jO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj4`h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj0`ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjB`h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj0`ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjP`h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj0`ubjx)�”}”(hŒdata”h]”hŒdata”…”�”}”(hj]`h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj0`ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj‡_ubj™)�”}”(hŒ0ssize_t (*show)(void *data, int type, char *buf)”h]”(h)�”}”(hhh]”jx)�”}”(hŒssize_t”h]”hŒssize_t”…”�”}”(hjy`h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjv`ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j{`Œmodname”NŒ classname”NjÛjÞ)�”}”já]”jP_Œc.iscsi_boot_create_initiator”†”asbuh1hhjr`ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—`h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjr`ubjø)�”}”(hjKZh]”hŒ(”…”�”}”(hj¥`h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjr`ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj²`h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjr`ubjx)�”}”(hŒshow”h]”hŒshow”…”�”}”(hj¿`h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjr`ubjø)�”}”(hjtZh]”hŒ)”…”�”}”(hjÍ`h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjr`ubjø)�”}”(hjKZh]”hŒ(”…”�”}”(hjÚ`h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjr`ubjO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjç`h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjr`ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõ`h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjr`ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjr`ubjx)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjr`ubjø)�”}”(hjÆZh]”hŒ,”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjr`ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+ah²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjr`ubjO)�”}”(hŒint”h]”hŒint”…”�”}”(hj9ah²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjr`ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGah²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjr`ubjx)�”}”(hŒtype”h]”hŒtype”…”�”}”(hjUah²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjr`ubjø)�”}”(hjÆZh]”hŒ,”…”�”}”(hjcah²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjr`ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjpah²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjr`ubjO)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj~ah²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjr`ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒah²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjr`ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjšah²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjr`ubjx)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hj§ah²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjr`ubjø)�”}”(hjtZh]”hŒ)”…”�”}”(hjµah²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjr`ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj‡_ubj™)�”}”(hŒ+umode_t (*is_visible)(void *data, int type)”h]”(h)�”}”(hhh]”jx)�”}”(hŒumode_t”h]”hŒumode_t”…”�”}”(hjÐah²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÍaubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jÒaŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jP_Œc.iscsi_boot_create_initiator”†”asbuh1hhjÉaubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîah²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjÉaubjø)�”}”(hjKZh]”hŒ(”…”�”}”(hjüah²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjÉaubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj bh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjÉaubjx)�”}”(hŒ is_visible”h]”hŒ is_visible”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÉaubjø)�”}”(hjtZh]”hŒ)”…”�”}”(hj$bh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjÉaubjø)�”}”(hjKZh]”hŒ(”…”�”}”(hj1bh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjÉaubjO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj>bh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjÉaubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjLbh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjÉaubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjZbh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjÉaubjx)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjgbh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÉaubjø)�”}”(hjÆZh]”hŒ,”…”�”}”(hjubh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjÉaubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚bh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjÉaubjO)�”}”(hŒint”h]”hŒint”…”�”}”(hj�bh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjÉaubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjžbh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjÉaubjx)�”}”(hŒtype”h]”hŒtype”…”�”}”(hj¬bh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÉaubjø)�”}”(hjtZh]”hŒ)”…”�”}”(hjºbh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjÉaubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj‡_ubj™)�”}”(hŒvoid (*release)(void *data)”h]”(jO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÒbh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjÎbubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjàbh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjÎbubjø)�”}”(hjKZh]”hŒ(”…”�”}”(hjîbh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjÎbubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjûbh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjÎbubjx)�”}”(hŒrelease”h]”hŒrelease”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÎbubjø)�”}”(hjtZh]”hŒ)”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjÎbubjø)�”}”(hjKZh]”hŒ(”…”�”}”(hj#ch²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjÎbubjO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj0ch²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjÎbubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>ch²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjÎbubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjLch²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjÎbubjx)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjYch²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÎbubjø)�”}”(hjtZh]”hŒ)”…”�”}”(hjgch²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjÎbubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj‡_ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hj_h²hh³j"_h´MŸubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hj _h²hh³j"_h´MŸubah}”(h]”j_ah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³j"_h´MŸhj _h²hubj8)�”}”(hhh]”hÝ)�”}”(hŒcreate boot initiator sysfs dir”h]”hŒcreate boot initiator sysfs dir”…”�”}”(hj�ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´MŸhj�ch²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj _h²hh³j"_h´MŸubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYj¨cjZj¨cj[‰j\‰j]‰uh1j=h²hhj�Xh³Nh´Nubj_)�”}”(hXÝ**Parameters** ``struct iscsi_boot_kset *boot_kset`` boot kset ``int index`` the initiator id ``void *data`` driver specific data ``ssize_t (*show) (void *data, int type, char *buf)`` attr show function ``umode_t (*is_visible) (void *data, int type)`` attr visibility function ``void (*release) (void *data)`` release function **Note** The boot sysfs lib will free the data passed in for the caller when all refs to the initiator kobject have been released.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hj²ch]”hŒ Parameters”…”�”}”(hj´ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj°cubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´M£hj¬cubj)�”}”(hhh]”(j„)�”}”(hŒ0``struct iscsi_boot_kset *boot_kset`` boot kset ”h]”(jŠ)�”}”(hŒ%``struct iscsi_boot_kset *boot_kset``”h]”j�)�”}”(hjÑch]”hŒ!struct iscsi_boot_kset *boot_kset”…”�”}”(hjÓch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÏcubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´M hjËcubj¦)�”}”(hhh]”hÝ)�”}”(hŒ boot kset”h]”hŒ boot kset”…”�”}”(hjêch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jæch´M hjçcubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjËcubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jæch´M hjÈcubj„)�”}”(hŒ``int index`` the initiator id ”h]”(jŠ)�”}”(hŒ ``int index``”h]”j�)�”}”(hj dh]”hŒ int index”…”�”}”(hj dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjdubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´M¡hjdubj¦)�”}”(hhh]”hÝ)�”}”(hŒthe initiator id”h]”hŒthe initiator id”…”�”}”(hj#dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jdh´M¡hj dubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjdubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jdh´M¡hjÈcubj„)�”}”(hŒ$``void *data`` driver specific data ”h]”(jŠ)�”}”(hŒ``void *data``”h]”j�)�”}”(hjCdh]”hŒ void *data”…”�”}”(hjEdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjAdubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´M¢hj=dubj¦)�”}”(hhh]”hÝ)�”}”(hŒdriver specific data”h]”hŒdriver specific data”…”�”}”(hj\dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jXdh´M¢hjYdubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj=dubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jXdh´M¢hjÈcubj„)�”}”(hŒI``ssize_t (*show) (void *data, int type, char *buf)`` attr show function ”h]”(jŠ)�”}”(hŒ5``ssize_t (*show) (void *data, int type, char *buf)``”h]”j�)�”}”(hj|dh]”hŒ1ssize_t (*show) (void *data, int type, char *buf)”…”�”}”(hj~dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjzdubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´M£hjvdubj¦)�”}”(hhh]”hÝ)�”}”(hŒattr show function”h]”hŒattr show function”…”�”}”(hj•dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j‘dh´M£hj’dubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjvdubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j‘dh´M£hjÈcubj„)�”}”(hŒJ``umode_t (*is_visible) (void *data, int type)`` attr visibility function ”h]”(jŠ)�”}”(hŒ0``umode_t (*is_visible) (void *data, int type)``”h]”j�)�”}”(hjµdh]”hŒ,umode_t (*is_visible) (void *data, int type)”…”�”}”(hj·dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj³dubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´M¤hj¯dubj¦)�”}”(hhh]”hÝ)�”}”(hŒattr visibility function”h]”hŒattr visibility function”…”�”}”(hjÎdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÊdh´M¤hjËdubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj¯dubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jÊdh´M¤hjÈcubj„)�”}”(hŒ2``void (*release) (void *data)`` release function ”h]”(jŠ)�”}”(hŒ ``void (*release) (void *data)``”h]”j�)�”}”(hjîdh]”hŒvoid (*release) (void *data)”…”�”}”(hjðdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjìdubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´M¥hjèdubj¦)�”}”(hhh]”hÝ)�”}”(hŒrelease function”h]”hŒrelease function”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jeh´M¥hjeubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjèdubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jeh´M¥hjÈcubeh}”(h]”h ]”h"]”h$]”h&]”uh1j~hj¬cubhÝ)�”}”(hŒ**Note**”h]”ji)�”}”(hj)eh]”hŒNote”…”�”}”(hj+eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj'eubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´M§hj¬cubhÝ)�”}”(hŒyThe boot sysfs lib will free the data passed in for the caller when all refs to the initiator kobject have been released.”h]”hŒyThe boot sysfs lib will free the data passed in for the caller when all refs to the initiator kobject have been released.”…”�”}”(hj?eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´M§hj¬cubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hj�Xh²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œ'iscsi_boot_create_ethernet (C function)”Œc.iscsi_boot_create_ethernet”hNt”auh1j,hj�Xh²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒístruct iscsi_boot_kobj * iscsi_boot_create_ethernet (struct iscsi_boot_kset *boot_kset, int index, void *data, ssize_t (*show) (void *data, int type, char *buf), umode_t (*is_visible) (void *data, int type), void (*release) (void *data))”h]”jI)�”}”(hŒèstruct iscsi_boot_kobj *iscsi_boot_create_ethernet(struct iscsi_boot_kset *boot_kset, int index, void *data, ssize_t (*show)(void *data, int type, char *buf), umode_t (*is_visible)(void *data, int type), void (*release)(void *data))”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hjneh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjjeh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´M¹ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|eh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjjeh²hh³j{eh´M¹ubh)�”}”(hhh]”jx)�”}”(hŒiscsi_boot_kobj”h]”hŒiscsi_boot_kobj”…”�”}”(hj�eh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjŠeubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j�eŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j׌iscsi_boot_create_ethernet”sbŒc.iscsi_boot_create_ethernet”†”asbuh1hhjjeh²hh³j{eh´M¹ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®eh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjjeh²hh³j{eh´M¹ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj¼eh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjjeh²hh³j{eh´M¹ubjr)�”}”(hŒiscsi_boot_create_ethernet”h]”jx)�”}”(hj«eh]”hŒiscsi_boot_create_ethernet”…”�”}”(hjÍeh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÉeubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhjjeh²hh³j{eh´M¹ubj“)�”}”(hŒ¶(struct iscsi_boot_kset *boot_kset, int index, void *data, ssize_t (*show)(void *data, int type, char *buf), umode_t (*is_visible)(void *data, int type), void (*release)(void *data))”h]”(j™)�”}”(hŒ!struct iscsi_boot_kset *boot_kset”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hjèeh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjäeubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõeh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjäeubh)�”}”(hhh]”jx)�”}”(hŒiscsi_boot_kset”h]”hŒiscsi_boot_kset”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjfubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jfŒmodname”NŒ classname”NjÛjÞ)�”}”já]”j©eŒc.iscsi_boot_create_ethernet”†”asbuh1hhjäeubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$fh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjäeubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj2fh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjäeubjx)�”}”(hŒ boot_kset”h]”hŒ boot_kset”…”�”}”(hj?fh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjäeubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjàeubj™)�”}”(hŒ int index”h]”(jO)�”}”(hŒint”h]”hŒint”…”�”}”(hjXfh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjTfubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjffh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjTfubjx)�”}”(hŒindex”h]”hŒindex”…”�”}”(hjtfh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjTfubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjàeubj™)�”}”(hŒ void *data”h]”(jO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj�fh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj‰fubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›fh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj‰fubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj©fh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj‰fubjx)�”}”(hŒdata”h]”hŒdata”…”�”}”(hj¶fh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj‰fubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjàeubj™)�”}”(hŒ0ssize_t (*show)(void *data, int type, char *buf)”h]”(h)�”}”(hhh]”jx)�”}”(hŒssize_t”h]”hŒssize_t”…”�”}”(hjÒfh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÏfubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jÔfŒmodname”NŒ classname”NjÛjÞ)�”}”já]”j©eŒc.iscsi_boot_create_ethernet”†”asbuh1hhjËfubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjðfh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjËfubjø)�”}”(hjKZh]”hŒ(”…”�”}”(hjþfh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjËfubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj gh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjËfubjx)�”}”(hŒshow”h]”hŒshow”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjËfubjø)�”}”(hjtZh]”hŒ)”…”�”}”(hj&gh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjËfubjø)�”}”(hjKZh]”hŒ(”…”�”}”(hj3gh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjËfubjO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj@gh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjËfubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNgh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjËfubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj\gh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjËfubjx)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjigh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjËfubjø)�”}”(hjÆZh]”hŒ,”…”�”}”(hjwgh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjËfubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„gh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjËfubjO)�”}”(hŒint”h]”hŒint”…”�”}”(hj’gh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjËfubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj gh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjËfubjx)�”}”(hŒtype”h]”hŒtype”…”�”}”(hj®gh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjËfubjø)�”}”(hjÆZh]”hŒ,”…”�”}”(hj¼gh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjËfubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉgh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjËfubjO)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj×gh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjËfubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjågh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjËfubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjógh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjËfubjx)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjËfubjø)�”}”(hjtZh]”hŒ)”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjËfubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjàeubj™)�”}”(hŒ+umode_t (*is_visible)(void *data, int type)”h]”(h)�”}”(hhh]”jx)�”}”(hŒumode_t”h]”hŒumode_t”…”�”}”(hj)hh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj&hubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j+hŒmodname”NŒ classname”NjÛjÞ)�”}”já]”j©eŒc.iscsi_boot_create_ethernet”†”asbuh1hhj"hubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGhh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj"hubjø)�”}”(hjKZh]”hŒ(”…”�”}”(hjUhh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj"hubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjbhh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj"hubjx)�”}”(hŒ is_visible”h]”hŒ is_visible”…”�”}”(hjohh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj"hubjø)�”}”(hjtZh]”hŒ)”…”�”}”(hj}hh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj"hubjø)�”}”(hjKZh]”hŒ(”…”�”}”(hjŠhh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj"hubjO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj—hh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj"hubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥hh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj"hubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj³hh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj"hubjx)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjÀhh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj"hubjø)�”}”(hjÆZh]”hŒ,”…”�”}”(hjÎhh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj"hubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛhh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj"hubjO)�”}”(hŒint”h]”hŒint”…”�”}”(hjéhh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj"hubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷hh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj"hubjx)�”}”(hŒtype”h]”hŒtype”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj"hubjø)�”}”(hjtZh]”hŒ)”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj"hubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjàeubj™)�”}”(hŒvoid (*release)(void *data)”h]”(jO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj+ih²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj'iubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9ih²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj'iubjø)�”}”(hjKZh]”hŒ(”…”�”}”(hjGih²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj'iubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjTih²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj'iubjx)�”}”(hŒrelease”h]”hŒrelease”…”�”}”(hjaih²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj'iubjø)�”}”(hjtZh]”hŒ)”…”�”}”(hjoih²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj'iubjø)�”}”(hjKZh]”hŒ(”…”�”}”(hj|ih²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj'iubjO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj‰ih²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj'iubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—ih²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj'iubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj¥ih²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj'iubjx)�”}”(hŒdata”h]”hŒdata”…”�”}”(hj²ih²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj'iubjø)�”}”(hjtZh]”hŒ)”…”�”}”(hjÀih²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj'iubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjàeubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hjjeh²hh³j{eh´M¹ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hjfeh²hh³j{eh´M¹ubah}”(h]”jaeah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³j{eh´M¹hjceh²hubj8)�”}”(hhh]”hÝ)�”}”(hŒcreate boot ethernet sysfs dir”h]”hŒcreate boot ethernet sysfs dir”…”�”}”(hjéih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´M¹hjæih²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hjceh²hh³j{eh´M¹ubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYjjjZjjj[‰j\‰j]‰uh1j=h²hhj�Xh³Nh´Nubj_)�”}”(hXâ**Parameters** ``struct iscsi_boot_kset *boot_kset`` boot kset ``int index`` the ethernet device id ``void *data`` driver specific data ``ssize_t (*show) (void *data, int type, char *buf)`` attr show function ``umode_t (*is_visible) (void *data, int type)`` attr visibility function ``void (*release) (void *data)`` release function **Note** The boot sysfs lib will free the data passed in for the caller when all refs to the ethernet kobject have been released.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hj jh]”hŒ Parameters”…”�”}”(hj jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj jubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´M½hjjubj)�”}”(hhh]”(j„)�”}”(hŒ0``struct iscsi_boot_kset *boot_kset`` boot kset ”h]”(jŠ)�”}”(hŒ%``struct iscsi_boot_kset *boot_kset``”h]”j�)�”}”(hj*jh]”hŒ!struct iscsi_boot_kset *boot_kset”…”�”}”(hj,jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj(jubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´Mºhj$jubj¦)�”}”(hhh]”hÝ)�”}”(hŒ boot kset”h]”hŒ boot kset”…”�”}”(hjCjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j?jh´Mºhj@jubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj$jubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j?jh´Mºhj!jubj„)�”}”(hŒ%``int index`` the ethernet device id ”h]”(jŠ)�”}”(hŒ ``int index``”h]”j�)�”}”(hjcjh]”hŒ int index”…”�”}”(hjejh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjajubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´M»hj]jubj¦)�”}”(hhh]”hÝ)�”}”(hŒthe ethernet device id”h]”hŒthe ethernet device id”…”�”}”(hj|jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jxjh´M»hjyjubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj]jubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jxjh´M»hj!jubj„)�”}”(hŒ$``void *data`` driver specific data ”h]”(jŠ)�”}”(hŒ``void *data``”h]”j�)�”}”(hjœjh]”hŒ void *data”…”�”}”(hjžjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjšjubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´M¼hj–jubj¦)�”}”(hhh]”hÝ)�”}”(hŒdriver specific data”h]”hŒdriver specific data”…”�”}”(hjµjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j±jh´M¼hj²jubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj–jubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j±jh´M¼hj!jubj„)�”}”(hŒI``ssize_t (*show) (void *data, int type, char *buf)`` attr show function ”h]”(jŠ)�”}”(hŒ5``ssize_t (*show) (void *data, int type, char *buf)``”h]”j�)�”}”(hjÕjh]”hŒ1ssize_t (*show) (void *data, int type, char *buf)”…”�”}”(hj×jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÓjubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´M½hjÏjubj¦)�”}”(hhh]”hÝ)�”}”(hŒattr show function”h]”hŒattr show function”…”�”}”(hjîjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jêjh´M½hjëjubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjÏjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jêjh´M½hj!jubj„)�”}”(hŒJ``umode_t (*is_visible) (void *data, int type)`` attr visibility function ”h]”(jŠ)�”}”(hŒ0``umode_t (*is_visible) (void *data, int type)``”h]”j�)�”}”(hjkh]”hŒ,umode_t (*is_visible) (void *data, int type)”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj kubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´M¾hjkubj¦)�”}”(hhh]”hÝ)�”}”(hŒattr visibility function”h]”hŒattr visibility function”…”�”}”(hj'kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j#kh´M¾hj$kubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjkubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j#kh´M¾hj!jubj„)�”}”(hŒ2``void (*release) (void *data)`` release function ”h]”(jŠ)�”}”(hŒ ``void (*release) (void *data)``”h]”j�)�”}”(hjGkh]”hŒvoid (*release) (void *data)”…”�”}”(hjIkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjEkubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´M¿hjAkubj¦)�”}”(hhh]”hÝ)�”}”(hŒrelease function”h]”hŒrelease function”…”�”}”(hj`kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j\kh´M¿hj]kubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjAkubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j\kh´M¿hj!jubeh}”(h]”h ]”h"]”h$]”h&]”uh1j~hjjubhÝ)�”}”(hŒ**Note**”h]”ji)�”}”(hj‚kh]”hŒNote”…”�”}”(hj„kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj€kubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´MÁhjjubhÝ)�”}”(hŒxThe boot sysfs lib will free the data passed in for the caller when all refs to the ethernet kobject have been released.”h]”hŒxThe boot sysfs lib will free the data passed in for the caller when all refs to the ethernet kobject have been released.”…”�”}”(hj˜kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´MÁhjjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hj�Xh²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œ&iscsi_boot_create_acpitbl (C function)”Œc.iscsi_boot_create_acpitbl”hNt”auh1j,hj�Xh²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒéstruct iscsi_boot_kobj * iscsi_boot_create_acpitbl (struct iscsi_boot_kset *boot_kset, int index, void *data, ssize_t (*show)(void *data, int type, char *buf), umode_t (*is_visible)(void *data, int type), void (*release)(void *data))”h]”jI)�”}”(hŒçstruct iscsi_boot_kobj *iscsi_boot_create_acpitbl(struct iscsi_boot_kset *boot_kset, int index, void *data, ssize_t (*show)(void *data, int type, char *buf), umode_t (*is_visible)(void *data, int type), void (*release)(void *data))”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hjÇkh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjÃkh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´MÓubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕkh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjÃkh²hh³jÔkh´MÓubh)�”}”(hhh]”jx)�”}”(hŒiscsi_boot_kobj”h]”hŒiscsi_boot_kobj”…”�”}”(hjækh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjãkubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jèkŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j׌iscsi_boot_create_acpitbl”sbŒc.iscsi_boot_create_acpitbl”†”asbuh1hhjÃkh²hh³jÔkh´MÓubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjÃkh²hh³jÔkh´MÓubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjÃkh²hh³jÔkh´MÓubjr)�”}”(hŒiscsi_boot_create_acpitbl”h]”jx)�”}”(hjlh]”hŒiscsi_boot_create_acpitbl”…”�”}”(hj&lh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj"lubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhjÃkh²hh³jÔkh´MÓubj“)�”}”(hŒ¶(struct iscsi_boot_kset *boot_kset, int index, void *data, ssize_t (*show)(void *data, int type, char *buf), umode_t (*is_visible)(void *data, int type), void (*release)(void *data))”h]”(j™)�”}”(hŒ!struct iscsi_boot_kset *boot_kset”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hjAlh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhj=lubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNlh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj=lubh)�”}”(hhh]”jx)�”}”(hŒiscsi_boot_kset”h]”hŒiscsi_boot_kset”…”�”}”(hj_lh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj\lubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jalŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jlŒc.iscsi_boot_create_acpitbl”†”asbuh1hhj=lubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}lh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj=lubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj‹lh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj=lubjx)�”}”(hŒ boot_kset”h]”hŒ boot_kset”…”�”}”(hj˜lh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj=lubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj9lubj™)�”}”(hŒ int index”h]”(jO)�”}”(hŒint”h]”hŒint”…”�”}”(hj±lh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj­lubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿lh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj­lubjx)�”}”(hŒindex”h]”hŒindex”…”�”}”(hjÍlh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj­lubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj9lubj™)�”}”(hŒ void *data”h]”(jO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjælh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjâlubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjôlh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjâlubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjâlubjx)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjâlubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj9lubj™)�”}”(hŒ0ssize_t (*show)(void *data, int type, char *buf)”h]”(h)�”}”(hhh]”jx)�”}”(hŒssize_t”h]”hŒssize_t”…”�”}”(hj+mh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj(mubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j-mŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jlŒc.iscsi_boot_create_acpitbl”†”asbuh1hhj$mubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjImh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj$mubjø)�”}”(hjKZh]”hŒ(”…”�”}”(hjWmh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj$mubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjdmh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj$mubjx)�”}”(hŒshow”h]”hŒshow”…”�”}”(hjqmh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj$mubjø)�”}”(hjtZh]”hŒ)”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj$mubjø)�”}”(hjKZh]”hŒ(”…”�”}”(hjŒmh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj$mubjO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj™mh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj$mubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§mh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj$mubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjµmh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj$mubjx)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjÂmh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj$mubjø)�”}”(hjÆZh]”hŒ,”…”�”}”(hjÐmh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj$mubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝmh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj$mubjO)�”}”(hŒint”h]”hŒint”…”�”}”(hjëmh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj$mubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùmh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj$mubjx)�”}”(hŒtype”h]”hŒtype”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj$mubjø)�”}”(hjÆZh]”hŒ,”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj$mubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"nh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj$mubjO)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj0nh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj$mubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>nh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj$mubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjLnh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj$mubjx)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hjYnh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj$mubjø)�”}”(hjtZh]”hŒ)”…”�”}”(hjgnh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj$mubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj9lubj™)�”}”(hŒ+umode_t (*is_visible)(void *data, int type)”h]”(h)�”}”(hhh]”jx)�”}”(hŒumode_t”h]”hŒumode_t”…”�”}”(hj‚nh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjnubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j„nŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jlŒc.iscsi_boot_create_acpitbl”†”asbuh1hhj{nubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj nh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj{nubjø)�”}”(hjKZh]”hŒ(”…”�”}”(hj®nh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj{nubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj»nh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj{nubjx)�”}”(hŒ is_visible”h]”hŒ is_visible”…”�”}”(hjÈnh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj{nubjø)�”}”(hjtZh]”hŒ)”…”�”}”(hjÖnh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj{nubjø)�”}”(hjKZh]”hŒ(”…”�”}”(hjãnh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj{nubjO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjðnh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj{nubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþnh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj{nubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj oh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj{nubjx)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj{nubjø)�”}”(hjÆZh]”hŒ,”…”�”}”(hj'oh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj{nubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4oh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj{nubjO)�”}”(hŒint”h]”hŒint”…”�”}”(hjBoh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj{nubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPoh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj{nubjx)�”}”(hŒtype”h]”hŒtype”…”�”}”(hj^oh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj{nubjø)�”}”(hjtZh]”hŒ)”…”�”}”(hjloh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj{nubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj9lubj™)�”}”(hŒvoid (*release)(void *data)”h]”(jO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj„oh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj€oubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’oh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj€oubjø)�”}”(hjKZh]”hŒ(”…”�”}”(hj oh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj€oubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj­oh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj€oubjx)�”}”(hŒrelease”h]”hŒrelease”…”�”}”(hjºoh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj€oubjø)�”}”(hjtZh]”hŒ)”…”�”}”(hjÈoh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj€oubjø)�”}”(hjKZh]”hŒ(”…”�”}”(hjÕoh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj€oubjO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjâoh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj€oubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjðoh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj€oubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjþoh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj€oubjx)�”}”(hŒdata”h]”hŒdata”…”�”}”(hj ph²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj€oubjø)�”}”(hjtZh]”hŒ)”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj€oubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj9lubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hjÃkh²hh³jÔkh´MÓubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hj¿kh²hh³jÔkh´MÓubah}”(h]”jºkah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³jÔkh´MÓhj¼kh²hubj8)�”}”(hhh]”hÝ)�”}”(hŒ create boot acpi table sysfs dir”h]”hŒ create boot acpi table sysfs dir”…”�”}”(hjBph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´MÓhj?ph²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj¼kh²hh³jÔkh´MÓubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYjZpjZjZpj[‰j\‰j]‰uh1j=h²hhj�Xh³Nh´Nubj_)�”}”(hXÐ**Parameters** ``struct iscsi_boot_kset *boot_kset`` boot kset ``int index`` not used ``void *data`` driver specific data ``ssize_t (*show)(void *data, int type, char *buf)`` attr show function ``umode_t (*is_visible)(void *data, int type)`` attr visibility function ``void (*release)(void *data)`` release function **Note** The boot sysfs lib will free the data passed in for the caller when all refs to the acpitbl kobject have been released.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hjdph]”hŒ Parameters”…”�”}”(hjfph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjbpubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´M×hj^pubj)�”}”(hhh]”(j„)�”}”(hŒ0``struct iscsi_boot_kset *boot_kset`` boot kset ”h]”(jŠ)�”}”(hŒ%``struct iscsi_boot_kset *boot_kset``”h]”j�)�”}”(hjƒph]”hŒ!struct iscsi_boot_kset *boot_kset”…”�”}”(hj…ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�pubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´MÔhj}pubj¦)�”}”(hhh]”hÝ)�”}”(hŒ boot kset”h]”hŒ boot kset”…”�”}”(hjœph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j˜ph´MÔhj™pubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj}pubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j˜ph´MÔhjzpubj„)�”}”(hŒ``int index`` not used ”h]”(jŠ)�”}”(hŒ ``int index``”h]”j�)�”}”(hj¼ph]”hŒ int index”…”�”}”(hj¾ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjºpubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´MÕhj¶pubj¦)�”}”(hhh]”hÝ)�”}”(hŒnot used”h]”hŒnot used”…”�”}”(hjÕph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÑph´MÕhjÒpubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj¶pubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jÑph´MÕhjzpubj„)�”}”(hŒ$``void *data`` driver specific data ”h]”(jŠ)�”}”(hŒ``void *data``”h]”j�)�”}”(hjõph]”hŒ void *data”…”�”}”(hj÷ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjópubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´MÖhjïpubj¦)�”}”(hhh]”hÝ)�”}”(hŒdriver specific data”h]”hŒdriver specific data”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j qh´MÖhj qubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjïpubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j qh´MÖhjzpubj„)�”}”(hŒH``ssize_t (*show)(void *data, int type, char *buf)`` attr show function ”h]”(jŠ)�”}”(hŒ4``ssize_t (*show)(void *data, int type, char *buf)``”h]”j�)�”}”(hj.qh]”hŒ0ssize_t (*show)(void *data, int type, char *buf)”…”�”}”(hj0qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj,qubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´M×hj(qubj¦)�”}”(hhh]”hÝ)�”}”(hŒattr show function”h]”hŒattr show function”…”�”}”(hjGqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jCqh´M×hjDqubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj(qubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jCqh´M×hjzpubj„)�”}”(hŒI``umode_t (*is_visible)(void *data, int type)`` attr visibility function ”h]”(jŠ)�”}”(hŒ/``umode_t (*is_visible)(void *data, int type)``”h]”j�)�”}”(hjgqh]”hŒ+umode_t (*is_visible)(void *data, int type)”…”�”}”(hjiqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjequbah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´MØhjaqubj¦)�”}”(hhh]”hÝ)�”}”(hŒattr visibility function”h]”hŒattr visibility function”…”�”}”(hj€qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j|qh´MØhj}qubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjaqubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j|qh´MØhjzpubj„)�”}”(hŒ1``void (*release)(void *data)`` release function ”h]”(jŠ)�”}”(hŒ``void (*release)(void *data)``”h]”j�)�”}”(hj qh]”hŒvoid (*release)(void *data)”…”�”}”(hj¢qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjžqubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´MÙhjšqubj¦)�”}”(hhh]”hÝ)�”}”(hŒrelease function”h]”hŒrelease function”…”�”}”(hj¹qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jµqh´MÙhj¶qubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjšqubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jµqh´MÙhjzpubeh}”(h]”h ]”h"]”h$]”h&]”uh1j~hj^pub•hÝ)�”}”(hŒ**Note**”h]”ji)�”}”(hjÛqh]”hŒNote”…”�”}”(hjÝqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjÙqubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´MÛhj^pubhÝ)�”}”(hŒwThe boot sysfs lib will free the data passed in for the caller when all refs to the acpitbl kobject have been released.”h]”hŒwThe boot sysfs lib will free the data passed in for the caller when all refs to the acpitbl kobject have been released.”…”�”}”(hjñqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´MÛhj^pubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hj�Xh²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œ#iscsi_boot_create_kset (C function)”Œc.iscsi_boot_create_kset”hNt”auh1j,hj�Xh²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒFstruct iscsi_boot_kset * iscsi_boot_create_kset (const char *set_name)”h]”jI)�”}”(hŒDstruct iscsi_boot_kset *iscsi_boot_create_kset(const char *set_name)”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hj rh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjrh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´Míubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.rh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjrh²hh³j-rh´Míubh)�”}”(hhh]”jx)�”}”(hŒiscsi_boot_kset”h]”hŒiscsi_boot_kset”…”�”}”(hj?rh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj)�”}”(hhh]”(jC)�”}”(hŒJstruct iscsi_boot_kset * iscsi_boot_create_host_kset (unsigned int hostno)”h]”jI)�”}”(hŒHstruct iscsi_boot_kset *iscsi_boot_create_host_kset(unsigned int hostno)”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hj£sh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjŸsh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´Mubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±sh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjŸsh²hh³j°sh´Mubh)�”}”(hhh]”jx)�”}”(hŒiscsi_boot_kset”h]”hŒiscsi_boot_kset”…”�”}”(hjÂsh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj¿subah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jÄsŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j׌iscsi_boot_create_host_kset”sbŒc.iscsi_boot_create_host_kset”†”asbuh1hhjŸsh²hh³j°sh´Mubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjãsh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjŸsh²hh³j°sh´Mubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjñsh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjŸsh²hh³j°sh´Mubjr)�”}”(hŒiscsi_boot_create_host_kset”h]”jx)�”}”(hjàsh]”hŒiscsi_boot_create_host_kset”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjþsubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhjŸsh²hh³j°sh´Mubj“)�”}”(hŒ(unsigned int hostno)”h]”j™)�”}”(hŒunsigned int hostno”h]”(jO)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjtubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+th²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjtubjO)�”}”(hŒint”h]”hŒint”…”�”}”(hj9th²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjtubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGth²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjtubjx)�”}”(hŒhostno”h]”hŒhostno”…”�”}”(hjUth²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjtubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjtubah}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hjŸsh²hh³j°sh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hj›sh²hh³j°sh´Mubah}”(h]”j–sah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³j°sh´Mhj˜sh²hubj8)�”}”(hhh]”hÝ)�”}”(hŒ'creates root sysfs tree for a scsi host”h]”hŒ'creates root sysfs tree for a scsi host”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´Mhj|th²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj˜sh²hh³j°sh´Mubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYj—tjZj—tj[‰j\‰j]‰uh1j=h²hhj�Xh³Nh´Nubj_)�”}”(hŒB**Parameters** ``unsigned int hostno`` host number of scsi host”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hj¡th]”hŒ Parameters”…”�”}”(hj£th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjŸtubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´Mhj›tubj)�”}”(hhh]”j„)�”}”(hŒ0``unsigned int hostno`` host number of scsi host”h]”(jŠ)�”}”(hŒ``unsigned int hostno``”h]”j�)�”}”(hjÀth]”hŒunsigned int hostno”…”�”}”(hjÂth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¾tubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´M hjºtubj¦)�”}”(hhh]”hÝ)�”}”(hŒhost number of scsi host”h]”hŒhost number of scsi host”…”�”}”(hjÙth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´MhjÖtubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjºtubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jÕth´M hj·tubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj›tubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hj�Xh²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œ$iscsi_boot_destroy_kset (C function)”Œc.iscsi_boot_destroy_kset”hNt”auh1j,hj�Xh²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒ@void iscsi_boot_destroy_kset (struct iscsi_boot_kset *boot_kset)”h]”jI)�”}”(hŒ?void iscsi_boot_destroy_kset(struct iscsi_boot_kset *boot_kset)”h]”(jO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjuh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´Mubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)uh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjuh²hh³j(uh´Mubjr)�”}”(hŒiscsi_boot_destroy_kset”h]”jx)�”}”(hŒiscsi_boot_destroy_kset”h]”hŒiscsi_boot_destroy_kset”…”�”}”(hj;uh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj7uubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhjuh²hh³j(uh´Mubj“)�”}”(hŒ#(struct iscsi_boot_kset *boot_kset)”h]”j™)�”}”(hŒ!struct iscsi_boot_kset *boot_kset”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hjWuh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjSuubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjduh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjSuubh)�”}”(hhh]”jx)�”}”(hŒiscsi_boot_kset”h]”hŒiscsi_boot_kset”…”�”}”(hjuuh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjruubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jwuŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×j=usbŒc.iscsi_boot_destroy_kset”†”asbuh1hhjSuubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•uh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjSuubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj£uh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjSuubjx)�”}”(hŒ boot_kset”h]”hŒ boot_kset”…”�”}”(hj°uh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjSuubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjOuubah}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hjuh²hh³j(uh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hjuh²hh³j(uh´Mubah}”(h]”j uah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³j(uh´Mhjuh²hubj8)�”}”(hhh]”hÝ)�”}”(hŒ"destroy kset and kobjects under it”h]”hŒ"destroy kset and kobjects under it”…”�”}”(hjÚuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´Mhj×uh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hjuh²hh³j(uh´Mubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYjòujZjòuj[‰j\‰j]‰uh1j=h²hhj�Xh³Nh´Nubj_)�”}”(hŒŽ**Parameters** ``struct iscsi_boot_kset *boot_kset`` boot kset **Description** This will remove the kset and kobjects and attrs under it.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hjüuh]”hŒ Parameters”…”�”}”(hjþuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjúuubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´Mhjöuubj)�”}”(hhh]”j„)�”}”(hŒ0``struct iscsi_boot_kset *boot_kset`` boot kset ”h]”(jŠ)�”}”(hŒ%``struct iscsi_boot_kset *boot_kset``”h]”j�)�”}”(hjvh]”hŒ!struct iscsi_boot_kset *boot_kset”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjvubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´Mhjvubj¦)�”}”(hhh]”hÝ)�”}”(hŒ boot kset”h]”hŒ boot kset”…”�”}”(hj4vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j0vh´Mhj1vubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjvubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j0vh´Mhjvubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjöuubhÝ)�”}”(hŒ**Description**”h]”ji)�”}”(hjVvh]”hŒ Description”…”�”}”(hjXvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjTvubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´MhjöuubhÝ)�”}”(hŒ:This will remove the kset and kobjects and attrs under it.”h]”hŒ:This will remove the kset and kobjects and attrs under it.”…”�”}”(hjlvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´Mhjöuubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hj�Xh²hh³Nh´Nubeh}”(h]”Œiscsi-boot-information”ah ]”h"]”Œiscsi boot information”ah$]”h&]”uh1hµhh·h²hh³hÊh´K'ubh¶)�”}”(hhh]”(h»)�”}”(hŒiSCSI TCP interfaces”h]”hŒiSCSI TCP interfaces”…”�”}”(hj�vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjŠvh²hh³hÊh´K-ubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œiscsi_sw_tcp_recv (C function)”Œc.iscsi_sw_tcp_recv”hNt”auh1j,hjŠvh²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒhint iscsi_sw_tcp_recv (read_descriptor_t *rd_desc, struct sk_buff *skb, unsigned int offset, size_t len)”h]”jI)�”}”(hŒgint iscsi_sw_tcp_recv(read_descriptor_t *rd_desc, struct sk_buff *skb, unsigned int offset, size_t len)”h]”(jO)�”}”(hŒint”h]”hŒint”…”�”}”(hj´vh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj°vh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/target:47: ./drivers/scsi/iscsi_tcp.c”h´KNubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃvh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj°vh²hh³jÂvh´KNubjr)�”}”(hŒiscsi_sw_tcp_recv”h]”jx)�”}”(hŒiscsi_sw_tcp_recv”h]”hŒiscsi_sw_tcp_recv”…”�”}”(hjÕvh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÑvubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhj°vh²hh³jÂvh´KNubj“)�”}”(hŒR(read_descriptor_t *rd_desc, struct sk_buff *skb, unsigned int offset, size_t len)”h]”(j™)�”}”(hŒread_descriptor_t *rd_desc”h]”(h)�”}”(hhh]”jx)�”}”(hŒread_descriptor_t”h]”hŒread_descriptor_t”…”�”}”(hjôvh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjñvubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jövŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×j×vsbŒc.iscsi_sw_tcp_recv”†”asbuh1hhjívubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjívubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj"wh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjívubjx)�”}”(hŒrd_desc”h]”hŒrd_desc”…”�”}”(hj/wh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjívubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjévubj™)�”}”(hŒstruct sk_buff *skb”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hjHwh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjDwubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUwh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjDwubh)�”}”(hhh]”jx)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjfwh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjcwubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jhwŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jwŒc.iscsi_sw_tcp_recv”†”asbuh1hhjDwubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„wh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjDwubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj’wh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjDwubjx)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjŸwh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjDwubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjévubj™)�”}”(hŒunsigned int offset”h]”(jO)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj¸wh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj´wubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆwh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj´wubjO)�”}”(hŒint”h]”hŒint”…”�”}”(hjÔwh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj´wubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâwh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj´wubjx)�”}”(hŒoffset”h]”hŒoffset”…”�”}”(hjðwh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj´wubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjévubj™)�”}”(hŒ size_t len”h]”(h)�”}”(hhh]”jx)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj xh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj xubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jxŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jwŒc.iscsi_sw_tcp_recv”†”asbuh1hhjxubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*xh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjxubjx)�”}”(hŒlen”h]”hŒlen”…”�”}”(hj8xh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjxubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjévubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hj°vh²hh³jÂvh´KNubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hj¬vh²hh³jÂvh´KNubah}”(h]”j§vah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³jÂvh´KNhj©vh²hubj8)�”}”(hhh]”hÝ)�”}”(hŒTCP receive in sendfile fashion”h]”hŒTCP receive in sendfile fashion”…”�”}”(hjbxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/target:47: ./drivers/scsi/iscsi_tcp.c”h´KNhj_xh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj©vh²hh³jÂvh´KNubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYjzxjZjzxj[‰j\‰j]‰uh1j=h²hhjŠvh³Nh´Nubj_)�”}”(hŒ¶**Parameters** ``read_descriptor_t *rd_desc`` read descriptor ``struct sk_buff *skb`` socket buffer ``unsigned int offset`` offset in skb ``size_t len`` skb->len - offset”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hj„xh]”hŒ Parameters”…”�”}”(hj†xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj‚xubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/target:47: ./drivers/scsi/iscsi_tcp.c”h´KRhj~xubj)�”}”(hhh]”(j„)�”}”(hŒ/``read_descriptor_t *rd_desc`` read descriptor ”h]”(jŠ)�”}”(hŒ``read_descriptor_t *rd_desc``”h]”j�)�”}”(hj£xh]”hŒread_descriptor_t *rd_desc”…”�”}”(hj¥xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¡xubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/target:47: ./drivers/scsi/iscsi_tcp.c”h´KOhj�xubj¦)�”}”(hhh]”hÝ)�”}”(hŒread descriptor”h]”hŒread descriptor”…”�”}”(hj¼xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j¸xh´KOhj¹xubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj�xubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j¸xh´KOhjšxubj„)�”}”(hŒ&``struct sk_buff *skb`` socket buffer ”h]”(jŠ)�”}”(hŒ``struct sk_buff *skb``”h]”j�)�”}”(hjÜxh]”hŒstruct sk_buff *skb”…”�”}”(hjÞxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÚxubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/target:47: ./drivers/scsi/iscsi_tcp.c”h´KPhjÖxubj¦)�”}”(hhh]”hÝ)�”}”(hŒ socket buffer”h]”hŒ socket buffer”…”�”}”(hjõxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jñxh´KPhjòxubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjÖxubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jñxh´KPhjšxubj„)�”}”(hŒ&``unsigned int offset`` offset in skb ”h]”(jŠ)�”}”(hŒ``unsigned int offset``”h]”j�)�”}”(hjyh]”hŒunsigned int offset”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjyubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/target:47: ./drivers/scsi/iscsi_tcp.c”h´KQhjyubj¦)�”}”(hhh]”hÝ)�”}”(hŒ offset in skb”h]”hŒ offset in skb”…”�”}”(hj.yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j*yh´KQhj+yubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjyubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j*yh´KQhjšxubj„)�”}”(hŒ ``size_t len`` skb->len - offset”h]”(jŠ)�”}”(hŒ``size_t len``”h]”j�)�”}”(hjNyh]”hŒ size_t len”…”�”}”(hjPyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjLyubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/target:47: ./drivers/scsi/iscsi_tcp.c”h´KShjHyubj¦)�”}”(hhh]”hÝ)�”}”(hŒskb->len - offset”h]”hŒskb->len - offset”…”�”}”(hjgyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/target:47: ./drivers/scsi/iscsi_tcp.c”h´KRhjdyubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjHyubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jcyh´KShjšxubeh}”(h]”h ]”h"]”h$]”h&]”uh1j~hj~xubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hjŠvh²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œ$iscsi_sw_sk_state_check (C function)”Œc.iscsi_sw_sk_state_check”hNt”auh1j,hjŠvh²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒ-int iscsi_sw_sk_state_check (struct sock *sk)”h]”jI)�”}”(hŒ,int iscsi_sw_sk_state_check(struct sock *sk)”h]”(jO)�”}”(hŒint”h]”hŒint”…”�”}”(hj¨yh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj¤yh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/target:47: ./drivers/scsi/iscsi_tcp.c”h´Kjubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·yh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj¤yh²hh³j¶yh´Kjubjr)�”}”(hŒiscsi_sw_sk_state_check”h]”jx)�”}”(hŒiscsi_sw_sk_state_check”h]”hŒiscsi_sw_sk_state_check”…”�”}”(hjÉyh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÅyubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhj¤yh²hh³j¶yh´Kjubj“)�”}”(hŒ(struct sock *sk)”h]”j™)�”}”(hŒstruct sock *sk”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hjåyh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjáyubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjòyh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjáyubh)�”}”(hhh]”jx)�”}”(hŒsock”h]”hŒsock”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjzubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jzŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×jËysbŒc.iscsi_sw_sk_state_check”†”asbuh1hhjáyubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#zh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjáyubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj1zh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjáyubjx)�”}”(hŒsk”h]”hŒsk”…”�”}”(hj>zh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjáyubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjÝyubah}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hj¤yh²hh³j¶yh´Kjubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hj yh²hh³j¶yh´Kjubah}”(h]”j›yah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³j¶yh´Kjhj�yh²hubj8)�”}”(hhh]”hÝ)�”}”(hŒcheck socket state”h]”hŒcheck socket state”…”�”}”(hjhzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/target:47: ./drivers/scsi/iscsi_tcp.c”h´Kjhjezh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj�yh²hh³j¶yh´Kjubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYj€zjZj€zj[‰j\‰j]‰uh1j=h²hhjŠvh³Nh´Nubj_)�”}”(hŒÕ**Parameters** ``struct sock *sk`` socket **Description** If the socket is in CLOSE or CLOSE_WAIT we should not close the connection if there is still some data pending. Must be called with sk_callback_lock.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hjŠzh]”hŒ Parameters”…”�”}”(hjŒzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjˆzubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/target:47: ./drivers/scsi/iscsi_tcp.c”h´Knhj„zubj)�”}”(hhh]”j„)�”}”(hŒ``struct sock *sk`` socket ”h]”(jŠ)�”}”(hŒ``struct sock *sk``”h]”j�)�”}”(hj©zh]”hŒstruct sock *sk”…”�”}”(hj«zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj§zubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/target:47: ./drivers/scsi/iscsi_tcp.c”h´Kkhj£zubj¦)�”}”(hhh]”hÝ)�”}”(hŒsocket”h]”hŒsocket”…”�”}”(hjÂzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j¾zh´Kkhj¿zubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj£zubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j¾zh´Kkhj zubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj„zubhÝ)�”}”(hŒ**Description**”h]”ji)�”}”(hjäzh]”hŒ Description”…”�”}”(hjæzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjâzubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/target:47: ./drivers/scsi/iscsi_tcp.c”h´Kmhj„zubhÝ)�”}”(hŒoIf the socket is in CLOSE or CLOSE_WAIT we should not close the connection if there is still some data pending.”h]”hŒoIf the socket is in CLOSE or CLOSE_WAIT we should not close the connection if there is still some data pending.”…”�”}”(hjúzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/target:47: ./drivers/scsi/iscsi_tcp.c”h´Klhj„zubhÝ)�”}”(hŒ%Must be called with sk_callback_lock.”h]”hŒ%Must be called with sk_callback_lock.”…”�”}”(hj {h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/target:47: ./drivers/scsi/iscsi_tcp.c”h´Kphj„zubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hjŠvh²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œ%iscsi_sw_tcp_write_space (C function)”Œc.iscsi_sw_tcp_write_space”hNt”auh1j,hjŠvh²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒ/void iscsi_sw_tcp_write_space (struct sock *sk)”h]”jI)�”}”(hŒ.void iscsi_sw_tcp_write_space(struct sock *sk)”h]”(jO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj8{h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj4{h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/target:47: ./drivers/scsi/iscsi_tcp.c”h´KÙubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjG{h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj4{h²hh³jF{h´KÙubjr)�”}”(hŒiscsi_sw_tcp_write_space”h]”jx)�”}”(hŒiscsi_sw_tcp_write_space”h]”hŒiscsi_sw_tcp_write_space”…”�”}”(hjY{h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjU{ubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhj4{h²hh³jF{h´KÙubj“)�”}”(hŒ(struct sock *sk)”h]”j™)�”}”(hŒstruct sock *sk”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hju{h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjq{ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚{h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjq{ubh)�”}”(hhh]”jx)�”}”(hŒsock”h]”hŒsock”…”�”}”(hj“{h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj�{ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j•{Œmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×j[{sbŒc.iscsi_sw_tcp_write_space”†”asbuh1hhjq{ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³{h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjq{ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjÁ{h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjq{ubjx)�”}”(hŒsk”h]”hŒsk”…”�”}”(hjÎ{h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjq{ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjm{ubah}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hj4{h²hh³jF{h´KÙubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hj0{h²hh³jF{h´KÙubah}”(h]”j+{ah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³jF{h´KÙhj-{h²hubj8)�”}”(hhh]”hÝ)�”}”(hŒ1Called when more output buffer space is available”h]”hŒ1Called when more output buffer space is available”…”�”}”(hjø{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/target:47: ./drivers/scsi/iscsi_tcp.c”h´KÙhjõ{h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj-{h²hh³jF{h´KÙubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYj|jZj|j[‰j\‰j]‰uh1j=h²hhjŠvh³Nh´Nubj_)�”}”(hŒC**Parameters** ``struct sock *sk`` socket space is available for”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hj|h]”hŒ Parameters”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj|ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/target:47: ./drivers/scsi/iscsi_tcp.c”h´KÝhj|ubj)�”}”(hhh]”j„)�”}”(hŒ1``struct sock *sk`` socket space is available for”h]”(jŠ)�”}”(hŒ``struct sock *sk``”h]”j�)�”}”(hj9|h]”hŒstruct sock *sk”…”�”}”(hj;|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj7|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/target:47: ./drivers/scsi/iscsi_tcp.c”h´Kßhj3|ubj¦)�”}”(hhh]”hÝ)�”}”(hŒsocket space is available for”h]”hŒsocket space is available for”…”�”}”(hjR|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/target:47: ./drivers/scsi/iscsi_tcp.c”h´KÚhjO|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj3|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jN|h´Kßhj0|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj|ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hjŠvh²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œ&iscsi_sw_tcp_xmit_segment (C function)”Œc.iscsi_sw_tcp_xmit_segment”hNt”auh1j,hjŠvh²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒ^int iscsi_sw_tcp_xmit_segment (struct iscsi_tcp_conn *tcp_conn, struct iscsi_segment *segment)”h]”jI)�”}”(hŒ]int iscsi_sw_tcp_xmit_segment(struct iscsi_tcp_conn *tcp_conn, struct iscsi_segment *segment)”h]”(jO)�”}”(hŒint”h]”hŒint”…”�”}”(hj“|h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj�|h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/target:47: ./drivers/scsi/iscsi_tcp.c”h´Mubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢|h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj�|h²hh³j¡|h´Mubjr)�”}”(hŒiscsi_sw_tcp_xmit_segment”h]”jx)�”}”(hŒiscsi_sw_tcp_xmit_segment”h]”hŒiscsi_sw_tcp_xmit_segment”…”�”}”(hj´|h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj°|ubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhj�|h²hh³j¡|h´Mubj“)�”}”(hŒ@(struct iscsi_tcp_conn *tcp_conn, struct iscsi_segment *segment)”h]”(j™)�”}”(hŒstruct iscsi_tcp_conn *tcp_conn”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hjÐ|h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjÌ|ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝ|h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjÌ|ubh)�”}”(hhh]”jx)�”}”(hŒiscsi_tcp_conn”h]”hŒiscsi_tcp_conn”…”�”}”(hjî|h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjë|ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jð|Œmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×j¶|sbŒc.iscsi_sw_tcp_xmit_segment”†”asbuh1hhjÌ|ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjÌ|ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjÌ|ubjx)�”}”(hŒtcp_conn”h]”hŒtcp_conn”…”�”}”(hj)}h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÌ|ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjÈ|ubj™)�”}”(hŒstruct iscsi_segment *segment”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hjB}h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhj>}ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjO}h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj>}ubh)�”}”(hhh]”jx)�”}”(hŒ iscsi_segment”h]”hŒ iscsi_segment”…”�”}”(hj`}h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj]}ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jb}Œmodname”NŒ classname”NjÛjÞ)�”}”já]”j }Œc.iscsi_sw_tcp_xmit_segment”†”asbuh1hhj>}ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~}h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj>}ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjŒ}h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj>}ubjx)�”}”(hŒsegment”h]”hŒsegment”…”�”}”(hj™}h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj>}ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjÈ|ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hj�|h²hh³j¡|h´Mubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hj‹|h²hh³j¡|h´Mubah}”(h]”j†|ah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³j¡|h´Mhjˆ|h²hubj8)�”}”(hhh]”hÝ)�”}”(hŒtransmit segment”h]”hŒtransmit segment”…”�”}”(hjÃ}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/target:47: ./drivers/scsi/iscsi_tcp.c”h´MhjÀ}h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hjˆ|h²hh³j¡|h´Mubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYjÛ}jZjÛ}j[‰j\‰j]‰uh1j=h²hhjŠvh³Nh´Nubj_)�”}”(hXÈ**Parameters** ``struct iscsi_tcp_conn *tcp_conn`` the iSCSI TCP connection ``struct iscsi_segment *segment`` the buffer to transmnit **Description** This function transmits as much of the buffer as the network layer will accept, and returns the number of bytes transmitted. If CRC hashing is enabled, the function will compute the hash as it goes. When the entire segment has been transmitted, it will retrieve the hash value and send it as well.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hjå}h]”hŒ Parameters”…”�”}”(hjç}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjã}ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/target:47: ./drivers/scsi/iscsi_tcp.c”h´Mhjß}ubj)�”}”(hhh]”(j„)�”}”(hŒ=``struct iscsi_tcp_conn *tcp_conn`` the iSCSI TCP connection ”h]”(jŠ)�”}”(hŒ#``struct iscsi_tcp_conn *tcp_conn``”h]”j�)�”}”(hj~h]”hŒstruct iscsi_tcp_conn *tcp_conn”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/target:47: ./drivers/scsi/iscsi_tcp.c”h´Mhjþ}ubj¦)�”}”(hhh]”hÝ)�”}”(hŒthe iSCSI TCP connection”h]”hŒthe iSCSI TCP connection”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j~h´Mhj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjþ}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j~h´Mhjû}ubj„)�”}”(hŒ:``struct iscsi_segment *segment`` the buffer to transmnit ”h]”(jŠ)�”}”(hŒ!``struct iscsi_segment *segment``”h]”j�)�”}”(hj=~h]”hŒstruct iscsi_segment *segment”…”�”}”(hj?~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj;~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/target:47: ./drivers/scsi/iscsi_tcp.c”h´Mhj7~ubj¦)�”}”(hhh]”hÝ)�”}”(hŒthe buffer to transmnit”h]”hŒthe buffer to transmnit”…”�”}”(hjV~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jR~h´MhjS~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj7~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jR~h´Mhjû}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j~hjß}ubhÝ)�”}”(hŒ**Description**”h]”ji)�”}”(hjx~h]”hŒ Description”…”�”}”(hjz~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjv~ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/target:47: ./drivers/scsi/iscsi_tcp.c”h´Mhjß}ubhÝ)�”}”(hŒ|This function transmits as much of the buffer as the network layer will accept, and returns the number of bytes transmitted.”h]”hŒ|This function transmits as much of the buffer as the network layer will accept, and returns the number of bytes transmitted.”…”�”}”(hjŽ~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/target:47: ./drivers/scsi/iscsi_tcp.c”h´Mhjß}ubhÝ)�”}”(hŒ¬If CRC hashing is enabled, the function will compute the hash as it goes. When the entire segment has been transmitted, it will retrieve the hash value and send it as well.”h]”hŒ¬If CRC hashing is enabled, the function will compute the hash as it goes. When the entire segment has been transmitted, it will retrieve the hash value and send it as well.”…”�”}”(hj�~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/target:47: ./drivers/scsi/iscsi_tcp.c”h´M hjß}ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hjŠvh²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œiscsi_sw_tcp_xmit (C function)”Œc.iscsi_sw_tcp_xmit”hNt”auh1j,hjŠvh²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒ/int iscsi_sw_tcp_xmit (struct iscsi_conn *conn)”h]”jI)�”}”(hŒ.int iscsi_sw_tcp_xmit(struct iscsi_conn *conn)”h]”(jO)�”}”(hŒint”h]”hŒint”…”�”}”(hjÌ~h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjÈ~h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/target:47: ./drivers/scsi/iscsi_tcp.c”h´MSubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛ~h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjÈ~h²hh³jÚ~h´MSubjr)�”}”(hŒiscsi_sw_tcp_xmit”h]”jx)�”}”(hŒiscsi_sw_tcp_xmit”h]”hŒiscsi_sw_tcp_xmit”…”�”}”(hjí~h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjé~ubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhjÈ~h²hh³jÚ~h´MSubj“)�”}”(hŒ(struct iscsi_conn *conn)”h]”j™)�”}”(hŒstruct iscsi_conn *conn”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjubh)�”}”(hhh]”jx)�”}”(hŒ iscsi_conn”h]”hŒ iscsi_conn”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj$ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j)Œmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×jï~sbŒc.iscsi_sw_tcp_xmit”†”asbuh1hhjubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjubjx)�”}”(hŒconn”h]”hŒconn”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjubah}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hjÈ~h²hh³jÚ~h´MSubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hjÄ~h²hh³jÚ~h´MSubah}”(h]”j¿~ah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³jÚ~h´MShjÁ~h²hubj8)�”}”(hhh]”hÝ)�”}”(hŒ TCP transmit”h]”hŒ TCP transmit”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/target:47: ./drivers/scsi/iscsi_tcp.c”h´MShj‰h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hjÁ~h²hh³jÚ~h´MSubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYj¤jZj¤j[‰j\‰j]‰uh1j=h²hhjŠvh³Nh´Nubj_)�”}”(hŒ>**Parameters** ``struct iscsi_conn *conn`` iscsi connection”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hj®h]”hŒ Parameters”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/target:47: ./drivers/scsi/iscsi_tcp.c”h´MWhj¨ubj)�”}”(hhh]”j„)�”}”(hŒ,``struct iscsi_conn *conn`` iscsi connection”h]”(jŠ)�”}”(hŒ``struct iscsi_conn *conn``”h]”j�)�”}”(hjÍh]”hŒstruct iscsi_conn *conn”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjËubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/target:47: ./drivers/scsi/iscsi_tcp.c”h´MYhjÇubj¦)�”}”(hhh]”hÝ)�”}”(hŒiscsi connection”h]”hŒiscsi connection”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/target:47: ./drivers/scsi/iscsi_tcp.c”h´MThjãubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjÇubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jâh´MYhjÄubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj¨ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hjŠvh²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œ#iscsi_sw_tcp_xmit_qlen (C function)”Œc.iscsi_sw_tcp_xmit_qlen”hNt”auh1j,hjŠvh²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒ4int iscsi_sw_tcp_xmit_qlen (struct iscsi_conn *conn)”h]”jI)�”}”(hŒ3int iscsi_sw_tcp_xmit_qlen(struct iscsi_conn *conn)”h]”(jO)�”}”(hŒint”h]”hŒint”…”�”}”(hj'€h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj#€h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/target:47: ./drivers/scsi/iscsi_tcp.c”h´M†ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6€h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj#€h²hh³j5€h´M†ubjr)�”}”(hŒiscsi_sw_tcp_xmit_qlen”h]”jx)�”}”(hŒiscsi_sw_tcp_xmit_qlen”h]”hŒiscsi_sw_tcp_xmit_qlen”…”�”}”(hjH€h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjD€ubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhj#€h²hh³j5€h´M†ubj“)�”}”(hŒ(struct iscsi_conn *conn)”h]”j™)�”}”(hŒstruct iscsi_conn *conn”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hjd€h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhj`€ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjq€h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj`€ubh)�”}”(hhh]”jx)�”}”(hŒ iscsi_conn”h]”hŒ iscsi_conn”…”�”}”(hj‚€h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj€ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j„€Œmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×jJ€sbŒc.iscsi_sw_tcp_xmit_qlen”†”asbuh1hhj`€ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢€h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj`€ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj°€h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj`€ubjx)�”}”(hŒconn”h]”hŒconn”…”�”}”(hj½€h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj`€ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj\€ubah}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hj#€h²hh³j5€h´M†ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hj€h²hh³j5€h´M†ubah}”(h]”j€ah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³j5€h´M†hj€h²hubj8)�”}”(hhh]”hÝ)�”}”(hŒ*return the number of bytes queued for xmit”h]”hŒ*return the number of bytes queued for xmit”…”�”}”(hjç€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/target:47: ./drivers/scsi/iscsi_tcp.c”h´M†hjä€h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj€h²hh³j5€h´M†ubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYjÿ€jZjÿ€j[‰j\‰j]‰uh1j=h²hhjŠvh³Nh´Nubj_)�”}”(hŒ>**Parameters** ``struct iscsi_conn *conn`` iscsi connection”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hj �h]”hŒ Parameters”…”�”}”(hj �h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/target:47: ./drivers/scsi/iscsi_tcp.c”h´MŠhj�ubj)�”}”(hhh]”j„)�”}”(hŒ,``struct iscsi_conn *conn`` iscsi connection”h]”(jŠ)�”}”(hŒ``struct iscsi_conn *conn``”h]”j�)�”}”(hj(�h]”hŒstruct iscsi_conn *conn”…”�”}”(hj*�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj&�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/target:47: ./drivers/scsi/iscsi_tcp.c”h´MŒhj"�ubj¦)�”}”(hhh]”hÝ)�”}”(hŒiscsi connection”h]”hŒiscsi connection”…”�”}”(hjA�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/target:47: ./drivers/scsi/iscsi_tcp.c”h´M‡hj>�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj"�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j=�h´MŒhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hjŠvh²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œ#iscsi_tcp_segment_done (C function)”Œc.iscsi_tcp_segment_done”hNt”auh1j,hjŠvh²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒvint iscsi_tcp_segment_done (struct iscsi_tcp_conn *tcp_conn, struct iscsi_segment *segment, int recv, unsigned copied)”h]”jI)�”}”(hŒuint iscsi_tcp_segment_done(struct iscsi_tcp_conn *tcp_conn, struct iscsi_segment *segment, int recv, unsigned copied)”h]”(jO)�”}”(hŒint”h]”hŒint”…”�”}”(hj‚�h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj~�h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/target:50: ./drivers/scsi/libiscsi_tcp.c”h´K¯ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘�h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj~�h²hh³j��h´K¯ubjr)�”}”(hŒiscsi_tcp_segment_done”h]”jx)�”}”(hŒiscsi_tcp_segment_done”h]”hŒiscsi_tcp_segment_done”…”�”}”(hj£�h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjŸ�ubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhj~�h²hh³j��h´K¯ubj“)�”}”(hŒ[(struct iscsi_tcp_conn *tcp_conn, struct iscsi_segment *segment, int recv, unsigned copied)”h]”(j™)�”}”(hŒstruct iscsi_tcp_conn *tcp_conn”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hj¿�h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhj»�ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌ�h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj»�ubh)�”}”(hhh]”jx)�”}”(hŒiscsi_tcp_conn”h]”hŒiscsi_tcp_conn”…”�”}”(hjÝ�h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÚ�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jß�Œmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×j¥�sbŒc.iscsi_tcp_segment_done”†”asbuh1hhj»�ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjý�h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj»�ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj ‚h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj»�ubjx)�”}”(hŒtcp_conn”h]”hŒtcp_conn”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj»�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj·�ubj™)�”}”(hŒstruct iscsi_segment *segment”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hj1‚h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhj-‚ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>‚h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj-‚ubh)�”}”(hhh]”jx)�”}”(hŒ iscsi_segment”h]”hŒ iscsi_segment”…”�”}”(hjO‚h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjL‚ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jQ‚Œmodname”NŒ classname”NjÛjÞ)�”}”já]”jù�Œc.iscsi_tcp_segment_done”†”asbuh1hhj-‚ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjm‚h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj-‚ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj{‚h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj-‚ubjx)�”}”(hŒsegment”h]”hŒsegment”…”�”}”(hjˆ‚h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj-‚ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj·�ubj™)�”}”(hŒint recv”h]”(jO)�”}”(hŒint”h]”hŒint”…”�”}”(hj¡‚h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj�‚ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯‚h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj�‚ubjx)�”}”(hŒrecv”h]”hŒrecv”…”�”}”(hj½‚h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj�‚ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj·�ubj™)�”}”(hŒunsigned copied”h]”(jO)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÖ‚h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjÒ‚ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjä‚h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjÒ‚ubjx)�”}”(hŒcopied”h]”hŒcopied”…”�”}”(hjò‚h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÒ‚ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj·�ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hj~�h²hh³j��h´K¯ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hjz�h²hh³j��h´K¯ubah}”(h]”ju�ah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³j��h´K¯hjw�h²hubj8)�”}”(hhh]”hÝ)�”}”(hŒ%check whether the segment is complete”h]”hŒ%check whether the segment is complete”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/target:50: ./drivers/scsi/libiscsi_tcp.c”h´K¯hjƒh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hjw�h²hh³j��h´K¯ubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYj4ƒjZj4ƒj[‰j\‰j]‰uh1j=h²hhjŠvh³Nh´Nubj_)�”}”(hX&**Parameters** ``struct iscsi_tcp_conn *tcp_conn`` iscsi tcp connection ``struct iscsi_segment *segment`` iscsi segment to check ``int recv`` set to one of this is called from the recv path ``unsigned copied`` number of bytes copied **Description** Check if we're done receiving this segment. If the receive buffer is full but we expect more data, move on to the next entry in the scatterlist. If the amount of data we received isn't a multiple of 4, we will transparently receive the pad bytes, too. This function must be re-entrant.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hj>ƒh]”hŒ Parameters”…”�”}”(hj@ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj<ƒubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/target:50: ./drivers/scsi/libiscsi_tcp.c”h´K³hj8ƒubj)�”}”(hhh]”(j„)�”}”(hŒ9``struct iscsi_tcp_conn *tcp_conn`` iscsi tcp connection ”h]”(jŠ)�”}”(hŒ#``struct iscsi_tcp_conn *tcp_conn``”h]”j�)�”}”(hj]ƒh]”hŒstruct iscsi_tcp_conn *tcp_conn”…”�”}”(hj_ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj[ƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/target:50: ./drivers/scsi/libiscsi_tcp.c”h´K°hjWƒubj¦)�”}”(hhh]”hÝ)�”}”(hŒiscsi tcp connection”h]”hŒiscsi tcp connection”…”�”}”(hjvƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jrƒh´K°hjsƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjWƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jrƒh´K°hjTƒubj„)�”}”(hŒ9``struct iscsi_segment *segment`` iscsi segment to check ”h]”(jŠ)�”}”(hŒ!``struct iscsi_segment *segment``”h]”j�)�”}”(hj–ƒh]”hŒstruct iscsi_segment *segment”…”�”}”(hj˜ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj”ƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/target:50: ./drivers/scsi/libiscsi_tcp.c”h´K±hj�ƒubj¦)�”}”(hhh]”hÝ)�”}”(hŒiscsi segment to check”h]”hŒiscsi segment to check”…”�”}”(hj¯ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j«ƒh´K±hj¬ƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj�ƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j«ƒh´K±hjTƒubj„)�”}”(hŒ=``int recv`` set to one of this is called from the recv path ”h]”(jŠ)�”}”(hŒ ``int recv``”h]”j�)�”}”(hjσh]”hŒint recv”…”�”}”(hjуh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj̓ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/target:50: ./drivers/scsi/libiscsi_tcp.c”h´K²hjɃubj¦)�”}”(hhh]”hÝ)�”}”(hŒ/set to one of this is called from the recv path”h]”hŒ/set to one of this is called from the recv path”…”�”}”(hjèƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jäƒh´K²hjåƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjɃubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jäƒh´K²hjTƒubj„)�”}”(hŒ+``unsigned copied`` number of bytes copied ”h]”(jŠ)�”}”(hŒ``unsigned copied``”h]”j�)�”}”(hj„h]”hŒunsigned copied”…”�”}”(hj „h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/target:50: ./drivers/scsi/libiscsi_tcp.c”h´K³hj„ubj¦)�”}”(hhh]”hÝ)�”}”(hŒnumber of bytes copied”h]”hŒnumber of bytes copied”…”�”}”(hj!„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j„h´K³hj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j„h´K³hjTƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j~hj8ƒubhÝ)�”}”(hŒ**Description**”h]”ji)�”}”(hjC„h]”hŒ Description”…”�”}”(hjE„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjA„ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/target:50: ./drivers/scsi/libiscsi_tcp.c”h´Kµhj8ƒubhÝ)�”}”(hŒ�Check if we're done receiving this segment. If the receive buffer is full but we expect more data, move on to the next entry in the scatterlist.”h]”hŒ’Check if we’re done receiving this segment. If the receive buffer is full but we expect more data, move on to the next entry in the scatterlist.”…”�”}”(hjY„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/target:50: ./drivers/scsi/libiscsi_tcp.c”h´K´hj8ƒubhÝ)�”}”(hŒjIf the amount of data we received isn't a multiple of 4, we will transparently receive the pad bytes, too.”h]”hŒlIf the amount of data we received isn’t a multiple of 4, we will transparently receive the pad bytes, too.”…”�”}”(hjh„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/target:50: ./drivers/scsi/libiscsi_tcp.c”h´K¸hj8ƒubhÝ)�”}”(hŒ!This function must be re-entrant.”h]”hŒ!This function must be re-entrant.”…”�”}”(hjw„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/target:50: ./drivers/scsi/libiscsi_tcp.c”h´K»hj8ƒubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hjŠvh²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œ$iscsi_tcp_hdr_recv_prep (C function)”Œc.iscsi_tcp_hdr_recv_prep”hNt”auh1j,hjŠvh²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒ>void iscsi_tcp_hdr_recv_prep (struct iscsi_tcp_conn *tcp_conn)”h]”jI)�”}”(hŒ=void iscsi_tcp_hdr_recv_prep(struct iscsi_tcp_conn *tcp_conn)”h]”(jO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¦„h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj¢„h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/target:50: ./drivers/scsi/libiscsi_tcp.c”h´M~ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµ„h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj¢„h²hh³j´„h´M~ubjr)�”}”(hŒiscsi_tcp_hdr_recv_prep”h]”jx)�”}”(hŒiscsi_tcp_hdr_recv_prep”h]”hŒiscsi_tcp_hdr_recv_prep”…”�”}”(hjÇ„h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÄubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhj¢„h²hh³j´„h´M~ubj“)�”}”(hŒ!(struct iscsi_tcp_conn *tcp_conn)”h]”j™)�”}”(hŒstruct iscsi_tcp_conn *tcp_conn”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hjã„h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjß„ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjð„h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjß„ubh)�”}”(hhh]”jx)�”}”(hŒiscsi_tcp_conn”h]”hŒiscsi_tcp_conn”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjþ„ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j…Œmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×jÉ„sbŒc.iscsi_tcp_hdr_recv_prep”†”asbuh1hhjß„ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!…h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjß„ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj/…h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjß„ubjx)�”}”(hŒtcp_conn”h]”hŒtcp_conn”…”�”}”(hj<…h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjß„ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjÛ„ubah}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hj¢„h²hh³j´„h´M~ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hjž„h²hh³j´„h´M~ubah}”(h]”j™„ah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³j´„h´M~hj›„h²hubj8)�”}”(hhh]”hÝ)�”}”(hŒprep segment for hdr reception”h]”hŒprep segment for hdr reception”…”�”}”(hjf…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/target:50: ./drivers/scsi/libiscsi_tcp.c”h´M~hjc…h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj›„h²hh³j´„h´M~ubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYj~…jZj~…j[‰j\‰j]‰uh1j=h²hhjŠvh³Nh´Nubj_)�”}”(hX-**Parameters** ``struct iscsi_tcp_conn *tcp_conn`` iscsi connection to prep for **Description** This function always passes NULL for the crcp argument, because when this function is called we do not yet know the final size of the header and want to delay the digest processing until we know that.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hjˆ…h]”hŒ Parameters”…”�”}”(hjŠ…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj†…ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/target:50: ./drivers/scsi/libiscsi_tcp.c”h´M‚hj‚…ubj)�”}”(hhh]”j„)�”}”(hŒA``struct iscsi_tcp_conn *tcp_conn`` iscsi connection to prep for ”h]”(jŠ)�”}”(hŒ#``struct iscsi_tcp_conn *tcp_conn``”h]”j�)�”}”(hj§…h]”hŒstruct iscsi_tcp_conn *tcp_conn”…”�”}”(hj©…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¥…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/target:50: ./drivers/scsi/libiscsi_tcp.c”h´Mhj¡…ubj¦)�”}”(hhh]”hÝ)�”}”(hŒiscsi connection to prep for”h]”hŒiscsi connection to prep for”…”�”}”(hjÀ…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j¼…h´Mhj½…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj¡…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j¼…h´Mhjž…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj‚…ubhÝ)�”}”(hŒ**Description**”h]”ji)�”}”(hjâ…h]”hŒ Description”…”�”}”(hjä…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjà…ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/target:50: ./drivers/scsi/libiscsi_tcp.c”h´M�hj‚…ubhÝ)�”}”(hŒÈThis function always passes NULL for the crcp argument, because when this function is called we do not yet know the final size of the header and want to delay the digest processing until we know that.”h]”hŒÈThis function always passes NULL for the crcp argument, because when this function is called we do not yet know the final size of the header and want to delay the digest processing until we know that.”…”�”}”(hjø…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/target:50: ./drivers/scsi/libiscsi_tcp.c”h´M€hj‚…ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hjŠvh²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œ#iscsi_tcp_cleanup_task (C function)”Œc.iscsi_tcp_cleanup_task”hNt”auh1j,hjŠvh²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒ5void iscsi_tcp_cleanup_task (struct iscsi_task *task)”h]”jI)�”}”(hŒ4void iscsi_tcp_cleanup_task(struct iscsi_task *task)”h]”(jO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj'†h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj#†h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/target:50: ./drivers/scsi/libiscsi_tcp.c”h´M¶ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6†h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj#†h²hh³j5†h´M¶ubjr)�”}”(hŒiscsi_tcp_cleanup_task”h]”jx)�”}”(hŒiscsi_tcp_cleanup_task”h]”hŒiscsi_tcp_cleanup_task”…”�”}”(hjH†h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjD†ubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhj#†h²hh³j5†h´M¶ubj“)�”}”(hŒ(struct iscsi_task *task)”h]”j™)�”}”(hŒstruct iscsi_task *task”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hjd†h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhj`†ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjq†h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj`†ubh)�”}”(hhh]”jx)�”}”(hŒ iscsi_task”h]”hŒ iscsi_task”…”�”}”(hj‚†h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj†ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j„†Œmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×jJ†sbŒc.iscsi_tcp_cleanup_task”†”asbuh1hhj`†ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢†h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj`†ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj°†h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj`†ubjx)�”}”(hŒtask”h]”hŒtask”…”�”}”(hj½†h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj`†ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj\†ubah}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hj#†h²hh³j5†h´M¶ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hj†h²hh³j5†h´M¶ubah}”(h]”j†ah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³j5†h´M¶hj†h²hubj8)�”}”(hhh]”hÝ)�”}”(hŒfree tcp_task resources”h]”hŒfree tcp_task resources”…”�”}”(hjç†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/target:50: ./drivers/scsi/libiscsi_tcp.c”h´M¶hjä†h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj†h²hh³j5†h´M¶ubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYjÿ†jZjÿ†j[‰j\‰j]‰uh1j=h²hhjŠvh³Nh´Nubj_)�”}”(hŒp**Parameters** ``struct iscsi_task *task`` iscsi task **Description** must be called with session back_lock”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hj ‡h]”hŒ Parameters”…”�”}”(hj ‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/target:50: ./drivers/scsi/libiscsi_tcp.c”h´Mºhj‡ubj)�”}”(hhh]”j„)�”}”(hŒ'``struct iscsi_task *task`` iscsi task ”h]”(jŠ)�”}”(hŒ``struct iscsi_task *task``”h]”j�)�”}”(hj(‡h]”hŒstruct iscsi_task *task”…”�”}”(hj*‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj&‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/target:50: ./drivers/scsi/libiscsi_tcp.c”h´M·hj"‡ubj¦)�”}”(hhh]”hÝ)�”}”(hŒ iscsi task”h]”hŒ iscsi task”…”�”}”(hjA‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j=‡h´M·hj>‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj"‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j=‡h´M·hj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj‡ubhÝ)�”}”(hŒ**Description**”h]”ji)�”}”(hjc‡h]”hŒ Description”…”�”}”(hje‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhja‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/target:50: ./drivers/scsi/libiscsi_tcp.c”h´M¹hj‡ubhÝ)�”}”(hŒ%must be called with session back_lock”h]”hŒ%must be called with session back_lock”…”�”}”(hjy‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/target:50: ./drivers/scsi/libiscsi_tcp.c”h´M¸hj‡ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hjŠvh²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œ*iscsi_tcp_recv_segment_is_hdr (C function)”Œc.iscsi_tcp_recv_segment_is_hdr”hNt”auh1j,hjŠvh²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒCint iscsi_tcp_recv_segment_is_hdr (struct iscsi_tcp_conn *tcp_conn)”h]”jI)�”}”(hŒBint iscsi_tcp_recv_segment_is_hdr(struct iscsi_tcp_conn *tcp_conn)”h]”(jO)�”}”(hŒint”h]”hŒint”…”�”}”(hj¨‡h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj¤‡h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/target:50: ./drivers/scsi/libiscsi_tcp.c”h´Mpubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·‡h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj¤‡h²hh³j¶‡h´Mpubjr)�”}”(hŒiscsi_tcp_recv_segment_is_hdr”h]”jx)�”}”(hŒiscsi_tcp_recv_segment_is_hdr”h]”hŒiscsi_tcp_recv_segment_is_hdr”…”�”}”(hjɇh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjŇubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhj¤‡h²hh³j¶‡h´Mpubj“)�”}”(hŒ!(struct iscsi_tcp_conn *tcp_conn)”h]”j™)�”}”(hŒstruct iscsi_tcp_conn *tcp_conn”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hjå‡h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjá‡ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjò‡h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjá‡ubh)�”}”(hhh]”jx)�”}”(hŒiscsi_tcp_conn”h]”hŒiscsi_tcp_conn”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h •×`]”j„ah"]”h$]”h&]”uh1jwhjˆubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jˆŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×jˇsbŒc.iscsi_tcp_recv_segment_is_hdr”†”asbuh1hhjá‡ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#ˆh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjá‡ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj1ˆh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjá‡ubjx)�”}”(hŒtcp_conn”h]”hŒtcp_conn”…”�”}”(hj>ˆh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjá‡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj݇ubah}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hj¤‡h²hh³j¶‡h´Mpubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hj ‡h²hh³j¶‡h´Mpubah}”(h]”j›‡ah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³j¶‡h´Mphj�‡h²hubj8)�”}”(hhh]”hÝ)�”}”(hŒ#tests if we are reading in a header”h]”hŒ#tests if we are reading in a header”…”�”}”(hjhˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/target:50: ./drivers/scsi/libiscsi_tcp.c”h´Mphjeˆh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj�‡h²hh³j¶‡h´Mpubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYj€ˆjZj€ˆj[‰j\‰j]‰uh1j=h²hhjŠvh³Nh´Nubj_)�”}”(hŒ¤**Parameters** ``struct iscsi_tcp_conn *tcp_conn`` iscsi tcp conn **Description** returns non zero if we are currently processing or setup to process a header.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hjŠˆh]”hŒ Parameters”…”�”}”(hjŒˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjˆˆubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/target:50: ./drivers/scsi/libiscsi_tcp.c”h´Mthj„ˆubj)�”}”(hhh]”j„)�”}”(hŒ3``struct iscsi_tcp_conn *tcp_conn`` iscsi tcp conn ”h]”(jŠ)�”}”(hŒ#``struct iscsi_tcp_conn *tcp_conn``”h]”j�)�”}”(hj©ˆh]”hŒstruct iscsi_tcp_conn *tcp_conn”…”�”}”(hj«ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj§ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/target:50: ./drivers/scsi/libiscsi_tcp.c”h´Mqhj£ˆubj¦)�”}”(hhh]”hÝ)�”}”(hŒiscsi tcp conn”h]”hŒiscsi tcp conn”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j¾ˆh´Mqhj¿ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj£ˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j¾ˆh´Mqhj ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj„ˆubhÝ)�”}”(hŒ**Description**”h]”ji)�”}”(hjäˆh]”hŒ Description”…”�”}”(hjæˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjâˆubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/target:50: ./drivers/scsi/libiscsi_tcp.c”h´Mshj„ˆubhÝ)�”}”(hŒMreturns non zero if we are currently processing or setup to process a header.”h]”hŒMreturns non zero if we are currently processing or setup to process a header.”…”�”}”(hjúˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/target:50: ./drivers/scsi/libiscsi_tcp.c”h´Mrhj„ˆubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hjŠvh²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œiscsi_tcp_recv_skb (C function)”Œc.iscsi_tcp_recv_skb”hNt”auh1j,hjŠvh²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒwint iscsi_tcp_recv_skb (struct iscsi_conn *conn, struct sk_buff *skb, unsigned int offset, bool offloaded, int *status)”h]”jI)�”}”(hŒvint iscsi_tcp_recv_skb(struct iscsi_conn *conn, struct sk_buff *skb, unsigned int offset, bool offloaded, int *status)”h]”(jO)�”}”(hŒint”h]”hŒint”…”�”}”(hj)‰h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj%‰h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/target:50: ./drivers/scsi/libiscsi_tcp.c”h´M}ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8‰h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj%‰h²hh³j7‰h´M}ubjr)�”}”(hŒiscsi_tcp_recv_skb”h]”jx)�”}”(hŒiscsi_tcp_recv_skb”h]”hŒiscsi_tcp_recv_skb”…”�”}”(hjJ‰h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjF‰ubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhj%‰h²hh³j7‰h´M}ubj“)�”}”(hŒ`(struct iscsi_conn *conn, struct sk_buff *skb, unsigned int offset, bool offloaded, int *status)”h]”(j™)�”}”(hŒstruct iscsi_conn *conn”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hjf‰h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjb‰ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjs‰h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjb‰ubh)�”}”(hhh]”jx)�”}”(hŒ iscsi_conn”h]”hŒ iscsi_conn”…”�”}”(hj„‰h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj�‰ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j†‰Œmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×jL‰sbŒc.iscsi_tcp_recv_skb”†”asbuh1hhjb‰ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤‰h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjb‰ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj²‰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjb‰ubjx)�”}”(hŒconn”h]”hŒconn”…”�”}”(hj¿‰h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjb‰ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj^‰ubj™)�”}”(hŒstruct sk_buff *skb”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hj؉h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjÔ‰ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjå‰h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjÔ‰ubh)�”}”(hhh]”jx)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjö‰h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjó‰ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jø‰Œmodname”NŒ classname”NjÛjÞ)�”}”já]”j ‰Œc.iscsi_tcp_recv_skb”†”asbuh1hhjÔ‰ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjÔ‰ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj"Šh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjÔ‰ubjx)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj/Šh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÔ‰ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj^‰ubj™)�”}”(hŒunsigned int offset”h]”(jO)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjHŠh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjDŠubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVŠh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjDŠubjO)�”}”(hŒint”h]”hŒint”…”�”}”(hjdŠh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjDŠubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrŠh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjDŠubjx)�”}”(hŒoffset”h]”hŒoffset”…”�”}”(hj€Šh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjDŠubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj^‰ubj™)�”}”(hŒbool offloaded”h]”(jO)�”}”(hjÕ h]”hŒbool”…”�”}”(hj™Šh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj•Šubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦Šh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj•Šubjx)�”}”(hŒ offloaded”h]”hŒ offloaded”…”�”}”(hj´Šh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj•Šubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj^‰ubj™)�”}”(hŒ int *status”h]”(jO)�”}”(hŒint”h]”hŒint”…”�”}”(hjÍŠh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjÉŠubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛŠh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjÉŠubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjéŠh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjÉŠubjx)�”}”(hŒstatus”h]”hŒstatus”…”�”}”(hjöŠh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÉŠubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj^‰ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hj%‰h²hh³j7‰h´M}ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hj!‰h²hh³j7‰h´M}ubah}”(h]”j‰ah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³j7‰h´M}hj‰h²hubj8)�”}”(hhh]”hÝ)�”}”(hŒ Process skb”h]”hŒ Process skb”…”�”}”(hj ‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/target:50: ./drivers/scsi/libiscsi_tcp.c”h´M}hj‹h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj‰h²hh³j7‰h´M}ubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYj8‹jZj8‹j[‰j\‰j]‰uh1j=h²hhjŠvh³Nh´Nubj_)�”}”(hX„**Parameters** ``struct iscsi_conn *conn`` iscsi connection ``struct sk_buff *skb`` network buffer with header and/or data segment ``unsigned int offset`` offset in skb ``bool offloaded`` bool indicating if transfer was offloaded ``int *status`` iscsi TCP status result **Description** Will return status of transfer in **status**. And will return number of bytes copied.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hjB‹h]”hŒ Parameters”…”�”}”(hjD‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj@‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/target:50: ./drivers/scsi/libiscsi_tcp.c”h´M�hj<‹ubj)�”}”(hhh]”(j„)�”}”(hŒ-``struct iscsi_conn *conn`` iscsi connection ”h]”(jŠ)�”}”(hŒ``struct iscsi_conn *conn``”h]”j�)�”}”(hja‹h]”hŒstruct iscsi_conn *conn”…”�”}”(hjc‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj_‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/target:50: ./drivers/scsi/libiscsi_tcp.c”h´M~hj[‹ubj¦)�”}”(hhh]”hÝ)�”}”(hŒiscsi connection”h]”hŒiscsi connection”…”�”}”(hjz‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jv‹h´M~hjw‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj[‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jv‹h´M~hjX‹ubj„)�”}”(hŒG``struct sk_buff *skb`` network buffer with header and/or data segment ”h]”(jŠ)�”}”(hŒ``struct sk_buff *skb``”h]”j�)�”}”(hjš‹h]”hŒstruct sk_buff *skb”…”�”}”(hjœ‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj˜‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/target:50: ./drivers/scsi/libiscsi_tcp.c”h´Mhj”‹ubj¦)�”}”(hhh]”hÝ)�”}”(hŒ.network buffer with header and/or data segment”h]”hŒ.network buffer with header and/or data segment”…”�”}”(hj³‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j¯‹h´Mhj°‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj”‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j¯‹h´MhjX‹ubj„)�”}”(hŒ&``unsigned int offset`` offset in skb ”h]”(jŠ)�”}”(hŒ``unsigned int offset``”h]”j�)�”}”(hjÓ‹h]”hŒunsigned int offset”…”�”}”(hjÕ‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÑ‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/target:50: ./drivers/scsi/libiscsi_tcp.c”h´M€hjÍ‹ubj¦)�”}”(hhh]”hÝ)�”}”(hŒ offset in skb”h]”hŒ offset in skb”…”�”}”(hjì‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jè‹h´M€hjé‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjÍ‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jè‹h´M€hjX‹ubj„)�”}”(hŒ=``bool offloaded`` bool indicating if transfer was offloaded ”h]”(jŠ)�”}”(hŒ``bool offloaded``”h]”j�)�”}”(hj Œh]”hŒbool offloaded”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj Œubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/target:50: ./drivers/scsi/libiscsi_tcp.c”h´M�hjŒubj¦)�”}”(hhh]”hÝ)�”}”(hŒ)bool indicating if transfer was offloaded”h]”hŒ)bool indicating if transfer was offloaded”…”�”}”(hj%Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j!Œh´M�hj"Œubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j!Œh´M�hjX‹ubj„)�”}”(hŒ(``int *status`` iscsi TCP status result ”h]”(jŠ)�”}”(hŒ``int *status``”h]”j�)�”}”(hjEŒh]”hŒ int *status”…”�”}”(hjGŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjCŒubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/target:50: ./drivers/scsi/libiscsi_tcp.c”h´M‚hj?Œubj¦)�”}”(hhh]”hÝ)�”}”(hŒiscsi TCP status result”h]”hŒiscsi TCP status result”…”�”}”(hj^Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jZŒh´M‚hj[Œubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj?Œubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jZŒh´M‚hjX‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j~hj<‹ubhÝ)�”}”(hŒ**Description**”h]”ji)�”}”(hj€Œh]”hŒ Description”…”�”}”(hj‚Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj~Œubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/target:50: ./drivers/scsi/libiscsi_tcp.c”h´M„hj<‹ubhÝ)�”}”(hŒUWill return status of transfer in **status**. And will return number of bytes copied.”h]”(hŒ"Will return status of transfer in ”…”�”}”(hj–Œh²hh³Nh´Nubji)�”}”(hŒ **status**”h]”hŒstatus”…”�”}”(hjžŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj–ŒubhŒ). And will return number of bytes copied.”…”�”}”(hj–Œh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/target:50: ./drivers/scsi/libiscsi_tcp.c”h´Mƒhj<‹ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hjŠvh²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œ iscsi_tcp_task_init (C function)”Œc.iscsi_tcp_task_init”hNt”auh1j,hjŠvh²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒ1int iscsi_tcp_task_init (struct iscsi_task *task)”h]”jI)�”}”(hŒ0int iscsi_tcp_task_init(struct iscsi_task *task)”h]”(jO)�”}”(hŒint”h]”hŒint”…”�”}”(hj׌h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjÓŒh²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/target:50: ./drivers/scsi/libiscsi_tcp.c”h´MÐubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæŒh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjÓŒh²hh³jåŒh´MÐubjr)�”}”(hŒiscsi_tcp_task_init”h]”jx)�”}”(hŒiscsi_tcp_task_init”h]”hŒiscsi_tcp_task_init”…”�”}”(hjøŒh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjôŒubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhjÓŒh²hh³jåŒh´MÐubj“)�”}”(hŒ(struct iscsi_task *task)”h]”j™)�”}”(hŒstruct iscsi_task *task”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhj�ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!�h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj�ubh)�”}”(hhh]”jx)�”}”(hŒ iscsi_task”h]”hŒ iscsi_task”…”�”}”(hj2�h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj/�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j4�Œmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×júŒsbŒc.iscsi_tcp_task_init”†”asbuh1hhj�ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjR�h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj�ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj`�h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj�ubjx)�”}”(hŒtask”h]”hŒtask”…”�”}”(hjm�h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj �ubah}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hjÓŒh²hh³jåŒh´MÐubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hjÏŒh²hh³jåŒh´MÐubah}”(h]”jÊŒah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³jåŒh´MÐhjÌŒh²hubj8)�”}”(hhh]”hÝ)�”}”(hŒ1Initialize iSCSI SCSI_READ or SCSI_WRITE commands”h]”hŒ1Initialize iSCSI SCSI_READ or SCSI_WRITE commands”…”�”}”(hj—�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/target:50: ./drivers/scsi/libiscsi_tcp.c”h´MÐhj”�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hjÌŒh²hh³jåŒh´MÐubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYj¯�jZj¯�j[‰j\‰j]‰uh1j=h²hhjŠvh³Nh´Nubj_)�”}”(hŒ?**Parameters** ``struct iscsi_task *task`` scsi command task”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hj¹�h]”hŒ Parameters”…”�”}”(hj»�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj·�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/target:50: ./drivers/scsi/libiscsi_tcp.c”h´MÔhj³�ubj)�”}”(hhh]”j„)�”}”(hŒ-``struct iscsi_task *task`` scsi command task”h]”(jŠ)�”}”(hŒ``struct iscsi_task *task``”h]”j�)�”}”(hjØ�h]”hŒstruct iscsi_task *task”…”�”}”(hjÚ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÖ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/target:50: ./drivers/scsi/libiscsi_tcp.c”h´MÖhjÒ�ubj¦)�”}”(hhh]”hÝ)�”}”(hŒscsi command task”h]”hŒscsi command task”…”�”}”(hjñ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/target:50: ./drivers/scsi/libiscsi_tcp.c”h´MÑhjî�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjÒ�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jí�h´MÖhjÏ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj³�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hjŠvh²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œ iscsi_tcp_task_xmit (C function)”Œc.iscsi_tcp_task_xmit”hNt”auh1j,hjŠvh²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒ1int iscsi_tcp_task_xmit (struct iscsi_task *task)”h]”jI)�”}”(hŒ0int iscsi_tcp_task_xmit(struct iscsi_task *task)”h]”(jO)�”}”(hŒint”h]”hŒint”…”�”}”(hj2Žh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj.Žh²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/target:50: ./drivers/scsi/libiscsi_tcp.c”h´Mubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjAŽh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj.Žh²hh³j@Žh´Mubjr)�”}”(hŒiscsi_tcp_task_xmit”h]”jx)�”}”(hŒiscsi_tcp_task_xmit”h]”hŒiscsi_tcp_task_xmit”…”�”}”(hjSŽh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjOŽubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhj.Žh²hh³j@Žh´Mubj“)�”}”(hŒ(struct iscsi_task *task)”h]”j™)�”}”(hŒstruct iscsi_task *task”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hjoŽh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjkŽubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|Žh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjkŽubh)�”}”(hhh]”jx)�”}”(hŒ iscsi_task”h]”hŒ iscsi_task”…”�”}”(hj�Žh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjŠŽubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j�ŽŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×jUŽsbŒc.iscsi_tcp_task_xmit”†”asbuh1hhjkŽubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­Žh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjkŽubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj»Žh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjkŽubjx)�”}”(hŒtask”h]”hŒtask”…”�”}”(hjÈŽh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjkŽubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjgŽubah}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hj.Žh²hh³j@Žh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hj*Žh²hh³j@Žh´Mubah}”(h]”j%Žah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³j@Žh´Mhj'Žh²hubj8)�”}”(hhh]”hÝ)�”}”(hŒxmit normal PDU task”h]”hŒxmit normal PDU task”…”�”}”(hjòŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/target:50: ./drivers/scsi/libiscsi_tcp.c”h´MhjïŽh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj'Žh²hh³j@Žh´Mubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYj �jZj �j[‰j\‰j]‰uh1j=h²hhjŠvh³Nh´Nubj_)�”}”(hŒì**Parameters** ``struct iscsi_task *task`` iscsi command task **Description** We're expected to return 0 when everything was transmitted successfully, -EAGAIN if there's still data in the queue, or != 0 for any other kind of error.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hj�h]”hŒ Parameters”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/target:50: ./drivers/scsi/libiscsi_tcp.c”h´Mhj�ubj)�”}”(hhh]”j„)�”}”(hŒ/``struct iscsi_task *task`` iscsi command task ”h]”(jŠ)�”}”(hŒ``struct iscsi_task *task``”h]”j�)�”}”(hj3�h]”hŒstruct iscsi_task *task”…”�”}”(hj5�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj1�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/target:50: ./drivers/scsi/libiscsi_tcp.c”h´Mhj-�ubj¦)�”}”(hhh]”hÝ)�”}”(hŒiscsi command task”h]”hŒiscsi command task”…”�”}”(hjL�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jH�h´MhjI�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj-�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jH�h´Mhj*�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hj�ubhÝ)�”}”(hŒ**Description**”h]”ji)�”}”(hjn�h]”hŒ Description”…”�”}”(hjp�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjl�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/target:50: ./drivers/scsi/libiscsi_tcp.c”h´Mhj�ubhÝ)�”}”(hŒ™We're expected to return 0 when everything was transmitted successfully, -EAGAIN if there's still data in the queue, or != 0 for any other kind of error.”h]”hŒ�We’re expected to return 0 when everything was transmitted successfully, -EAGAIN if there’s still data in the queue, or != 0 for any other kind of error.”…”�”}”(hj„�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/target:50: ./drivers/scsi/libiscsi_tcp.c”h´Mhj�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hjŠvh²hh³Nh´Nubeh}”(h]”Œiscsi-tcp-interfaces”ah ]”h"]”Œiscsi tcp interfaces”ah$]”h&]”uh1hµhh·h²hh³hÊh´K-ubeh}”(h]”Œ!target-and-iscsi-interfaces-guide”ah ]”h"]”Œ!target and iscsi interfaces guide”ah$]”h&]”uh1hµhhh²hh³hÊh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÊuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)�”}”(hºNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”jÍ�Œerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÊŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”}”(j§�j¤�hñhîjjj¡+jž+j–,j“,j,j,jŽ,j‹,jŒXj‰Xj‡vj„vjŸ�jœ�uŒ nametypes”}”(j§�‰hñ‰j‰j¡+‰j–,‰j,‰jŽ,‰jŒX‰j‡v‰jŸ�‰uh}”(j¤�h·hîhËjhôjž+jj;jDjjj j¥jjj“ j˜ jüjjßjäj`jej j jà!jå!ja#jf#j¼$jÁ$j&j&jr'jw'jÍ(jÒ(j'*j,*j“,j¤+j,jµ+j‹,j,j‰Xj™,j¶,j»,j¤/j©/j%1j*1j·3j¼3j6j6j9j9jb;jg;jã<jè<jd>ji>jå?jê?j@AjEAj.Cj3Cj¯Dj´Dj0Fj5FjZHj_Hj KjKjûLjMj×QjÜQj2Sj7Sj�Tj’TjWjWj„vj�Xj¬Xj±Xj_j _jaejfejºkj¿kjrjrj–sj›sj ujujœ�jŠvj§vj¬vj›yj yj+{j0{j†|j‹|j¿~jÄ~j€j€ju�jz�j™„jž„j†j†j›‡j ‡j‰j!‰jÊŒjÏŒj%Žj*ŽuŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.