€•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´Mhj/+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´MhjK+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj/+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jJ+h´Mhj,+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ŒNvoid __iscsi_put_task (struct iscsi_session *session, struct iscsi_task *task)”h]”jI)�”}”(hŒMvoid __iscsi_put_task(struct iscsi_session *session, 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Œ8(struct iscsi_session *session, struct iscsi_task *task)”h]”(j™)�”}”(hŒstruct iscsi_session *session”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_session”h]”hŒ iscsi_session”…”�”}”(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Œsession”h]”hŒsession”…”�”}”(hjG0h²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_task *task”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hj`0h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhj\0ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjm0h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj\0ubh)�”}”(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”j€0Œmodname”NŒ classname”NjÛjÞ)�”}”já]”j(0Œc.__iscsi_put_task”†”asbuh1hhj\0ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœ0h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj\0ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjª0h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj\0ubjx)�”}”(hŒtask”h]”hŒtask”…”�”}”(hj·0h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj\0ubeh}”(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Œdrop the refcount on a task”h]”hŒdrop the refcount on a task”…”�”}”(hjá0h²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Þ0h²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_session *session`` iscsi session ``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)�”}”(hj1h]”hŒ Parameters”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj1ubah}”(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Œ0``struct iscsi_session *session`` iscsi session ”h]”(jŠ)�”}”(hŒ!``struct iscsi_session *session``”h]”j�)�”}”(hj"1h]”hŒstruct iscsi_session *session”…”�”}”(hj$1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj 1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´Mñhj1ubj¦)�”}”(hhh]”hÝ)�”}”(hŒ iscsi session”h]”hŒ iscsi session”…”�”}”(hj;1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j71h´Mñhj81ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j71h´Mñhj1ubj„)�”}”(hŒ?``struct iscsi_task *task`` iscsi_task to drop the refcount on ”h]”(jŠ)�”}”(hŒ``struct iscsi_task *task``”h]”j�)�”}”(hj[1h]”hŒstruct iscsi_task *task”…”�”}”(hj]1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjY1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´MòhjU1ubj¦)�”}”(hhh]”hÝ)�”}”(hŒ"iscsi_task to drop the refcount on”h]”hŒ"iscsi_task to drop the refcount on”…”�”}”(hjt1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jp1h´Mòhjq1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjU1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jp1h´Mòhj1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j~hjý0ubhÝ)�”}”(hŒ**Description**”h]”ji)�”}”(hj–1h]”hŒ Description”…”�”}”(hj˜1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj”1ubah}”(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.”…”�”}”(hj¬1h²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_session *session, struct iscsi_task *task, uint32_t exp_cmdsn, uint32_t max_cmdsn)”h]”jI)�”}”(hŒ}void iscsi_complete_scsi_task(struct iscsi_session *session, struct iscsi_task *task, uint32_t exp_cmdsn, uint32_t max_cmdsn)”h]”(jO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÛ1h²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Œ ”…”�”}”(hjê1h²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”…”�”}”(hjü1h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjø1ubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhj×1h²hh³jé1h´M*ubj“)�”}”(hŒ`(struct iscsi_session *session, struct iscsi_task *task, uint32_t exp_cmdsn, uint32_t max_cmdsn)”h]”(j™)�”}”(hŒstruct iscsi_session *session”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhj2ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%2h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj2ubh)�”}”(hhh]”jx)�”}”(hŒ iscsi_session”h]”hŒ iscsi_session”…”�”}”(hj62h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj32ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j82Œmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×jþ1sbŒc.iscsi_complete_scsi_task”†”asbuh1hhj2ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjV2h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj2ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjd2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj2ubjx)�”}”(hŒsession”h]”hŒsession”…”�”}”(hjq2h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj2ubj™)�”}”(hŒstruct iscsi_task *task”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hjŠ2h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhj†2ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—2h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj†2ubh)�”}”(hhh]”jx)�”}”(hŒ iscsi_task”h]”hŒ iscsi_task”…”�”}”(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á]”jR2Œc.iscsi_complete_scsi_task”†”asbuh1hhj†2ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆ2h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj†2ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjÔ2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj†2ubjx)�”}”(hŒtask”h]”hŒtask”…”�”}”(hjá2h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj†2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj2ubj™)�”}”(hŒuint32_t exp_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á]”jR2Œc.iscsi_complete_scsi_task”†”asbuh1hhjö2ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjö2ubjx)�”}”(hŒ exp_cmdsn”h]”hŒ exp_cmdsn”…”�”}”(hj)3h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjö2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj2ubj™)�”}”(hŒuint32_t max_cmdsn”h]”(h)�”}”(hhh]”jx)�”}”(hŒuint32_t”h]”hŒuint32_t”…”�”}”(hjE3h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjB3ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jG3Œmodname”NŒ classname”NjÛjÞ)�”}”já]”jR2Œc.iscsi_complete_scsi_task”†”asbuh1hhj>3ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjc3h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj>3ubjx)�”}”(hŒ max_cmdsn”h]”hŒ max_cmdsn”…”�”}”(hjq3h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj>3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj2ubeh}”(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›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˜3h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hjÐ1h²hh³jé1h´M*ubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYj³3jZj³3j[‰j\‰j]‰uh1j=h²hhj™,h³Nh´Nubj_)�”}”(hXh**Parameters** ``struct iscsi_session *session`` iscsi session ``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½3h]”hŒ Parameters”…”�”}”(hj¿3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj»3ubah}”(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·3ubj)�”}”(hhh]”(j„)�”}”(hŒ0``struct iscsi_session *session`` iscsi session ”h]”(jŠ)�”}”(hŒ!``struct iscsi_session *session``”h]”j�)�”}”(hjÜ3h]”hŒstruct iscsi_session *session”…”�”}”(hjÞ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÚ3ubah}”(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Œ iscsi session”h]”hŒ iscsi session”…”�”}”(hjõ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jñ3h´M+hjò3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjÖ3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jñ3h´M+hjÓ3ubj„)�”}”(hŒ4``struct iscsi_task *task`` iscsi task for scsi cmd ”h]”(jŠ)�”}”(hŒ``struct iscsi_task *task``”h]”j�)�”}”(hj4h]”hŒstruct iscsi_task *task”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M,hj4ubj¦)�”}”(hhh]”hÝ)�”}”(hŒiscsi task for scsi cmd”h]”hŒiscsi task for scsi cmd”…”�”}”(hj.4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j*4h´M,hj+4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j*4h´M,hjÓ3ubj„)�”}”(hŒ5``uint32_t exp_cmdsn`` expected cmd sn in cpu format ”h]”(jŠ)�”}”(hŒ``uint32_t exp_cmdsn``”h]”j�)�”}”(hjN4h]”hŒuint32_t exp_cmdsn”…”�”}”(hjP4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjL4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M-hjH4ubj¦)�”}”(hhh]”hÝ)�”}”(hŒexpected cmd sn in cpu format”h]”hŒexpected cmd sn in cpu format”…”�”}”(hjg4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jc4h´M-hjd4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjH4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jc4h´M-hjÓ3ubj„)�”}”(hŒ0``uint32_t max_cmdsn`` max cmd sn in cpu format ”h]”(jŠ)�”}”(hŒ``uint32_t max_cmdsn``”h]”j�)�”}”(hj‡4h]”hŒuint32_t max_cmdsn”…”�”}”(hj‰4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj…4ubah}”(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�4ubj¦)�”}”(hhh]”hÝ)�”}”(hŒmax cmd sn in cpu format”h]”hŒmax cmd sn in cpu format”…”�”}”(hj 4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jœ4h´M.hj�4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj�4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jœ4h´M.hjÓ3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j~hj·3ubhÝ)�”}”(hŒ**Description**”h]”ji)�”}”(hjÂ4h]”hŒ Description”…”�”}”(hjÄ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjÀ4ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M0hj·3ubhÝ)�”}”(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Ø4h²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·3ubhÝ)�”}”(hŒCalled with session back_lock”h]”hŒCalled with session back_lock”…”�”}”(hjç4h²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´M2hj·3ubeh}”(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Œistruct iscsi_task * iscsi_itt_to_task (struct iscsi_session *session, struct iscsi_conn *conn, itt_t itt)”h]”jI)�”}”(hŒgstruct iscsi_task *iscsi_itt_to_task(struct iscsi_session *session, struct iscsi_conn *conn, itt_t itt)”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhj5h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M°ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$5h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj5h²hh³j#5h´M°ubh)�”}”(hhh]”jx)�”}”(hŒ iscsi_task”h]”hŒ iscsi_task”…”�”}”(hj55h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj25ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j75Œmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j׌iscsi_itt_to_task”sbŒc.iscsi_itt_to_task”†”asbuh1hhj5h²hh³j#5h´M°ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjV5h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj5h²hh³j#5h´M°ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjd5h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj5h²hh³j#5h´M°ubjr)�”}”(hŒiscsi_itt_to_task”h]”jx)�”}”(hjS5h]”hŒiscsi_itt_to_task”…”�”}”(hju5h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjq5ubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhj5h²hh³j#5h´M°ubj“)�”}”(hŒC(struct iscsi_session *session, struct iscsi_conn *conn, itt_t itt)”h]”(j™)�”}”(hŒstruct iscsi_session *session”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hj�5h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjŒ5ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�5h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjŒ5ubh)�”}”(hhh]”jx)�”}”(hŒ iscsi_session”h]”hŒ iscsi_session”…”�”}”(hj®5h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj«5ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j°5Œmodname”NŒ classname”NjÛjÞ)�”}”já]”jQ5Œc.iscsi_itt_to_task”†”asbuh1hhjŒ5ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌ5h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjŒ5ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjÚ5h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjŒ5ubjx)�”}”(hŒsession”h]”hŒsession”…”�”}”(hjç5h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjŒ5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjˆ5ubj™)�”}”(hŒstruct iscsi_conn *conn”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjü5ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj 6h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjü5ubh)�”}”(hhh]”jx)�”}”(hŒ iscsi_conn”h]”hŒ iscsi_conn”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj6ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j 6Œmodname”NŒ classname”NjÛjÞ)�”}”já]”jQ5Œc.iscsi_itt_to_task”†”asbuh1hhjü5ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<6h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjü5ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjJ6h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjü5ubjx)�”}”(hŒconn”h]”hŒconn”…”�”}”(hjW6h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjü5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjˆ5ubj™)�”}”(hŒ itt_t itt”h]”(h)�”}”(hhh]”jx)�”}”(hŒitt_t”h]”hŒitt_t”…”�”}”(hjs6h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjp6ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”ju6Œmodname”NŒ classname”NjÛjÞ)�”}”já]”jQ5Œc.iscsi_itt_to_task”†”asbuh1hhjl6ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘6h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjl6ubjx)�”}”(hŒitt”h]”hŒitt”…”�”}”(hjŸ6h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjl6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjˆ5ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hj5h²hh³j#5h´M°ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hj5h²hh³j#5h´M°ubah}”(h]”j 5ah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³j#5h´M°hj 5h²hubj8)�”}”(hhh]”hÝ)�”}”(hŒlook up task by itt”h]”hŒlook up task by itt”…”�”}”(hjÉ6h²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Æ6h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj 5h²hh³j#5h´M°ubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYjá6jZjá6j[‰j\‰j]‰uh1j=h²hhj™,h³Nh´Nubj_)�”}”(hX1**Parameters** ``struct iscsi_session *session`` iscsi session ``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ë6h]”hŒ Parameters”…”�”}”(hjí6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjé6ubah}”(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å6ubj)�”}”(hhh]”(j„)�”}”(hŒ0``struct iscsi_session *session`` iscsi session ”h]”(jŠ)�”}”(hŒ!``struct iscsi_session *session``”h]”j�)�”}”(hj 7h]”hŒstruct iscsi_session *session”…”�”}”(hj 7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M±hj7ubj¦)�”}”(hhh]”hÝ)�”}”(hŒ iscsi session”h]”hŒ iscsi session”…”�”}”(hj#7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j7h´M±hj 7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j7h´M±hj7ubj„)�”}”(hŒ-``struct iscsi_conn *conn`` iscsi connection ”h]”(jŠ)�”}”(hŒ``struct iscsi_conn *conn``”h]”j�)�”}”(hjC7h]”hŒstruct iscsi_conn *conn”…”�”}”(hjE7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjA7ubah}”(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 connection”h]”hŒiscsi connection”…”�”}”(hj\7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jX7h´M²hjY7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj=7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jX7h´M²hj7ubj„)�”}”(hŒ``itt_t itt`` itt ”h]”(jŠ)�”}”(hŒ ``itt_t itt``”h]”j�)�”}”(hj|7h]”hŒ itt_t itt”…”�”}”(hj~7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjz7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M³hjv7ubj¦)�”}”(hhh]”hÝ)�”}”(hŒitt”h]”hŒitt”…”�”}”(hj•7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j‘7h´M³hj’7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjv7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j‘7h´M³hj7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j~hjå6ubhÝ)�”}”(hŒ**Description**”h]”ji)�”}”(hj·7h]”hŒ Description”…”�”}”(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å6ubhÝ)�”}”(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Í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å6ubhÝ)�”}”(hŒ#The session back_lock must be held.”h]”hŒ#The session back_lock must be held.”…”�”}”(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å6ubeh}”(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Œ�int __iscsi_complete_pdu (struct iscsi_session *session, struct iscsi_conn *conn, struct iscsi_hdr *hdr, char *data, int datalen)”h]”jI)�”}”(hŒ€int __iscsi_complete_pdu(struct iscsi_session *session, struct iscsi_conn *conn, struct iscsi_hdr *hdr, char *data, int datalen)”h]”(jO)�”}”(hŒint”h]”hŒint”…”�”}”(hj 8h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj8h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´MÏubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj8h²hh³j8h´MÏubjr)�”}”(hŒ__iscsi_complete_pdu”h]”jx)�”}”(hŒ__iscsi_complete_pdu”h]”hŒ__iscsi_complete_pdu”…”�”}”(hj,8h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj(8ubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhj8h²hh³j8h´MÏubj“)�”}”(hŒh(struct iscsi_session *session, struct iscsi_conn *conn, struct iscsi_hdr *hdr, char *data, int datalen)”h]”(j™)�”}”(hŒstruct iscsi_session *session”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hjH8h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjD8ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjU8h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjD8ubh)�”}”(hhh]”jx)�”}”(hŒ iscsi_session”h]”hŒ iscsi_session”…”�”}”(hjf8h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjc8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jh8Œmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×j.8sbŒc.__iscsi_complete_pdu”†”asbuh1hhjD8ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†8h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjD8ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj”8h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjD8ubjx)�”}”(hŒsession”h]”hŒsession”…”�”}”(hj¡8h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjD8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj@8ubj™)�”}”(hŒstruct iscsi_conn *conn”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hjº8h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhj¶8ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇ8h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj¶8ubh)�”}”(hhh]”jx)�”}”(hŒ iscsi_conn”h]”hŒ iscsi_conn”…”�”}”(hjØ8h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÕ8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jÚ8Œmodname”NŒ classname”NjÛjÞ)�”}”já]”j‚8Œc.__iscsi_complete_pdu”†”asbuh1hhj¶8ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjö8h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj¶8ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj¶8ubjx)�”}”(hŒconn”h]”hŒconn”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj¶8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj@8ubj™)�”}”(hŒstruct iscsi_hdr *hdr”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hj*9h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhj&9ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj79h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj&9ubh)�”}”(hhh]”jx)�”}”(hŒ iscsi_hdr”h]”hŒ iscsi_hdr”…”�”}”(hjH9h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjE9ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jJ9Œmodname”NŒ classname”NjÛjÞ)�”}”já]”j‚8Œc.__iscsi_complete_pdu”†”asbuh1hhj&9ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjf9h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj&9ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjt9h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj&9ubjx)�”}”(hŒhdr”h]”hŒhdr”…”�”}”(hj�9h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj&9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj@8ubj™)�”}”(hŒ char *data”h]”(jO)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjš9h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj–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Œdata”h]”hŒdata”…”�”}”(hjÃ9h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj–9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj@8ubj™)�”}”(hŒ int datalen”h]”(jO)�”}”(hŒint”h]”hŒint”…”�”}”(hjÜ9h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjØ9ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjê9h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjØ9ubjx)�”}”(hŒdatalen”h]”hŒdatalen”…”�”}”(hjø9h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjØ9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj@8ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hj8h²hh³j8h´MÏubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hj8h²hh³j8h´MÏubah}”(h]”jþ7ah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³j8h´MÏhj8h²hubj8)�”}”(hhh]”hÝ)�”}”(hŒ complete pdu”h]”hŒ complete pdu”…”�”}”(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&]”uh1j7hj8h²hh³j8h´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_session *session`` iscsi session ``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)�”}”(hjD:h]”hŒ Parameters”…”�”}”(hjF:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjB: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Œ0``struct iscsi_session *session`` iscsi session ”h]”(jŠ)�”}”(hŒ!``struct iscsi_session *session``”h]”j�)�”}”(hjc:h]”hŒstruct iscsi_session *session”…”�”}”(hje:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hja: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 session”h]”hŒ iscsi session”…”�”}”(hj|:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jx:h´MÐhjy:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj]:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jx:h´MÐhjZ:ubj„)�”}”(hŒ'``struct iscsi_conn *conn`` iscsi conn ”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”h]”hŒ iscsi conn”…”�”}”(hjµ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j±:h´MÑhj²:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj–:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j±:h´MÑhjZ:ubj„)�”}”(hŒ'``struct iscsi_hdr *hdr`` iscsi header ”h]”(jŠ)�”}”(hŒ``struct iscsi_hdr *hdr``”h]”j�)�”}”(hjÕ:h]”hŒstruct iscsi_hdr *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´MÒhjÏ:ubj¦)�”}”(hhh]”hÝ)�”}”(hŒ iscsi header”h]”hŒ iscsi header”…”�”}”(hjî:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jê:h´MÒhjë:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjÏ:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jê:h´MÒhjZ:ubj„)�”}”(hŒ``char *data`` data buffer ”h]”(jŠ)�”}”(hŒ``char *data``”h]”j�)�”}”(hj;h]”hŒ char *data”…”�”}”(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Œ data buffer”h]”hŒ data 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ÓhjZ:ubj„)�”}”(hŒ#``int datalen`` len of data buffer ”h]”(jŠ)�”}”(hŒ``int datalen``”h]”j�)�”}”(hjG;h]”hŒ int datalen”…”�”}”(hjI;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjE;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ÔhjA;ubj¦)�”}”(hhh]”hÝ)�”}”(hŒlen of data buffer”h]”hŒlen of data buffer”…”�”}”(hj`;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j\;h´MÔhj];ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjA;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j\;h´MÔhjZ: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´MÖhj>:ubhÝ)�”}”(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˜;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_itt_to_ctask (C function)”Œc.iscsi_itt_to_ctask”hNt”auh1j,hj™,h²hh³Nh´Nubj>)�”}”(hhh]”(jC)�”}”(hŒjstruct iscsi_task * iscsi_itt_to_ctask (struct iscsi_session *session, struct iscsi_conn *conn, itt_t itt)”h]”jI)�”}”(hŒhstruct iscsi_task *iscsi_itt_to_ctask(struct iscsi_session *session, struct iscsi_conn *conn, itt_t itt)”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hjÇ;h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjÃ;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•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׌iscsi_itt_to_ctask”sbŒc.iscsi_itt_to_ctask”†”asbuh1hhjÃ;h²hh³jÔ;h´M•ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjÃ;h²hh³jÔ;h´M•ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjÃ;h²hh³jÔ;h´M•ubjr)�”}”(hŒiscsi_itt_to_ctask”h]”jx)�”}”(hj<h]”hŒiscsi_itt_to_ctask”…”�”}”(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ŒC(struct iscsi_session *session, struct iscsi_conn *conn, itt_t itt)”h]”(j™)�”}”(hŒstruct iscsi_session *session”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Œ iscsi_session”h]”hŒ iscsi_session”…”�”}”(hj_<h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj\<ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”ja<Œmodname”NŒ classname”NjÛjÞ)�”}”já]”j<Œc.iscsi_itt_to_ctask”†”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Œsession”h]”hŒsession”…”�”}”(hj˜<h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj=<ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj9<ubj™)�”}”(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<Œc.iscsi_itt_to_ctask”†”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˜hj9<ubj™)�”}”(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<Œc.iscsi_itt_to_ctask”†”asbuh1hhj=ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjB=h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj=ubjx)�”}”(hŒitt”h]”hŒitt”…”�”}”(hjP=h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj=ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj9<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Œlook up ctask by itt”h]”hŒlook up ctask by itt”…”�”}”(hjz=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•hjw=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Œà**Parameters** ``struct iscsi_session *session`` iscsi session ``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´M™hj–=ubj)�”}”(hhh]”(j„)�”}”(hŒ0``struct iscsi_session *session`` iscsi session ”h]”(jŠ)�”}”(hŒ!``struct iscsi_session *session``”h]”j�)�”}”(hj»=h]”hŒstruct iscsi_session *session”…”�”}”(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 session”h]”hŒ iscsi session”…”�”}”(hjÔ=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÐ=h´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 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´M—hjî=ubj¦)�”}”(hhh]”hÝ)�”}”(hŒiscsi connection”h]”hŒiscsi connection”…”�”}”(hj >h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j >h´M—hj >ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjî=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j >h´M—hj²=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´M˜hj'>ubj¦)�”}”(hhh]”hÝ)�”}”(hŒitt”h]”hŒitt”…”�”}”(hjF>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jB>h´M˜hjC>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj'>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jB>h´M˜hj²=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j~hj–=ubhÝ)�”}”(hŒ**Description**”h]”ji)�”}”(hjh>h]”hŒ Description”…”�”}”(hjj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjf>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Ý)�”}”(hŒ"This should be used for cmd tasks.”h]”hŒ"This should be used for cmd tasks.”…”�”}”(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–=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”…”�”}”(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_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‘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?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Œ ”…”�”}”(hj7?h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjõ>ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjE?h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjõ>ubjx)�”}”(hŒtask”h]”hŒtask”…”�”}”(hjR?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Œ*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´M=hjy?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Œ—**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)�”}”(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´MAhj˜?ubj)�”}”(hhh]”j„)�”}”(hŒ,``struct iscsi_task *task`` task to requeue ”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´M>hj·?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´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Ý)�”}”(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´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_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&]”uh1jNhj9@h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M÷ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjL@h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj9@h²hh³jK@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&]”uh1jwhjZ@ubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhj9@h²hh³jK@h´M÷ubj“)�”}”(hŒ(struct iscsi_conn *conn)”h]”j™)�”}”(hŒstruct iscsi_conn *conn”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hjz@h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjv@ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡@h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjv@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_queue”†”asbuh1hhjv@ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸@h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjv@ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjÆ@h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjv@ubjx)�”}”(hŒconn”h]”hŒconn”…”�”}”(hjÓ@h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjv@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjr@ubah}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hj9@h²hh³jK@h´M÷ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hj5@h²hh³jK@h´M÷ubah}”(h]”j0@ah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³jK@h´M÷hj2@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&]”uh1j7hj2@h²hh³jK@h´M÷ubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYjAjZjAj[‰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)�”}”(hjAh]”hŒ Parameters”…”�”}”(hj!Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjAubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´MûhjAubj)�”}”(hhh]”j„)�”}”(hŒ>``struct iscsi_conn *conn`` iscsi conn to stop queueing IO on ”h]”(jŠ)�”}”(hŒ``struct iscsi_conn *conn``”h]”j�)�”}”(hj>Ah]”hŒstruct iscsi_conn *conn”…”�”}”(hj@Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj)�”}”(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”…”�”}”(hj¾Ah²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjºAh²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`hjºAh²hh³jÌAh´M ubjr)�”}”(hŒiscsi_suspend_tx”h]”jx)�”}”(hŒiscsi_suspend_tx”h]”hŒiscsi_suspend_tx”…”�”}”(hjßAh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÛAubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhjºAh²hh³jÌAh´M ubj“)�”}”(hŒ(struct iscsi_conn *conn)”h]”j™)�”}”(hŒstruct iscsi_conn *conn”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hjûAh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhj÷Aubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj÷Aubh)�”}”(hhh]”jx)�”}”(hŒ iscsi_conn”h]”hŒ iscsi_conn”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjBubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jBŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×jáAsbŒc.iscsi_suspend_tx”†”asbuh1hhj÷Aubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9Bh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj÷Aubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjGBh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj÷Aubjx)�”}”(hŒconn”h]”hŒconn”…”�”}”(hjTBh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj÷Aubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjóAubah}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hjºAh²hh³jÌAh´M ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hj¶Ah²hh³jÌAh´M ubah}”(h]”j±Aah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³jÌAh´M hj³Ah²hubj8)�”}”(hhh]”hÝ)�”}”(•hŒsuspend iscsi_data_xmit”h]”hŒsuspend iscsi_data_xmit”…”�”}”(hj~Bh²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&]”uh1j7hj³Ah²hh³jÌAh´M ubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYj–BjZj–Bj[‰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)�”}”(hj Bh]”hŒ Parameters”…”�”}”(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´MhjšBubj)�”}”(hhh]”j„)�”}”(hŒA``struct iscsi_conn *conn`` iscsi conn to stop processing IO on. ”h]”(jŠ)�”}”(hŒ``struct iscsi_conn *conn``”h]”j�)�”}”(hj¿Bh]”hŒstruct iscsi_conn *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 to stop processing IO on.”h]”hŒ$iscsi conn to stop processing IO on.”…”�”}”(hjØBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÔBh´M hjÕBubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj¹Bubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jÔBh´M hj¶Bubah}”(h]”h ]”h"]”h$]”h&]”uh1j~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 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.”…”�”}”(hjCh²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_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?Ch²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj;Ch²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M#ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNCh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj;Ch²hh³jMCh´M#ubjr)�”}”(hŒiscsi_suspend_rx”h]”jx)�”}”(hŒiscsi_suspend_rx”h]”hŒiscsi_suspend_rx”…”�”}”(hj`Ch²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj\Cubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhj;Ch²hh³jMCh´M#ubj“)�”}”(hŒ(struct iscsi_conn *conn)”h]”j™)�”}”(hŒstruct iscsi_conn *conn”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hj|Ch²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjxCubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰Ch²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjxCubh)�”}”(hhh]”jx)�”}”(hŒ iscsi_conn”h]”hŒ iscsi_conn”…”�”}”(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×jbCsbŒc.iscsi_suspend_rx”†”asbuh1hhjxCubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjºCh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjxCubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjÈCh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjxCubjx)�”}”(hŒconn”h]”hŒconn”…”�”}”(hjÕCh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjxCubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjtCubah}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hj;Ch²hh³jMCh´M#ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hj7Ch²hh³jMCh´M#ubah}”(h]”j2Cah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³jMCh´M#hj4Ch²hubj8)�”}”(hhh]”hÝ)�”}”(hŒ$Prevent recvwork from running again.”h]”hŒ$Prevent recvwork from running again.”…”�”}”(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&]”uh1j7hj4Ch²hh³jMCh´M#ubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYjDjZjDj[‰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!Dh]”hŒ Parameters”…”�”}”(hj#Dh²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 iscsi_conn *conn`` iscsi conn to stop.”h]”(jŠ)�”}”(hŒ``struct iscsi_conn *conn``”h]”j�)�”}”(hj@Dh]”hŒstruct iscsi_conn *conn”…”�”}”(hjBDh²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)hj:Dubj¦)�”}”(hhh]”hÝ)�”}”(hŒiscsi conn to stop.”h]”hŒiscsi conn to stop.”…”�”}”(hjYDh²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$hjVDubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj:Dubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jUDh´M)hj7Dubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjDubeh}”(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”…”�”}”(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_conn_unbind”h]”jx)�”}”(hŒiscsi_conn_unbind”h]”hŒiscsi_conn_unbind”…”�”}”(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Œ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×Dh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjÓDubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjäDh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjÓDubh)�”}”(hhh]”jx)�”}”(hŒiscsi_cls_conn”h]”hŒiscsi_cls_conn”…”�”}”(hjõDh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjòDubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j÷DŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×j½DsbŒc.iscsi_conn_unbind”†”asbuh1hhjÓDubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjÓDubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj#Eh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjÓDubjx)�”}”(hŒcls_conn”h]”hŒcls_conn”…”�”}”(hj0Eh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÓDubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjÏDubj™)�”}”(hŒbool is_active”h]”(jO)�”}”(hjÕ h]”hŒbool”…”�”}”(hjIEh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjEEubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVEh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjEEubjx)�”}”(hŒ is_active”h]”hŒ is_active”…”�”}”(hjdEh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjEEubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjÏDubeh}”(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Œprevent queueing to conn.”h]”hŒprevent queueing to conn.”…”�”}”(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 hj‹Eh²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_)�”}”(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)�”}”(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 iscsi_cls_conn *cls_conn`` iscsi conn ep is bound to. ”h]”(jŠ)�”}”(hŒ#``struct iscsi_cls_conn *cls_conn``”h]”j�)�”}”(hjÏEh]”hŒstruct iscsi_cls_conn *cls_conn”…”�”}”(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Œiscsi conn ep is bound to.”h]”hŒiscsi conn ep is bound to.”…”�”}”(hjèEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jäEh´M hjåEubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjÉEubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jäEh´M hjÆEubj„)�”}”(hŒ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�)�”}”(hjFh]”hŒbool is_active”…”�”}”(hj Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjFubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M hjFubj¦)�”}”(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!Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jFh´M hjFubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjFubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jFh´M hjÆEubeh}”(h]”h ]”h"]”h$]”h&]”uh1j~hjªEubhÝ)�”}”(hŒ**Description**”h]”ji)�”}”(hjCFh]”hŒ Description”…”�”}”(hjEFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjAFubah}”(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Œ¥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.”…”�”}”(hjYFh²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_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ˆFh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj„Fh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´MM ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—Fh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj„Fh²hh³j–Fh´MM ubjr)�”}”(hŒiscsi_eh_session_reset”h]”jx)�”}”(hŒiscsi_eh_session_reset”h]”hŒiscsi_eh_session_reset”…”�”}”(hj©Fh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj¥Fubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhj„Fh²hh³j–Fh´MM ubj“)�”}”(hŒ(struct scsi_cmnd *sc)”h]”j™)�”}”(hŒstruct scsi_cmnd *sc”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Œ scsi_cmnd”h]”hŒ scsi_cmnd”…”�”}”(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_eh_session_reset”†”asbuh1hhjÁFubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjÁFubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjÁFubjx)�”}”(hŒsc”h]”hŒsc”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÁFubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj½Fubah}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hj„Fh²hh³j–Fh´MM ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hj€Fh²hh³j–Fh´MM ubah}”(h]”j{Fah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³j–Fh´MM hj}Fh²hubj8)�”}”(hhh]”hÝ)�”}”(hŒ drop session and attempt relogin”h]”hŒ drop session and attempt relogin”…”�”}”(hjHGh²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´MM hjEGh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj}Fh²hh³j–Fh´MM ubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYj`GjZj`Gj[‰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)�”}”(hjjGh]”hŒ Parameters”…”�”}”(hjlGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjhGubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´MQ hjdGubj)�”}”(hhh]”j„)�”}”(hŒ&``struct scsi_cmnd *sc`` scsi command ”h]”(jŠ)�”}”(hŒ``struct scsi_cmnd *sc``”h]”j�)�”}”(hj‰Gh]”hŒstruct scsi_cmnd *sc”…”�”}”(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´MN hjƒGubj¦)�”}”(hhh]”hÝ)�”}”(hŒ scsi command”h]”hŒ scsi command”…”�”}”(hj¢Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jžGh´MN hjŸGubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjƒGubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jžGh´MN hj€Gubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjdGubhÝ)�”}”(hŒ**Description**”h]”ji)�”}”(hjÄGh]”hŒ Description”…”�”}”(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´MP hjdGubhÝ)�”}”(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ÚGh²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´MO hjdGubeh}”(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 Hh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjHh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´Má ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjHh²hh³jHh´Má ubjr)�”}”(hŒiscsi_eh_recover_target”h]”jx)�”}”(hŒiscsi_eh_recover_target”h]”hŒiscsi_eh_recover_target”…”�”}”(hj*Hh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj&Hubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhjHh²hh³jHh´Má ubj“)�”}”(hŒ(struct scsi_cmnd *sc)”h]”j™)�”}”(hŒstruct scsi_cmnd *sc”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hjFHh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjBHubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSHh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjBHubh)�”}”(hhh]”jx)�”}”(hŒ scsi_cmnd”h]”hŒ scsi_cmnd”…”�”}”(hjdHh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjaHubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jfHŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×j,HsbŒc.iscsi_eh_recover_target”†”asbuh1hhjBHubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„Hh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjBHubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj’Hh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjBHubjx)�”}”(hŒsc”h]”hŒsc”…”�”}”(hjŸHh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjBHubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj>Hubah}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hjHh²hh³jHh´Má ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hjHh²hh³jHh´Má ubah}”(h]”jüGah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³jHh´Má hjþGh²hubj8)�”}”(hhh]”hÝ)�”}”(hŒ%reset target and possibly the session”h]”hŒ%reset target and possibly the session”…”�”}”(hjÉHh²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ÆHh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hjþGh²hh³jHh´Má ubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYjáHjZjáHj[‰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ëHh]”hŒ Parameters”…”�”}”(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åHubj)�”}”(hhh]”j„)�”}”(hŒ&``struct scsi_cmnd *sc`` scsi command ”h]”(jŠ)�”}”(hŒ``struct scsi_cmnd *sc``”h]”j�)�”}”(hj Ih]”hŒstruct scsi_cmnd *sc”…”�”}”(hj Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjIubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´Mâ hjIubj¦)�”}”(hhh]”hÝ)�”}”(hŒ scsi command”h]”hŒ scsi command”…”�”}”(hj#Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jIh´Mâ hj Iubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjIubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jIh´Mâ hjIubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjåHubhÝ)�”}”(hŒ**Description**”h]”ji)�”}”(hjEIh]”hŒ Description”…”�”}”(hjGIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjCIubah}”(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åHubhÝ)�”}”(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.”…”�”}”(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´Mã hjåHubeh}”(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ŠIh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj†Ih²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M^ ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™Ih²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj†Ih²hh³j˜Ih´M^ ubjr)�”}”(hŒiscsi_host_add”h]”jx)�”}”(hŒiscsi_host_add”h]”hŒiscsi_host_add”…”�”}”(hj«Ih²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj§Iubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhj†Ih²hh³j˜Ih´M^ ubj“)�”}”(hŒ.(struct Scsi_Host *shost, struct device *pdev)”h]”(j™)�”}”(hŒstruct Scsi_Host *shost”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hjÇIh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjÃIubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔIh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjÃIubh)�”}”(hhh]”jx)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hjåIh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjâIubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jçIŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×j­IsbŒc.iscsi_host_add”†”asbuh1hhjÃIubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjÃIubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjÃIubjx)�”}”(hŒshost”h]”hŒshost”…”�”}”(hj Jh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÃIubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj¿Iubj™)�”}”(hŒstruct device *pdev”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hj9Jh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhj5Jubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFJh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj5Jubh)�”}”(hhh]”jx)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjWJh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjTJubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jYJŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jJŒc.iscsi_host_add”†”asbuh1hhj5Jubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjuJh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj5Jubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjƒJh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj5Jubjx)�”}”(hŒpdev”h]”hŒpdev”…”�”}”(hj�Jh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj5Jubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj¿Iubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hj†Ih²hh³j˜Ih´M^ ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hj‚Ih²hh³j˜Ih´M^ ubah}”(h]”j}Iah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³j˜Ih´M^ hjIh²hubj8)�”}”(hhh]”hÝ)�”}”(hŒadd host to system”h]”hŒadd host to system”…”�”}”(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´M^ hj·Jh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hjIh²hh³j˜Ih´M^ ubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYjÒJjZjÒJj[‰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ÜJh]”hŒ Parameters”…”�”}”(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´Mb hjÖJubj)�”}”(hhh]”(j„)�”}”(hŒ&``struct Scsi_Host *shost`` scsi host ”h]”(jŠ)�”}”(hŒ``struct Scsi_Host *shost``”h]”j�)�”}”(hjûJh]”hŒstruct Scsi_Host *shost”…”�”}”(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´M_ hjõJubj¦)�”}”(hhh]”hÝ)�”}”(hŒ scsi host”h]”hŒ scsi host”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jKh´M_ hjKubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjõJubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jKh´M_ hjòJubj„)�”}”(hŒ&``struct device *pdev`` parent device ”h]”(jŠ)�”}”(hŒ``struct device *pdev``”h]”j�)�”}”(hj4Kh]”hŒstruct device *pdev”…”�”}”(hj6Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj2Kubah}”(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.Kubj¦)�”}”(hhh]”hÝ)�”}”(hŒ parent device”h]”hŒ parent device”…”�”}”(hjMKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jIKh´M` hjJKubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj.Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jIKh´M` hjòJubeh}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÖJubhÝ)�”}”(hŒ**Description**”h]”ji)�”}”(hjoKh]”hŒ Description”…”�”}”(hjqKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjmKubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´Mb hjÖJubhÝ)�”}”(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.”…”�”}”(hj…Kh²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´Ma hjÖJubeh}”(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”…”�”}”(hj´Kh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhj°Kh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´Mr ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂKh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj°Kh²hh³jÁKh´Mr ubh)�”}”(hhh]”jx)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(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_host_alloc”sbŒc.iscsi_host_alloc”†”asbuh1hhj°Kh²hh³jÁKh´Mr ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjôKh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj°Kh²hh³jÁKh´Mr ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj°Kh²hh³jÁKh´Mr ubjr)�”}”(hŒiscsi_host_alloc”h]”jx)�”}”(hjñKh]”hŒiscsi_host_alloc”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjLubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhj°Kh²hh³jÁKh´Mr 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.Lh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhj*Lubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)�”}”(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”…”�”}”(hjgNh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjcNh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´MŸ ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvNh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjcNh²hh³juNh´MŸ ubjr)�”}”(hŒiscsi_host_remove”h]”jx)�”}”(hŒiscsi_host_remove”h]”hŒiscsi_host_remove”…”�”}”(hjˆNh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj„Nubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhjcNh²hh³juNh´MŸ ubj“)�”}”(hŒ+(struct Scsi_Host *shost, bool is_shutdown)”h]”(j™)�”}”(hŒstruct Scsi_Host *shost”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hj¤Nh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhj Nubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±Nh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj Nubh)�”}”(hhh]”jx)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hjÂNh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj¿Nubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jÄNŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×jŠNsbŒc.iscsi_host_remove”†”asbuh1hhj Nubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâNh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj Nubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjðNh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj Nubjx)�”}”(hŒshost”h]”hŒshost”…”�”}”(hjýNh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj Nubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjœNubj™)�”}”(hŒbool is_shutdown”h]”(jO)�”}”(hjÕ h]”hŒbool”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjOubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#Oh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjOubjx)�”}”(hŒ is_shutdown”h]”hŒ is_shutdown”…”�”}”(hj1Oh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjOubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjœNubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hjcNh²hh³juNh´MŸ ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hj_Nh²hh³juNh´MŸ ubah}”(h]”jZNah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³juNh´MŸ hj\Nh²hubj8)�”}”(hhh]”hÝ)�”}”(hŒremove host and sessions”h]”hŒremove host and sessions”…”�”}”(hj[Oh²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Ÿ hjXOh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj\Nh²hh³juNh´MŸ ubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYjsOjZjsOj[‰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)�”}”(hj}Oh]”hŒ Parameters”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj{Oubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M£ hjwOubj)�”}”(hhh]”(j„)�”}”(hŒ&``struct Scsi_Host *shost`` scsi host ”h]”(jŠ)�”}”(hŒ``struct Scsi_Host *shost``”h]”j�)�”}”(hjœOh]”hŒstruct Scsi_Host *shost”…”�”}”(hjžOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjšOubah}”(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–Oubj¦)�”}”(hhh]”hÝ)�”}”(hŒ scsi host”h]”hŒ scsi host”…”�”}”(hjµOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j±Oh´M  hj²Oubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj–Oubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j±Oh´M  hj“Oubj„)�”}”(hŒC``bool is_shutdown`` true if called from a driver shutdown callout ”h]”(jŠ)�”}”(hŒ``bool is_shutdown``”h]”j�)�”}”(hjÕOh]”hŒbool is_shutdown”…”�”}”(hj×Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÓOubah}”(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ÏOubj¦)�”}”(hhh]”hÝ)�”}”(hŒ-true if called from a driver shutdown callout”h]”hŒ-true if called from a driver shutdown callout”…”�”}”(hjîOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jêOh´M¡ hjëOubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjÏOubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jêOh´M¡ hj“Oubeh}”(h]”h ]”h"]”h$]”h&]”uh1j~hjwOubhÝ)�”}”(hŒ**Description**”h]”ji)�”}”(hjPh]”hŒ Description”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjPubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M£ hjwOubhÝ)�”}”(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&Ph²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¢ hjwOubeh}”(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”…”�”}”(hjUPh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjQPh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´Má ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjcPh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjQPh²hh³jbPh´Má ubh)�”}”(hhh]”jx)�”}”(hŒiscsi_cls_session”h]”hŒiscsi_cls_session”…”�”}”(hjtPh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjqPubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jvPŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j׌iscsi_session_setup”sbŒc.iscsi_session_setup”†”asbuh1hhjQPh²hh³jbPh´Má ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•Ph²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjQPh²hh³jbPh´Má ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj£Ph²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjQPh²hh³jbPh´Má ubjr)�”}”(hŒiscsi_session_setup”h]”jx)�”}”(hj’Ph]”hŒiscsi_session_setup”…”�”}”(hj´Ph²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj°Pubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhjQPh²hh³jbPh´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ÏPh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjËPubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜPh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjËPubh)�”}”(hhh]”jx)�”}”(hŒiscsi_transport”h]”hŒiscsi_transport”…”�”}”(hjíPh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjêPubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jïPŒmodname”NŒ classname”NjÛjÞ)�”}”já]”j�PŒc.iscsi_session_setup”†”asbuh1hhjËPubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Qh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjËPubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjËPubjx)�”}”(hŒiscsit”h]”hŒiscsit”…”�”}”(hj&Qh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjËPubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjÇPubj™)�”}”(hŒstruct Scsi_Host *shost”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hj?Qh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhj;Qubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjLQh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj;Qubh)�”}”(hhh]”jx)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hj]Qh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjZQubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j_QŒmodname”NŒ classname”NjÛjÞ)�”}”já]”j�PŒc.iscsi_session_setup”†”asbuh1hhj;Qubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{Qh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj;Qubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj‰Qh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj;Qubjx)�”}”(hŒshost”h]”hŒshost”…”�”}”(hj–Qh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj;Qubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjÇPubj™)�”}”(hŒuint16_t cmds_max”h]”(h)�”}”(hhh]”jx)�”}”(hŒuint16_t”h]”hŒuint16_t”…”�”}”(hj²Qh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj¯Qubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j´QŒmodname”NŒ classname”NjÛjÞ)�”}”já]”j�PŒc.iscsi_session_setup”†”asbuh1hhj«Qubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐQh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj«Qubjx)�”}”(hŒcmds_max”h]”hŒcmds_max”…”�”}”(hjÞQh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj«Qubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjÇPubj™)�”}”(hŒ int dd_size”h]”(jO)�”}”(hŒint”h]”hŒint”…”�”}”(hj÷Qh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjóQubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjóQubjx)�”}”(hŒdd_size”h]”hŒdd_size”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjóQubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjÇPubj™)�”}”(hŒint cmd_task_size”h]”(jO)�”}”(hŒint”h]”hŒint”…”�”}”(hj,Rh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj(Rubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:Rh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj(Rubjx)�”}”(hŒ cmd_task_size”h]”hŒ cmd_task_size”…”�”}”(hjHRh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj(Rubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjÇPubj™)�”}”(hŒuint32_t initial_cmdsn”h]”(h)�”}”(hhh]”jx)�”}”(hŒuint32_t”h]”hŒuint32_t”…”�”}”(hjdRh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjaRubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jfRŒmodname”NŒ classname”NjÛjÞ)�”}”já]”j�PŒc.iscsi_session_setup”†”asbuh1hhj]Rubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚Rh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj]Rubjx)�”}”(hŒ initial_cmdsn”h]”hŒ initial_cmdsn”…”�”}”(hj�Rh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj]Rubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjÇPubj™)�”}”(hŒunsigned int id”h]”(jO)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj©Rh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj¥Rubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·Rh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj¥RubjO)�”}”(hŒint”h]”hŒint”…”�”}”(hjÅRh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj¥Rubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓRh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj¥Rubjx)�”}”(hŒid”h]”hŒid”…”�”}”(hjáRh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj¥Rubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjÇPubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hjQPh²hh³jbPh´Má ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hjMPh²hh³jbPh´Má ubah}”(h]”jHPah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³jbPh´Má hjJPh²hubj8)�”}”(hhh]”hÝ)�”}”(hŒ-create iscsi cls session and host and session”h]”hŒ-create iscsi cls session and host and 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´Má hjSh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hjJPh²hh³jbPh´Má ubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYj#SjZj#Sj[‰j\‰j]‰uh1j=h²hhj™,h³Nh´Nubj_)�”}”(hX«**Parameters** ``struct iscsi_transport *iscsit`` iscsi transport template ``struct Scsi_Host *shost`` scsi host ``uint16_t cmds_max`` session can queue ``int dd_size`` private driver data size, added to session allocation size ``int cmd_task_size`` LLD task private data size ``uint32_t initial_cmdsn`` initial CmdSN ``unsigned int id`` target ID to add to this session **Description** This can be used by software iscsi_transports that allocate a session per scsi host. Callers should set cmds_max to the largest total number (mgmt + scsi) of tasks they support. The iscsi layer reserves ISCSI_MGMT_CMDS_MAX tasks for nop handling and login/logout requests.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hj-Sh]”hŒ Parameters”…”�”}”(hj/Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj+Subah}”(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'Subj)�”}”(hhh]”(j„)�”}”(hŒ<``struct iscsi_transport *iscsit`` iscsi transport template ”h]”(jŠ)�”}”(hŒ"``struct iscsi_transport *iscsit``”h]”j�)�”}”(hjLSh]”hŒstruct iscsi_transport *iscsit”…”�”}”(hjNSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjJSubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´Mâ hjFSubj¦)�”}”(hhh]”hÝ)�”}”(hŒiscsi transport template”h]”hŒiscsi transport template”…”�”}”(hjeSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jaSh´Mâ hjbSubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjFSubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jaSh´Mâ hjCSubj„)�”}”(hŒ&``struct Scsi_Host *shost`` scsi host ”h]”(jŠ)�”}”(hŒ``struct Scsi_Host *shost``”h]”j�)�”}”(hj…Sh]”hŒstruct Scsi_Host *shost”…”�”}”(hj‡Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjƒSubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´Mã hjSubj¦)�”}”(hhh]”hÝ)�”}”(hŒ scsi host”h]”hŒ scsi host”…”�”}”(hjžSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jšSh´Mã hj›Subah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjSubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jšSh´Mã hjCSubj„)�”}”(hŒ(``uint16_t cmds_max`` session can queue ”h]”(jŠ)�”}”(hŒ``uint16_t cmds_max``”h]”j�)�”}”(hj¾Sh]”hŒuint16_t cmds_max”…”�”}”(hjÀSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¼Subah}”(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¸Subj¦)�”}”(hhh]”hÝ)�”}”(hŒsession can queue”h]”hŒsession can queue”…”�”}”(hj×Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÓSh´Mä hjÔSubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj¸Subeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jÓSh´Mä hjCSubj„)�”}”(hŒK``int dd_size`` private driver data size, added to session allocation size ”h]”(jŠ)�”}”(hŒ``int dd_size``”h]”j�)�”}”(hj÷Sh]”hŒ int dd_size”…”�”}”(hjùSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjõSubah}”(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ñSubj¦)�”}”(hhh]”hÝ)�”}”(hŒ:private driver data size, added to session allocation size”h]”hŒ:private driver data size, added to session allocation size”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j Th´Må hj Tubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjñSubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j Th´Må hjCSubj„)�”}”(hŒ1``int cmd_task_size`` LLD task private data size ”h]”(jŠ)�”}”(hŒ``int cmd_task_size``”h]”j�)�”}”(hj0Th]”hŒint cmd_task_size”…”�”}”(hj2Th²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ŒLLD task private data size”h]”hŒLLD task private data size”…”�”}”(hjITh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jETh´Mæ hjFTubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj*Tubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jETh´Mæ hjCSubj„)�”}”(hŒ)``uint32_t initial_cmdsn`` initial CmdSN ”h]”(jŠ)�”}”(hŒ``uint32_t initial_cmdsn``”h]”j�)�”}”(hjiTh]”hŒuint32_t initial_cmdsn”…”�”}”(hjkTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjgTubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´Mç hjcTubj¦)�”}”(hhh]”hÝ)�”}”(hŒ initial CmdSN”h]”hŒ initial CmdSN”…”�”}”(hj‚Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j~Th´Mç hjTubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjcTubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j~Th´Mç hjCSubj„)�”}”(hŒ5``unsigned int id`` target ID to add to this session ”h]”(jŠ)�”}”(hŒ``unsigned int id``”h]”j�)�”}”(hj¢Th]”hŒunsigned int id”…”�”}”(hj¤Th²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Œ target ID to add to this session”h]”hŒ target ID to add to this session”…”�”}”(hj»Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j·Th´Mè hj¸Tubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjœTubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j·Th´Mè hjCSubeh}”(h]”h ]”h"]”h$]”h&]”uh1j~hj'SubhÝ)�”}”(hŒ**Description**”h]”ji)�”}”(hjÝTh]”hŒ Description”…”�”}”(hjßTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjÛTubah}”(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'SubhÝ)�”}”(hŒTThis can be used by software iscsi_transports that allocate a session per scsi host.”h]”hŒTThis can be used by software iscsi_transports that allocate a session per scsi host.”…”�”}”(hjóTh²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'SubhÝ)�”}”(hŒ»Callers should set cmds_max to the largest total number (mgmt + scsi) of tasks they support. The iscsi layer reserves ISCSI_MGMT_CMDS_MAX tasks for nop handling and login/logout requests.”h]”hŒ»Callers should set cmds_max to the largest total number (mgmt + scsi) of tasks they support. The iscsi layer reserves ISCSI_MGMT_CMDS_MAX tasks for nop handling and login/logout requests.”…”�”}”(hjUh²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'Subeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hj™,h²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œiscsi_session_free (C function)”Œc.iscsi_session_free”hNt”auh1j,hj™,h²hh³Nh´Nubj>)�”}”(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”…”�”}”(hj1Uh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj-Uh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M^ ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@Uh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj-Uh²hh³j?Uh´M^ ubjr)�”}”(hŒiscsi_session_free”h]”jx)�”}”(hŒiscsi_session_free”h]”hŒiscsi_session_free”…”�”}”(hjRUh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjNUubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhj-Uh²hh³j?Uh´M^ ubj“)�”}”(hŒ'(struct iscsi_cls_session *cls_session)”h]”j™)�”}”(hŒ%struct iscsi_cls_session *cls_session”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hjnUh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjjUubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{Uh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjjUubh)�”}”(hhh]”jx)�”}”(hŒiscsi_cls_session”h]”hŒiscsi_cls_session”…”�”}”(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ä)�”}”j×jTUsbŒc.iscsi_session_free”†”asbuh1hhjjUubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬Uh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjjUubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjºUh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjjUubjx)�”}”(hŒ cls_session”h]”hŒ cls_session”…”�”}”(hjÇUh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjjUubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjfUubah}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hj-Uh²hh³j?Uh´M^ ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hj)Uh²hh³j?Uh´M^ ubah}”(h]”j$Uah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³j?Uh´M^ hj&Uh²hubj8)�”}”(hhh]”hÝ)�”}”(hŒ%Free iscsi session and it's resources”h]”hŒ'Free iscsi session and it’s resources”…”�”}”(hjñUh²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îUh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj&Uh²hh³j?Uh´M^ ubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYj VjZj Vj[‰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)�”}”(hjVh]”hŒ Parameters”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjVubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´Mb hj Vubj)�”}”(hhh]”j„)�”}”(hŒ7``struct iscsi_cls_session *cls_session`` iscsi session”h]”(jŠ)�”}”(hŒ)``struct iscsi_cls_session *cls_session``”h]”j�)�”}”(hj2Vh]”hŒ%struct iscsi_cls_session *cls_session”…”�”}”(hj4Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj0Vubah}”(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Œ iscsi session”h]”hŒ iscsi session”…”�”}”(hjKVh²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_ hjHVubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj,Vubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jGVh´Md hj)Vubah}”(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_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ŒVh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjˆVh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M{ ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›Vh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjˆVh²hh³jšVh´M{ ubjr)�”}”(hŒiscsi_session_teardown”h]”jx)�”}”(hŒiscsi_session_teardown”h]”hŒiscsi_session_teardown”…”�”}”(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´M{ ubj“)�”}”(hŒ'(struct iscsi_cls_session *cls_session)”h]”j™)�”}”(hŒ%struct iscsi_cls_session *cls_session”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hjÉVh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjÅVubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖVh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjÅVubh)�”}”(hhh]”jx)�”}”(hŒiscsi_cls_session”h]”hŒiscsi_cls_session”…”�”}”(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_session_teardown”†”asbuh1hhjÅVubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjÅVubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjÅVubjx)�”}”(hŒ cls_session”h]”hŒ cls_session”…”�”}”(hj"Wh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÅVubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjÁVubah}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hjˆVh²hh³jšVh´M{ ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hj„Vh²hh³jšVh´M{ ubah}”(h]”jVah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³jšVh´M{ hj�Vh²hubj8)�”}”(hhh]”hÝ)�”}”(hŒdestroy session and cls_session”h]”hŒdestroy session and cls_session”…”�”}”(hjLWh²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{ hjIWh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj�Vh²hh³jšVh´M{ ubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYjdWjZjdWj[‰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)�”}”(hjnWh]”hŒ Parameters”…”�”}”(hjpWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjlWubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M hjhWubj)�”}”(hhh]”j„)�”}”(hŒ7``struct iscsi_cls_session *cls_session`` iscsi session”h]”(jŠ)�”}”(hŒ)``struct iscsi_cls_session *cls_session``”h]”j�)�”}”(hj�Wh]”hŒ%struct iscsi_cls_session *cls_session”…”�”}”(hj�Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‹Wubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´M� hj‡Wubj¦)�”}”(hhh]”hÝ)�”}”(hŒ iscsi session”h]”hŒ iscsi session”…”�”}”(hj¦Wh²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£Wubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj‡Wubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j¢Wh´M� hj„Wubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjhWubeh}”(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çWh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjãWh²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`hjãWh²hh³jôWh´M† ubh)�”}”(hhh]”jx)�”}”(hŒiscsi_cls_conn”h]”hŒiscsi_cls_conn”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjXubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jXŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j׌iscsi_conn_setup”sbŒc.iscsi_conn_setup”†”asbuh1hhjãWh²hh³jôWh´M† ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'Xh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjãWh²hh³jôWh´M† ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj5Xh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjãWh²hh³jôWh´M† ubjr)�”}”(hŒiscsi_conn_setup”h]”jx)�”}”(hj$Xh]”hŒiscsi_conn_setup”…”�”}”(hjFXh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjBXubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhjãWh²hh³jôWh´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”…”�”}”(hjaXh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhj]Xubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnXh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj]Xubh)�”}”(hhh]”jx)�”}”(hŒiscsi_cls_session”h]”hŒiscsi_cls_session”…”�”}”(hjXh²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"XŒc.iscsi_conn_setup”†”asbuh1hhj]Xubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Xh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj]Xubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj«Xh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj]Xubjx)�”}”(hŒ cls_session”h]”hŒ cls_session”…”�”•}”(hj¸Xh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj]Xubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjYXubj™)�”}”(hŒ int dd_size”h]”(jO)�”}”(hŒint”h]”hŒint”…”�”}”(hjÑXh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjÍXubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjßXh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjÍXubjx)�”}”(hŒdd_size”h]”hŒdd_size”…”�”}”(hjíXh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÍXubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjYXubj™)�”}”(hŒuint32_t conn_idx”h]”(h)�”}”(hhh]”jx)�”}”(hŒuint32_t”h]”hŒuint32_t”…”�”}”(hj Yh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjYubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j YŒmodname”NŒ classname”NjÛjÞ)�”}”já]”j"XŒc.iscsi_conn_setup”†”asbuh1hhjYubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'Yh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjYubjx)�”}”(hŒconn_idx”h]”hŒconn_idx”…”�”}”(hj5Yh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjYubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjYXubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hjãWh²hh³jôWh´M† ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hjßWh²hh³jôWh´M† ubah}”(h]”jÚWah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³jôWh´M† hjÜWh²hubj8)�”}”(hhh]”hÝ)�”}”(hŒ$create iscsi_cls_conn and iscsi_conn”h]”hŒ$create iscsi_cls_conn and iscsi_conn”…”�”}”(hj_Yh²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\Yh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hjÜWh²hh³jôWh´M† ubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYjwYjZjwYj[‰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)�”}”(hj�Yh]”hŒ Parameters”…”�”}”(hjƒYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjYubah}”(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{Yubj)�”}”(hhh]”(j„)�”}”(hŒ<``struct iscsi_cls_session *cls_session`` iscsi_cls_session ”h]”(jŠ)�”}”(hŒ)``struct iscsi_cls_session *cls_session``”h]”j�)�”}”(hj Yh]”hŒ%struct iscsi_cls_session *cls_session”…”�”}”(hj¢Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjžYubah}”(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šYubj¦)�”}”(hhh]”hÝ)�”}”(hŒiscsi_cls_session”h]”hŒiscsi_cls_session”…”�”}”(hj¹Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jµYh´M‡ hj¶Yubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjšYubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jµYh´M‡ hj—Yubj„)�”}”(hŒ)``int dd_size`` private driver data size ”h]”(jŠ)�”}”(hŒ``int dd_size``”h]”j�)�”}”(hjÙYh]”hŒ int dd_size”…”�”}”(hjÛYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj×Yubah}”(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ÓYubj¦)�”}”(hhh]”hÝ)�”}”(hŒprivate driver data size”h]”hŒprivate driver data size”…”�”}”(hjòYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jîYh´Mˆ hjïYubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjÓYubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jîYh´Mˆ hj—Yubj„)�”}”(hŒ``uint32_t conn_idx`` cid”h]”(jŠ)�”}”(hŒ``uint32_t conn_idx``”h]”j�)�”}”(hjZh]”hŒuint32_t conn_idx”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjZubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´MŠ hj Zubj¦)�”}”(hhh]”hÝ)�”}”(hŒcid”h]”hŒcid”…”�”}”(hj+Zh²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(Zubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj Zubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j'Zh´MŠ hj—Yubeh}”(h]”h ]”h"]”h$]”h&]”uh1j~hj{Yubeh}”(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”…”�”}”(hjlZh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjhZh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/target:34: ./drivers/scsi/libiscsi.c”h´MÎ ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{Zh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjhZh²hh³jzZh´MÎ ubjr)�”}”(hŒiscsi_conn_teardown”h]”jx)�”}”(hŒiscsi_conn_teardown”h]”hŒiscsi_conn_teardown”…”�”}”(hj�Zh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj‰Zubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhjhZh²hh³jzZh´MÎ ubj“)�”}”(hŒ!(struct iscsi_cls_conn *cls_conn)”h]”j™)�”}”(hŒstruct iscsi_cls_conn *cls_conn”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hj©Zh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhj¥Zubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶Zh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj¥Zubh)�”}”(hhh]”jx)�”}”(hŒiscsi_cls_conn”h]”hŒiscsi_cls_conn”…”�”}”(hjÇZh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÄZubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jÉZŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×j�ZsbŒc.iscsi_conn_teardown”†”asbuh1hhj¥Zubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjçZh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj¥Zubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjõZh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj¥Zubjx)�”}”(hŒcls_conn”h]”hŒcls_conn”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj¥Zubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj¡Zubah}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hjhZh²hh³jzZh´MÎ ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hjdZh²hh³jzZh´MÎ ubah}”(h]”j_Zah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³jzZh´MÎ hjaZh²hubj8)�”}”(hhh]”hÝ)�”}”(hŒteardown iscsi connection”h]”hŒteardown iscsi connection”…”�”}”(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&]”uh1j7hjaZh²hh³jzZh´MÎ ubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYjD[jZjD[j[‰j\‰j]‰uh1j=h²hhj™,h³Nh´Nubj_)�”}”(hŒµ**Parameters** ``struct iscsi_cls_conn *cls_conn`` iscsi class connection **Description** TODO: we may need to make this into a two step process like scsi-mls remove + put host”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hjN[h]”hŒ Parameters”…”�”}”(hjP[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjL[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Ò hjH[ubj)�”}”(hhh]”j„)�”}”(hŒ;``struct iscsi_cls_conn *cls_conn`` iscsi class connection ”h]”(jŠ)�”}”(hŒ#``struct iscsi_cls_conn *cls_conn``”h]”j�)�”}”(hjm[h]”hŒstruct iscsi_cls_conn *cls_conn”…”�”}”(hjo[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjk[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Ï hjg[ubj¦)�”}”(hhh]”hÝ)�”}”(hŒiscsi class connection”h]”hŒiscsi class connection”…”�”}”(hj†[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j‚[h´MÏ hjƒ[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjg[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j‚[h´MÏ hjd[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjH[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Ñ hjH[ubhÝ)�”}”(hŒVTODO: we may need to make this into a two step process like scsi-mls remove + put host”h]”hŒVTODO: we may need to make this into a two step process like scsi-mls remove + put host”…”�”}”(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Ð hjH[ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hj™,h²hh³Nh´Nubeh}”(h]”Œiscsi-helper-functions”ah ]”h"]”Œiscsi helper functions”ah$]”h&]”uh1hµhh·h²hh³hÊh´K ubh¶)�”}”(hhh]”(h»)�”}”(hŒiSCSI boot information”h]”hŒiSCSI boot information”…”�”}”(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_boot_create_target (C function)”Œc.iscsi_boot_create_target”hNt”auh1j,hjÜ[h²hh³Nh´Nubj>)�”}”(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\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”…”�”}”(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׌iscsi_boot_create_target”sbŒc.iscsi_boot_create_target”†”asbuh1hhj\h²hh³j\h´M†ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjF\h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj\h²hh³j\h´M†ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjT\h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj\h²hh³j\h´M†ubjr)�”}”(hŒiscsi_boot_create_target”h]”jx)�”}”(hjC\h]”hŒiscsi_boot_create_target”…”�”}”(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³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á]”jA\Œc.iscsi_boot_create_target”†”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˜hjx\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˜hjx\ubj™)�”}”(hŒ void *data”h]”(jO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj%]h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj!]ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3]h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj!]ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjA]h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj!]ubjx)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjN]h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj!]ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjx\ubj™)�”}”(hŒ0ssize_t (*show)(void *data, int type, char *buf)”h]”(h)�”}”(hhh]”jx)�”}”(hŒssize_t”h]”hŒssize_t”…”�”}”(hjj]h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjg]ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jl]Œmodname”NŒ classname”NjÛjÞ)�”}”já]”jA\Œc.iscsi_boot_create_target”†”asbuh1hhjc]ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆ]h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjc]ubjø)�”}”(hŒ(”h]”hŒ(”…”�”}”(hj–]h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjc]ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj¤]h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjc]ubjx)�”}”(hŒshow”h]”hŒshow”…”�”}”(hj±]h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjc]ubjø)�”}”(hŒ)”h]”hŒ)”…”�”}”(hj¿]h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjc]ubjø)�”}”(hj˜]h]”hŒ(”…”�”}”(hjÍ]h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjc]ubjO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÚ]h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjc]ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjè]h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjc]ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjö]h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjc]ubjx)�”}”(hŒdata”h]”hŒdata”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjc]ubjø)�”}”(hŒ,”h]”hŒ,”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjc]ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjc]ubjO)�”}”(hŒint”h]”hŒint”…”�”}”(hj-^h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjc]ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;^h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjc]ubjx)�”}”(hŒtype”h]”hŒtype”…”�”}”(hjI^h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjc]ubjø)�”}”(hj^h]”hŒ,”…”�”}”(hjW^h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjc]ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjd^h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjc]ubjO)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjr^h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjc]ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€^h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjc]ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjŽ^h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjc]ubjx)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hj›^h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjc]ubjø)�”}”(hjÁ]h]”hŒ)”…”�”}”(hj©^h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjc]ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjx\ubj™)�”}”(hŒ+umode_t (*is_visible)(void *data, int type)”h]”(h)�”}”(hhh]”jx)�”}”(hŒumode_t”h]”hŒumode_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á]”jA\Œc.iscsi_boot_create_target”†”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½^ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjý^h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj½^ubjx)�”}”(hŒ is_visible”h]”hŒ is_visible”…”�”}”(hj _h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj½^ubjø)�”}”(hjÁ]h]”hŒ)”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj½^ubjø)�”}”(hj˜]h]”hŒ(”…”�”}”(hj%_h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj½^ubjO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj2_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Œ*”…”�”}”(hjN_h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj½^ubjx)�”}”(hŒdata”h]”hŒdata”…”�”}”(hj[_h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj½^ubjø)�”}”(hj^h]”hŒ,”…”�”}”(hji_h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj½^ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjv_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Œtype”h]”hŒtype”…”�”}”(hj _h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj½^ubjø)�”}”(hjÁ]h]”hŒ)”…”�”}”(hj®_h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj½^ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjx\ubj™)�”}”(hŒvoid (*release)(void *data)”h]”(jO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(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Â_ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjï_h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjÂ_ubjx)�”}”(hŒrelease”h]”hŒrelease”…”�”}”(hjü_h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÂ_ubjø)�”}”(hjÁ]h]”hŒ)”…”�”}”(hj `h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjÂ_ubjø)�”}”(hj˜]h]”hŒ(”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjÂ_ubjO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj$`h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjÂ_ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2`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Œdata”h]”hŒdata”…”�”}”(hjM`h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÂ_ubjø)�”}”(hjÁ]h]”hŒ)”…”�”}”(hj[`h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjÂ_ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjx\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 target sysfs dir”h]”hŒcreate boot target sysfs dir”…”�”}”(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†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_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)�”}”(hj¦`h]”hŒ Parameters”…”�”}”(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Šhj `ubj)�”}”(hhh]”(j„)�”}”(hŒ0``struct iscsi_boot_kset *boot_kset`` boot kset ”h]”(jŠ)�”}”(hŒ%``struct iscsi_boot_kset *boot_kset``”h]”j�)�”}”(hjÅ`h]”hŒ!struct iscsi_boot_kset *boot_kset”…”�”}”(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Œ 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¥hj¿`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jÚ`h´M‡hj¼`ubj„)�”}”(hŒ``int index`` the target id ”h]”(jŠ)�”}”(hŒ ``int index``”h]”j�)�”}”(hjþ`h]”hŒ int index”…”�”}”(hjah²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”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jah´Mˆhjaubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjø`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jah´Mˆhj¼`ubj„)�”}”(hŒ/``void *data`` driver specific data for target ”h]”(jŠ)�”}”(hŒ``void *data``”h]”j�)�”}”(hj7ah]”hŒ void *data”…”�”}”(hj9ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj5aubah}”(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‰hj1aubj¦)�”}”(hhh]”hÝ)�”}”(hŒdriver specific data for target”h]”hŒdriver specific data for target”…”�”}”(hjPah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jLah´M‰hjMaubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj1aubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jLah´M‰hj¼`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�)�”}”(hjpah]”hŒ1ssize_t (*show) (void *data, int type, char *buf)”…”�”}”(hjrah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjnaubah}”(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Šhjjaubj¦)�”}”(hhh]”hÝ)�”}”(hŒattr show function”h]”hŒattr show function”…”�”}”(hj‰ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j…ah´MŠhj†aubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjjaubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j…ah´MŠhj¼`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©ah]”hŒ,umode_t (*is_visible) (void *data, int type)”…”�”}”(hj«ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj§aubah}”(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£aubj¦)�”}”(hhh]”hÝ)�”}”(hŒattr visibility function”h]”hŒattr visibility function”…”�”}”(hjÂah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j¾ah´M‹hj¿aubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj£aubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j¾ah´M‹hj¼`ubj„)�”}”(hŒ2``void (*release) (void *data)`` release function ”h]”(jŠ)�”}”(hŒ ``void (*release) (void *data)``”h]”j�)�”}”(hjâah]”hŒvoid (*release) (void *data)”…”�”}”(hjäah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjàaubah}”(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Üaubj¦)�”}”(hhh]”hÝ)�”}”(hŒrelease function”h]”hŒrelease function”…”�”}”(hjûah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j÷ah´MŒhjøaubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjÜaubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j÷ah´MŒhj¼`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j~hj `ubhÝ)�”}”(hŒ**Note**”h]”ji)�”}”(hjbh]”hŒNote”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjbubah}”(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 `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.”…”�”}”(hj3bh²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 `ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hjÜ[h²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Ü[h²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”…”�”}”(hjbbh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhj^bh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´MŸubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjpbh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj^bh²hh³jobh´MŸubh)�”}”(hhh]”jx)�”}”(hŒiscsi_boot_kobj”h]”hŒiscsi_boot_kobj”…”�”}”(hj�bh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj~bubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jƒbŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j׌iscsi_boot_create_initiator”sbŒc.iscsi_boot_create_initiator”†”asbuh1hhj^bh²hh³jobh´MŸubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢bh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj^bh²hh³jobh´MŸubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj°bh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj^bh²hh³jobh´MŸubjr)�”}”(hŒiscsi_boot_create_initiator”h]”jx)�”}”(hjŸbh]”hŒiscsi_boot_create_initiator”…”�”}”(hjÁbh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj½bubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhj^bh²hh³jobh´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Übh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjØbubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjébh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjØbubh)�”}”(hhh]”jx)�”}”(hŒiscsi_boot_kset”h]”hŒiscsi_boot_kset”…”�”}”(hjúbh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj÷bubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jübŒmodname”NŒ classname”NjÛjÞ)�”}”já]”j�bŒc.iscsi_boot_create_initiator”†”asbuh1hhjØbubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjØbubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj&ch²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjØbubjx)�”}”(hŒ boot_kset”h]”hŒ boot_kset”…”�”}”(hj3ch²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjØbubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjÔbubj™)�”}”(hŒ int index”h]”(jO)�”}”(hŒint”h]”hŒint”…”�”}”(hjLch²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjHcubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZch²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjHcubjx)�”}”(hŒindex”h]”hŒindex”…”�”}”(hjhch²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjHcubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjÔbubj™)�”}”(hŒ void *data”h]”(jO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj�ch²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj}cubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�ch²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj}cubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj�ch²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj}cubjx)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjªch²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj}cubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjÔbubj™)�”}”(hŒ0ssize_t (*show)(void *data, int type, char *buf)”h]”(h)�”}”(hhh]”jx)�”}”(hŒssize_t”h]”hŒssize_t”…”�”}”(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�bŒc.iscsi_boot_create_initiator”†”asbuh1hhj¿cubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjäch²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj¿cubjø)�”}”(hj˜]h]”hŒ(”…”�”}”(hjòch²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj¿cubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjÿch²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj¿cubjx)�”}”(hŒshow”h]”hŒshow”…”�”}”(hj dh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj¿cubjø)�”}”(hjÁ]h]”hŒ)”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj¿cubjø)�”}”(hj˜]h]”hŒ(”…”�”}”(hj'dh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj¿cubjO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj4dh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj¿cubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBdh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj¿cubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjPdh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj¿cubjx)�”}”(hŒdata”h]”hŒdata”…”�”}”(hj]dh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj¿cubjø)�”}”(hj^h]”hŒ,”…”�”}”(hjkdh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj¿cubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxdh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj¿cubjO)�”}”(hŒint”h]”hŒint”…”�”}”(hj†dh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj¿cubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”dh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj¿cubjx)�”}”(hŒtype”h]”hŒtype”…”�”}”(hj¢dh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj¿cubjø)�”}”(hj^h]”hŒ,”…”�”}”(hj°dh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj¿cubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½dh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj¿cubjO)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjËdh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj¿cubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙdh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj¿cubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjçdh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj¿cubjx)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hjôdh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj¿cubjø)�”}”(hjÁ]h]”hŒ)”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj¿cubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjÔbubj™)�”}”(hŒ+umode_t (*is_visible)(void *data, int type)”h]”(h)�”}”(hhh]”jx)�”}”(hŒumode_t”h]”hŒumode_t”…”�”}”(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�bŒc.iscsi_boot_create_initiator”†”asbuh1hhjeubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;eh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjeubjø)�”}”(hj˜]h]”hŒ(”…”�”}”(hjIeh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjeubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjVeh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjeubjx)�”}”(hŒ is_visible”h]”hŒ is_visible”…”�”}”(hjceh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjeubjø)�”}”(hjÁ]h]”hŒ)”…”�”}”(hjqeh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjeubjø)�”}”(hj˜]h]”hŒ(”…”�”}”(hj~eh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjeubjO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj‹eh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjeubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™eh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjeubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj§eh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjeubjx)�”}”(hŒdata”h]”hŒdata”…”�”}”(hj´eh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjeubjø)�”}”(hj^h]”hŒ,”…”�”}”(hjÂeh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjeubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏeh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjeubjO)�”}”(hŒint”h]”hŒint”…”�”}”(hjÝeh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjeubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëeh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjeubjx)�”}”(hŒtype”h]”hŒtype”…”�”}”(hjùeh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjeubjø)�”}”(hjÁ]h]”hŒ)”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjeubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjÔbubj™)�”}”(hŒvoid (*release)(void *data)”h]”(jO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjfubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-fh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjfubjø)�”}”(hj˜]h]”hŒ(”…”�”}”(hj;fh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjfubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjHfh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjfubjx)�”}”(hŒrelease”h]”hŒrelease”…”�”}”(hjUfh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjfubjø)�”}”(hjÁ]h]”hŒ)”…”�”}”(hjcfh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjfubjø)�”}”(hj˜]h]”hŒ(”…”�”}”(hjpfh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjfubjO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj}fh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjfubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹fh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjfubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj™fh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjfubjx)�”}”(hŒdata”h]”hŒdata”…”�”}”(hj¦fh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjfubjø)�”}”(hjÁ]h]”hŒ)”…”�”}”(hj´fh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjfubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjÔbubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hj^bh²hh³jobh´MŸubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hjZbh²hh³jobh´MŸubah}”(h]”jUbah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³jobh´MŸhjWbh²hubj8)�”}”(hhh]”hÝ)�”}”(hŒcreate boot initiator sysfs dir”h]”hŒcreate boot initiator sysfs dir”…”�”}”(hjÝfh²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Úfh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hjWbh²hh³jobh´MŸubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYjõfjZjõfj[‰j\‰j]‰uh1j=h²hhjÜ[h³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ÿfh]”hŒ Parameters”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjýfubah}”(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ùfubj)�”}”(hhh]”(j„)�”}”(hŒ0``struct iscsi_boot_kset *boot_kset`` boot kset ”h]”(jŠ)�”}”(hŒ%``struct iscsi_boot_kset *boot_kset``”h]”j�)�”}”(hjgh]”hŒ!struct iscsi_boot_kset *boot_kset”…”�”}”(hj gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjgubah}”(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 hjgubj¦)�”}”(hhh]”hÝ)�”}”(hŒ boot kset”h]”hŒ boot kset”…”�”}”(hj7gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j3gh´M hj4gubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjgubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j3gh´M hjgubj„)�”}”(hŒ``int index`` the initiator id ”h]”(jŠ)�”}”(hŒ ``int index``”h]”j�)�”}”(hjWgh]”hŒ int index”…”�”}”(hjYgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjUgubah}”(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¡hjQgubj¦)�”}”(hhh]”hÝ)�”}”(hŒthe initiator id”h]”hŒthe initiator id”…”�”}”(hjpgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jlgh´M¡hjmgubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjQgubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jlgh´M¡hjgubj„)�”}”(hŒ$``void *data`` driver specific data ”h]”(jŠ)�”}”(hŒ``void *data``”h]”j�)�”}”(hj�gh]”hŒ void *data”…”�”}”(hj’gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjŽgubah}”(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Šgubj¦)�”}”(hhh]”hÝ)�”}”(hŒdriver specific data”h]”hŒdriver specific data”…”�”}”(hj©gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j¥gh´M¢hj¦gubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjŠgubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j¥gh´M¢hjgubj„)�”}”(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Égh]”hŒ1ssize_t (*show) (void *data, int type, char *buf)”…”�”}”(hjËgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÇgubah}”(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Ãgubj¦)�”}”(hhh]”hÝ)�”}”(hŒattr show function”h]”hŒattr show function”…”�”}”(hjâgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÞgh´M£hjßgubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjÃgubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jÞgh´M£hjgubj„)�”}”(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�)�”}”(hjhh]”hŒ,umode_t (*is_visible) (void *data, int type)”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjhubah}”(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ügubj¦)�”}”(hhh]”hÝ)�”}”(hŒattr visibility function”h]”hŒattr visibility function”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jhh´M¤hjhubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjügubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jhh´M¤hjgubj„)�”}”(hŒ2``void (*release) (void *data)`` release function ”h]”(jŠ)�”}”(hŒ ``void (*release) (void *data)``”h]”j�)�”}”(hj;hh]”hŒvoid (*release) (void *data)”…”�”}”(hj=hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj9hubah}”(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¥hj5hubj¦)�”}”(hhh]”hÝ)�”}”(hŒrelease function”h]”hŒrelease function”…”�”}”(hjThh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jPhh´M¥hjQhubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj5hubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jPhh´M¥hjgubeh}”(h]”h ]”h"]”h$]”h&]”uh1j~hjùfubhÝ)�”}”(hŒ**Note**”h]”ji)�”}”(hjvhh]”hŒNote”…”�”}”(hjxhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjthubah}”(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ùfubhÝ)�”}”(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Œhh²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ùfubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hjÜ[h²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Ü[h²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”…”�”}”(hj»hh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhj·hh²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Éhh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj·hh²hh³jÈhh´M¹ubh)�”}”(hhh]”jx)�”}”(hŒiscsi_boot_kobj”h]”hŒiscsi_boot_kobj”…”�”}”(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_boot_create_ethernet”sbŒc.iscsi_boot_create_ethernet”†”asbuh1hhj·hh²hh³jÈhh´M¹ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjûhh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj·hh²hh³jÈhh´M¹ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj ih²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj·hh²hh³jÈhh´M¹ubjr)�”}”(hŒiscsi_boot_create_ethernet”h]”jx)�”}”(hjøhh]”hŒiscsi_boot_create_ethernet”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjiubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhj·hh²hh³jÈhh´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”…”�”}”(hj5ih²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhj1iubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBih²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj1iubh)�”}”(hhh]”jx)�”}”(hŒiscsi_boot_kset”h]”hŒiscsi_boot_kset”…”�”}”(hjSih²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjPiubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jUiŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jöhŒc.iscsi_boot_create_ethernet”†”asbuh1hhj1iubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqih²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj1iubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj1iubjx)�”}”(hŒ boot_kset”h]”hŒ boot_kset”…”�”}”(hjŒih²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj1iubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj-iubj™)�”}”(hŒ int index”h]”(jO)�”}”(hŒint”h]”hŒint”…”�”}”(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Œindex”h]”hŒindex”…”�”}”(hjÁih²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj¡iubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj-iubj™)�”}”(hŒ 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Œ ”…”�”}”(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”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÖiubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj-iubj™)�”}”(hŒ0ssize_t (*show)(void *data, int type, char *buf)”h]”(h)�”}”(hhh]”jx)�”}”(hŒssize_t”h]”hŒssize_t”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j!jŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jöhŒc.iscsi_boot_create_ethernet”†”asbuh1hhjjubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=jh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjjubjø)�”}”(hj˜]h]”hŒ(”…”�”}”(hjKjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjjubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjXjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjjubjx)�”}”(hŒshow”h]”hŒshow”…”�”}”(hjejh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjjubjø)�”}”(hjÁ]h]”hŒ)”…”�”}”(hjsjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjjubjø)�”}”(hj˜]h]”hŒ(”…”�”}”(hj€jh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjjubjO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj�jh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjjubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›jh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjjubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj©jh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjjubjx)�”}”(hŒdata”h]”hŒdata”…”�”}”(hj¶jh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjjubjø)�”}”(hj^h]”hŒ,”…”�”}”(hjÄjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjjubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑjh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjjubjO)�”}”(hŒint”h]”hŒint”…”�”}”(hjßjh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjjubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjíjh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjjubjx)�”}”(hŒtype”h]”hŒtype”…”�”}”(hjûjh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjjubjø)�”}”(hj^h]”hŒ,”…”�”}”(hj kh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjjubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjjubjO)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj$kh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjjubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2kh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjjubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj@kh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjjubjx)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hjMkh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjjubjø)�”}”(hjÁ]h]”hŒ)”…”�”}”(hj[kh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj-iubj™)�”}”(hŒ+umode_t (*is_visible)(void *data, int type)”h]”(h)�”}”(hhh]”jx)�”}”(hŒumode_t”h]”hŒumode_t”…”�”}”(hjvkh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjskubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jxkŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jöhŒc.iscsi_boot_create_ethernet”†”asbuh1hhjokubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”kh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjokubjø)�”}”(hj˜]h]”hŒ(”…”�”}”(hj¢kh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjokubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj¯kh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjokubjx)�”}”(hŒ is_visible”h]”hŒ is_visible”…”�”}”(hj¼kh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjokubjø)�”}”(hjÁ]h]”hŒ)”…”�”}”(hjÊkh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjokubjø)�”}”(hj˜]h]”hŒ(”…”�”}”(hj×kh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjokubjO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjäkh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjokubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjòkh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjokubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjokubjx)�”}”(hŒdata”h]”hŒdata”…”�”}”(hj lh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjokubjø)�”}”(hj^h]”hŒ,”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjokubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(lh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjokubjO)�”}”(hŒint”h]”hŒint”…”�”}”(hj6lh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjokubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDlh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjokubjx)�”}”(hŒtype”h]”hŒtype”…”�”}”(hjRlh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjokubjø)�”}”(hjÁ]h]”hŒ)”…”�”}”(hj`lh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjokubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj-iubj™)�”}”(hŒvoid (*release)(void *data)”h]”(jO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjxlh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjtlubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†lh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjtlubjø)�”}”(hj˜]h]”hŒ(”…”�”}”(hj”lh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjtlubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj¡lh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjtlubjx)�”}”(hŒrelease”h]”hŒrelease”…”�”}”(hj®lh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjtlubjø)�”}”(hjÁ]h]”hŒ)”…”�”}”(hj¼lh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjtlubjø)�”}”(hj˜]h]”hŒ(”…”�”}”(hjÉlh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjtlubjO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÖlh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjtlubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjälh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjtlubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjòlh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjtlubjx)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjÿlh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjtlubjø)�”}”(hjÁ]h]”hŒ)”…”�”}”(hj mh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjtlubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj-iubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hj·hh²hh³jÈhh´M¹ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hj³hh²hh³jÈhh´M¹ubah}”(h]”j®hah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³jÈhh´M¹hj°hh²hubj8)�”}”(hhh]”hÝ)�”}”(hŒcreate boot ethernet sysfs dir”h]”hŒcreate boot ethernet sysfs dir”…”�”}”(hj6mh²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¹hj3mh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj°hh²hh³jÈhh´M¹ubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYjNmjZjNmj[‰j\‰j]‰uh1j=h²hhjÜ[h³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)�”}”(hjXmh]”hŒ Parameters”…”�”}”(hjZmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjVmubah}”(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½hjRmubj)�”}”(hhh]”(j„)�”}”(hŒ0``struct iscsi_boot_kset *boot_kset`` boot kset ”h]”(jŠ)�”}”(hŒ%``struct iscsi_boot_kset *boot_kset``”h]”j�)�”}”(hjwmh]”hŒ!struct iscsi_boot_kset *boot_kset”…”�”}”(hjymh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjumubah}”(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ºhjqmubj¦)�”}”(hhh]”hÝ)�”}”(hŒ boot kset”h]”hŒ boot kset”…”�”}”(hj�mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jŒmh´Mºhj�mubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjqmubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jŒmh´Mºhjnmubj„)�”}”(hŒ%``int index`` the ethernet device id ”h]”(jŠ)�”}”(hŒ ``int index``”h]”j�)�”}”(hj°mh]”hŒ int index”…”�”}”(hj²mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj®mubah}”(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ªmubj¦)�”}”(hhh]”hÝ)�”}”(hŒthe ethernet device id”h]”hŒthe ethernet device id”…”�”}”(hjÉmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÅmh´M»hjÆmubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjªmubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jÅmh´M»hjnmubj„)�”}”(hŒ$``void *data`` driver specific data ”h]”(jŠ)�”}”(hŒ``void *data``”h]”j�)�”}”(hjémh]”hŒ void *data”…”�”}”(hjëmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjçmubah}”(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ãmubj¦)�”}”(hhh]”hÝ)�”}”(hŒdriver specific data”h]”hŒdriver specific data”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jþmh´M¼hjÿmubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjãmubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jþmh´M¼hjnmubj„)�”}”(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"nh]”hŒ1ssize_t (*show) (void *data, int type, char *buf)”…”�”}”(hj$nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj nubah}”(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½hjnubj¦)�”}”(hhh]”hÝ)�”}”(hŒattr show function”h]”hŒattr show function”…”�”}”(hj;nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j7nh´M½hj8nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjnubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j7nh´M½hjnmubj„)�”}”(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[nh]”hŒ,umode_t (*is_visible) (void *data, int type)”…”�”}”(hj]nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjYnubah}”(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¾hjUnubj¦)�”}”(hhh]”hÝ)�”}”(hŒattr visibility function”h]”hŒattr visibility function”…”�”}”(hjtnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jpnh´M¾hjqnubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjUnubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jpnh´M¾hjnmubj„)�”}”(hŒ2``void (*release) (void *data)`` release function ”h]”(jŠ)�”}”(hŒ ``void (*release) (void *data)``”h]”j�)�”}”(hj”nh]”hŒvoid (*release) (void *data)”…”�”}”(hj–nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj’nubah}”(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Žnubj¦)�”}”(hhh]”hÝ)�”}”(hŒrelease function”h]”hŒrelease function”…”�”}”(hj­nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j©nh´M¿hjªnubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjŽnubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j©nh´M¿hjnmubeh}”(h]”h ]”h"]”h$]”h&]”uh1j~hjRmubhÝ)�”}”(hŒ**Note**”h]”ji)�”}”(hjÏnh]”hŒNote”…”�”}”(hjÑnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjÍ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ÁhjRmubhÝ)�”}”(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ånh²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ÁhjRmubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hjÜ[h²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Ü[h²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”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjoh²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"oh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjoh²hh³j!oh´MÓubh)�”}”(hhh]”jx)�”}”(hŒiscsi_boot_kobj”h]”hŒiscsi_boot_kobj”…”�”}”(hj3oh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj0oubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j5oŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j׌iscsi_boot_create_acpitbl”sbŒc.iscsi_boot_create_acpitbl”†”asbuh1hhjoh²hh³j!oh´MÓubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjToh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjoh²hh³j!oh´MÓubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjboh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjoh²hh³j!oh´MÓubjr)�”}”(hŒiscsi_boot_create_acpitbl”h]”jx)�”}”(hjQoh]”hŒiscsi_boot_create_acpitbl”…”�”}”(hjsoh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjooubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhjoh²hh³j!oh´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Žoh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjŠoubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›oh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjŠoubh)�”}”(hhh]”jx)�”}”(hŒiscsi_boot_kset”h]”hŒiscsi_boot_kset”…”�”}”(hj¬oh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj©oubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”j®oŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jOoŒc.iscsi_boot_create_acpitbl”†”asbuh1hhjŠ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Œ boot_kset”h]”hŒ boot_kset”…”�”}”(hjåoh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjŠoubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj†oubj™)�”}”(hŒ int index”h]”(jO)�”}”(hŒint”h]”hŒint”…”�”}”(hjþoh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjúoubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ph²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjúoubjx)�”}”(hŒindex”h]”hŒindex”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjúoubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj†oubj™)�”}”(hŒ void *data”h]”(jO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj3ph²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhj/pubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjAph²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj/pubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjOph²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj/pubjx)�”}”(hŒdata”h]”hŒdata”…”�”}”(hj\ph²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj/pubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj†oubj™)�”}”(hŒ0ssize_t (*show)(void *data, int type, char *buf)”h]”(h)�”}”(hhh]”jx)�”}”(hŒssize_t”h]”hŒssize_t”…”�”}”(hjxph²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjupubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jzpŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jOoŒc.iscsi_boot_create_acpitbl”†”asbuh1hhjqpubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–ph²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjqpubjø)�”}”(hj˜]h]”hŒ(”…”�”}”(hj¤ph²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjqpubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj±ph²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjqpubjx)�”}”(hŒshow”h]”hŒshow”…”�”}”(hj¾ph²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjqpubjø)�”}”(hjÁ]h]”hŒ)”…”�”}”(hjÌph²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjqpubjø)�”}”(hj˜]h]”hŒ(”…”�”}”(hjÙph²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjqpubjO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjæph²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjqpubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjôph²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjqpubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjqpubjx)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjqpubjø)�”}”(hj^h]”hŒ,”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjqpubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*qh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjqpubjO)�”}”(hŒint”h]”hŒint”…”�”}”(hj8qh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjqpubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFqh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjqpubjx)�”}”(hŒtype”h]”hŒtype”…”�”}”(hjTqh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjqpubjø)�”}”(hj^h]”hŒ,”…”�”}”(hjbqh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjqpubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoqh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjqpubjO)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj}qh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjqpubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹qh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjqpubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj™qh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjqpubjx)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hj¦qh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjqpubjø)�”}”(hjÁ]h]”hŒ)”…”�”}”(hj´qh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjqpubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj†oubj™)�”}”(hŒ+umode_t (*is_visible)(void *data, int type)”h]”(h)�”}”(hhh]”jx)�”}”(hŒumode_t”h]”hŒumode_t”…”�”}”(hjÏqh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÌqubah}”(h•]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jÑqŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jOoŒc.iscsi_boot_create_acpitbl”†”asbuh1hhjÈqubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjíqh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjÈqubjø)�”}”(hj˜]h]”hŒ(”…”�”}”(hjûqh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjÈqubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjÈqubjx)�”}”(hŒ is_visible”h]”hŒ is_visible”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÈqubjø)�”}”(hjÁ]h]”hŒ)”…”�”}”(hj#rh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjÈqubjø)�”}”(hj˜]h]”hŒ(”…”�”}”(hj0rh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjÈqubjO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj=rh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjÈqubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKrh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjÈqubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjYrh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjÈqubjx)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjfrh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÈqubjø)�”}”(hj^h]”hŒ,”…”�”}”(hjtrh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjÈqubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�rh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjÈqubjO)�”}”(hŒint”h]”hŒint”…”�”}”(hj�rh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjÈqubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�rh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjÈqubjx)�”}”(hŒtype”h]”hŒtype”…”�”}”(hj«rh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÈqubjø)�”}”(hjÁ]h]”hŒ)”…”�”}”(hj¹rh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjÈqubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj†oubj™)�”}”(hŒvoid (*release)(void *data)”h]”(jO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÑrh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjÍrubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjßrh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjÍrubjø)�”}”(hj˜]h]”hŒ(”…”�”}”(hjírh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjÍrubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjúrh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjÍrubjx)�”}”(hŒrelease”h]”hŒrelease”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÍrubjø)�”}”(hjÁ]h]”hŒ)”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjÍrubjø)�”}”(hj˜]h]”hŒ(”…”�”}”(hj"sh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjÍrubjO)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj/sh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjÍrubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=sh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjÍrubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjKsh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjÍrubjx)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjXsh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÍrubjø)�”}”(hjÁ]h]”hŒ)”…”�”}”(hjfsh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjÍrubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj†oubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hjoh²hh³j!oh´MÓubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hj oh²hh³j!oh´MÓubah}”(h]”joah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³j!oh´MÓhj oh²hubj8)�”}”(hhh]”hÝ)�”}”(hŒ create boot acpi table sysfs dir”h]”hŒ create boot acpi table sysfs dir”…”�”}”(hj�sh²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Œsh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj oh²hh³j!oh´MÓubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYj§sjZj§sj[‰j\‰j]‰uh1j=h²hhjÜ[h³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)�”}”(hj±sh]”hŒ Parameters”…”�”}”(hj³sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj¯subah}”(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«subj)�”}”(hhh]”(j„)�”}”(hŒ0``struct iscsi_boot_kset *boot_kset`` boot kset ”h]”(jŠ)�”}”(hŒ%``struct iscsi_boot_kset *boot_kset``”h]”j�)�”}”(hjÐsh]”hŒ!struct iscsi_boot_kset *boot_kset”…”�”}”(hjÒsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÎsubah}”(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Êsubj¦)�”}”(hhh]”hÝ)�”}”(hŒ boot kset”h]”hŒ boot kset”…”�”}”(hjésh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jåsh´MÔhjæsubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjÊsubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jåsh´MÔhjÇsubj„)�”}”(hŒ``int index`` not used ”h]”(jŠ)�”}”(hŒ ``int index``”h]”j�)�”}”(hj th]”hŒ int index”…”�”}”(hj th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjtubah}”(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Õhjtubj¦)�”}”(hhh]”hÝ)�”}”(hŒnot used”h]”hŒnot used”…”�”}”(hj"th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jth´MÕhjtubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjtubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jth´MÕhjÇsubj„)�”}”(hŒ$``void *data`` driver specific data ”h]”(jŠ)�”}”(hŒ``void *data``”h]”j�)�”}”(hjBth]”hŒ void *data”…”�”}”(hjDth²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Öhjuh²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«subeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hjÜ[h²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Ü[h²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”…”�”}”(hjmuh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjiuh²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{uh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjiuh²hh³jzuh´Míubh)�”}”(hhh]”jx)�”}”(hŒiscsi_boot_kset”h]”hŒiscsi_boot_kset”…”�”}”(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ä)�”}”j׌iscsi_boot_create_kset”sbŒc.iscsi_boot_create_kset”†”asbuh1hhjiuh²hh³jzuh´Míubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­uh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjiuh²hh³jzuh´Míubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj»uh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjiuh²hh³jzuh´Míubjr)�”}”(hŒiscsi_boot_create_kset”h]”jx)�”}”(hjªuh]”hŒiscsi_boot_create_kset”…”�”}”(hjÌuh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÈuubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhjiuh²hh³jzuh´Míubj“)�”}”(hŒ(const char *set_name)”h]”j™)�”}”(hŒconst char *set_name”h]”(jŸ)�”}”(hj0Lh]”hŒconst”…”�”}”(hjçuh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjãuubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjôuh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjãuubjO)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjãuubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjãuubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjãuubjx)�”}”(hŒset_name”h]”hŒset_name”…”�”}”(hj+vh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjãuubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjßuubah}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hjiuh²hh³jzuh´Míubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hjeuh²hh³jzuh´Míubah}”(h]”j`uah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³jzuh´Míhjbuh²hubj8)�”}”(hhh]”hÝ)�”}”(hŒcreates root sysfs tree”h]”hŒcreates root sysfs tree”…”�”}”(hjUvh²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íhjRvh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hjbuh²hh³jzuh´Míubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYjmvjZjmvj[‰j\‰j]‰uh1j=h²hhjÜ[h³Nh´Nubj_)�”}”(hŒ;**Parameters** ``const char *set_name`` name of root dir”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hjwvh]”hŒ Parameters”…”�”}”(hjyvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjuvubah}”(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ñhjqvubj)�”}”(hhh]”j„)�”}”(hŒ)``const char *set_name`` name of root dir”h]”(jŠ)�”}”(hŒ``const char *set_name``”h]”j�)�”}”(hj–vh]”hŒconst char *set_name”…”�”}”(hj˜vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj”vubah}”(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�vubj¦)�”}”(hhh]”hÝ)�”}”(hŒname of root dir”h]”hŒname of root dir”…”�”}”(hj¯vh²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¬vubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj�vubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j«vh´Móhj�vubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjqvubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hjÜ[h²hh³Nh´Nubj-)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j9Œ(iscsi_boot_create_host_kset (C function)”Œc.iscsi_boot_create_host_kset”hNt”auh1j,hjÜ[h²hh³Nh´Nubj>)�”}”(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ðvh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjìvh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´Mubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþvh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjìvh²hh³jývh´Mubh)�”}”(hhh]”jx)�”}”(hŒiscsi_boot_kset”h]”hŒiscsi_boot_kset”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj wubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jwŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j׌iscsi_boot_create_host_kset”sbŒc.iscsi_boot_create_host_kset”†”asbuh1hhjìvh²hh³jývh´Mubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0wh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjìvh²hh³jývh´Mubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj>wh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjìvh²hh³jývh´Mubjr)�”}”(hŒiscsi_boot_create_host_kset”h]”jx)�”}”(hj-wh]”hŒiscsi_boot_create_host_kset”…”�”}”(hjOwh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjKwubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhjìvh²hh³jývh´Mubj“)�”}”(hŒ(unsigned int hostno)”h]”j™)�”}”(hŒunsigned int hostno”h]”(jO)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjjwh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjfwubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxwh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjfwubjO)�”}”(hŒint”h]”hŒint”…”�”}”(hj†wh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjfwubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”wh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjfwubjx)�”}”(hŒhostno”h]”hŒhostno”…”�”}”(hj¢wh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjfwubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjbwubah}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hjìvh²hh³jývh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hjèvh²hh³jývh´Mubah}”(h]”jãvah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³jývh´Mhjåvh²hubj8)�”}”(hhh]”hÝ)�”}”(hŒ'creates root sysfs tree for a scsi host”h]”hŒ'creates root sysfs tree for a scsi host”…”�”}”(hjÌwh²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Éwh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hjåvh²hh³jývh´Mubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYjäwjZjäwj[‰j\‰j]‰uh1j=h²hhjÜ[h³Nh´Nubj_)�”}”(hŒB**Parameters** ``unsigned int hostno`` host number of scsi host”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hjîwh]”hŒ Parameters”…”�”}”(hjðwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjìwubah}”(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èwubj)�”}”(hhh]”j„)�”}”(hŒ0``unsigned int hostno`` host number of scsi host”h]”(jŠ)�”}”(hŒ``unsigned int hostno``”h]”j�)�”}”(hj xh]”hŒunsigned int hostno”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj xubah}”(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 hjxubj¦)�”}”(hhh]”hÝ)�”}”(hŒhost number of scsi host”h]”hŒhost number of scsi host”…”�”}”(hj&xh²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#xubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjxubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j"xh´M hjxubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjèwubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hjÜ[h²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Ü[h²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”…”�”}”(hjgxh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjcxh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/target:41: ./drivers/scsi/iscsi_boot_sysfs.c”h´Mubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvxh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjcxh²hh³juxh´Mubjr)�”}”(hŒiscsi_boot_destroy_kset”h]”jx)�”}”(hŒiscsi_boot_destroy_kset”h]”hŒiscsi_boot_destroy_kset”…”�”}”(hjˆxh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj„xubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhjcxh²hh³juxh´Mubj“)�”}”(hŒ#(struct iscsi_boot_kset *boot_kset)”h]”j™)�”}”(hŒ!struct iscsi_boot_kset *boot_kset”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hj¤xh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhj xubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±xh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj xubh)�”}”(hhh]”jx)�”}”(hŒiscsi_boot_kset”h]”hŒiscsi_boot_kset”…”�”}”(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×jŠxsbŒc.iscsi_boot_destroy_kset”†”asbuh1hhj xubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâxh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj xubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjðxh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj xubjx)�”}”(hŒ boot_kset”h]”hŒ boot_kset”…”�”}”(hjýxh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj xubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjœxubah}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hjcxh²hh³juxh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hj_xh²hh³juxh´Mubah}”(h]”jZxah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³juxh´Mhj\xh²hubj8)�”}”(hhh]”hÝ)�”}”(hŒ"destroy kset and kobjects under it”h]”hŒ"destroy kset and kobjects under it”…”�”}”(hj'yh²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$yh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj\xh²hh³juxh´Mubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYj?yjZj?yj[‰j\‰j]‰uh1j=h²hhjÜ[h³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)�”}”(hjIyh]”hŒ Parameters”…”�”}”(hjKyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjGyubah}”(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´MhjCyubj)�”}”(hhh]”j„)�”}”(hŒ0``struct iscsi_boot_kset *boot_kset`` boot kset ”h]”(jŠ)�”}”(hŒ%``struct iscsi_boot_kset *boot_kset``”h]”j�)�”}”(hjhyh]”hŒ!struct iscsi_boot_kset *boot_kset”…”�”}”(hjjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjfyubah}”(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´Mhjbyubj¦)�”}”(hhh]”hÝ)�”}”(hŒ boot kset”h]”hŒ boot kset”…”�”}”(hj�yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j}yh´Mhj~yubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjbyubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j}yh´Mhj_yubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjCyubhÝ)�”}”(hŒ**Description**”h]”ji)�”}”(hj£yh]”hŒ Description”…”�”}”(hj¥yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj¡yubah}”(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´MhjCyubhÝ)�”}”(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.”…”�”}”(hj¹yh²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´MhjCyubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hjÜ[h²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Úyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj×yh²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×yh²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”…”�”}”(hjzh²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´KNubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjýyh²hh³jzh´KNubjr)�”}”(hŒiscsi_sw_tcp_recv”h]”jx)�”}”(hŒiscsi_sw_tcp_recv”h]”hŒiscsi_sw_tcp_recv”…”�”}”(hj"zh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjzubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhjýyh²hh³jzh´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”…”�”}”(hjAzh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj>zubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jCzŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×j$zsbŒc.iscsi_sw_tcp_recv”†”asbuh1hhj:zubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjazh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj:zubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjozh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj:zubjx)�”}”(hŒrd_desc”h]”hŒrd_desc”…”�”}”(hj|zh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj:zubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj6zubj™)�”}”(hŒstruct sk_buff *skb”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hj•zh²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhj‘zubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢zh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj‘zubh)�”}”(hhh]”jx)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj³zh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj°zubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jµzŒmodname”NŒ classname”NjÛjÞ)�”}”já]”j]zŒc.iscsi_sw_tcp_recv”†”asbuh1hhj‘zubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑzh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj‘zubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjßzh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj‘zubjx)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjìzh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj‘zubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj6zubj™)�”}”(hŒunsigned int offset”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Œoffset”h]”hŒoffset”…”�”}”(hj={h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj{ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj6zubj™)�”}”(hŒ size_t len”h]”(h)�”}”(hhh]”jx)�”}”(hŒsize_t”h]”hŒsize_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á]”j]zŒc.iscsi_sw_tcp_recv”†”asbuh1hhjR{ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjw{h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjR{ubjx)�”}”(hŒlen”h]”hŒlen”…”�”}”(hj…{h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjR{ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hj6zubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘uh1j’hjýyh²hh³jzh´KNubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hjùyh²hh³jzh´KNubah}”(h]”jôyah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³jzh´KNhjöyh²hubj8)�”}”(hhh]”hÝ)�”}”(hŒTCP receive in sendfile fashion”h]”hŒTCP receive in sendfile fashion”…”�”}”(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´KNhj¬{h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hjöyh²hh³jzh´KNubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYjÇ{jZjÇ{j[‰j\‰j]‰uh1j=h²hhj×yh³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Ñ{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´KRhjË{ubj)�”}”(hhh]”(j„)�”}”(hŒ/``read_descriptor_t *rd_desc`` read descriptor ”h]”(jŠ)�”}”(hŒ``read_descriptor_t *rd_desc``”h]”j�)�”}”(hjð{h]”hŒread_descriptor_t *rd_desc”…”�”}”(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´KOhjê{ubj¦)�”}”(hhh]”hÝ)�”}”(hŒread descriptor”h]”hŒread descriptor”…”�”}”(hj |h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j|h´KOhj|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjê{ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j|h´KOhjç{ubj„)�”}”(hŒ&``struct sk_buff *skb`` socket buffer ”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³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/target:47: ./drivers/scsi/iscsi_tcp.c”h´KPhj#|ubj¦)�”}”(hhh]”hÝ)�”}”(hŒ socket buffer”h]”hŒ socket buffer”…”�”}”(hjB|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j>|h´KPhj?|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj#|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j>|h´KPhjç{ubj„)�”}”(hŒ&``unsigned int offset`` offset in skb ”h]”(jŠ)�”}”(hŒ``unsigned int offset``”h]”j�)�”}”(hjb|h]”hŒunsigned int offset”…”�”}”(hjd|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´KQhj\|ubj¦)�”}”(hhh]”hÝ)�”}”(hŒ offset in skb”h]”hŒ offset in skb”…”�”}”(hj{|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jw|h´KQhjx|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj\|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jw|h´KQhjç{ubj„)�”}”(hŒ ``size_t len`` skb->len - offset”h]”(jŠ)�”}”(hŒ``size_t len``”h]”j�)�”}”(hj›|h]”hŒ size_t len”…”�”}”(hj�|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj™|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/target:47: ./drivers/scsi/iscsi_tcp.c”h´KShj•|ubj¦)�”}”(hhh]”hÝ)�”}”(hŒskb->len - offset”h]”hŒskb->len - offset”…”�”}”(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´KRhj±|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj•|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j°|h´KShjç{ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j~hjË{ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hj×yh²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×yh²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õ|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´Kjubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjñ|h²hh³j}h´Kjubjr)�”}”(hŒiscsi_sw_sk_state_check”h]”jx)�”}”(hŒiscsi_sw_sk_state_check”h]”hŒiscsi_sw_sk_state_check”…”�”}”(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´Kjubj“)�”}”(hŒ(struct sock *sk)”h]”j™)�”}”(hŒstruct sock *sk”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hj2}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Œsock”h]”hŒsock”…”�”}”(hjP}h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjM}ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jR}Œmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×j}sbŒc.iscsi_sw_sk_state_check”†”asbuh1hhj.}ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjp}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Œsk”h]”hŒsk”…”�”}”(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´Kjubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hjí|h²hh³j}h´Kjubah}”(h]”jè|ah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³j}h´Kjhjê|h²hubj8)�”}”(hhh]”hÝ)�”}”(hŒcheck socket state”h]”hŒcheck socket state”…”�”}”(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´Kjhj²}h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hjê|h²hh³j}h´Kjubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYjÍ}jZjÍ}j[‰j\‰j]‰uh1j=h²hhj×yh³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×}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´KnhjÑ}ubj)�”}”(hhh]”j„)�”}”(hŒ``struct sock *sk`` socket ”h]”(jŠ)�”}”(hŒ``struct sock *sk``”h]”j�)�”}”(hjö}h]”hŒstruct sock *sk”…”�”}”(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´Kkhjð}ubj¦)�”}”(hhh]”hÝ)�”}”(hŒsocket”h]”hŒsocket”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j ~h´Kkhj ~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjð}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j ~h´Kkhjí}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÑ}ubhÝ)�”}”(hŒ**Description**”h]”ji)�”}”(hj1~h]”hŒ Description”…”�”}”(hj3~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´KmhjÑ}ubhÝ)�”}”(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.”…”�”}”(hjG~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´KlhjÑ}ubhÝ)�”}”(hŒ%Must be called with sk_callback_lock.”h]”hŒ%Must be called with sk_callback_lock.”…”�”}”(hjV~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Ñ}ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hj×yh²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×yh²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”…”�”}”(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´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_sw_tcp_write_space”h]”jx)�”}”(hŒiscsi_sw_tcp_write_space”h]”hŒiscsi_sw_tcp_write_space”…”�”}”(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 sock *sk)”h]”j™)�”}”(hŒstruct sock *sk”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Œ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”†”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Œsk”h]”hŒsk”…”�”}”(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’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]”jx~ah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³j“~h´KÙhjz~h²hubj8)�”}”(hhh]”hÝ)�”}”(hŒ1Called when more output buffer space is available”h]”hŒ1Called when more output buffer space is available”…”�”}”(hjEh²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ÙhjBh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hjz~h²hh³j“~h´KÙubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYj]jZj]j[‰j\‰j]‰uh1j=h²hhj×yh³Nh´Nubj_)�”}”(hŒC**Parameters** ``struct sock *sk`` socket space is available for”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hjgh]”hŒ Parameters”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjeubah}”(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Ýhjaubj)�”}”(hhh]”j„)�”}”(hŒ1``struct sock *sk`` socket space is available for”h]”(jŠ)�”}”(hŒ``struct sock *sk``”h]”j�)�”}”(hj†h]”hŒstruct sock *sk”…”�”}”(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´Kßhj€ubj¦)�”}”(hhh]”hÝ)�”}”(hŒsocket space is available for”h]”hŒsocket space is available for”…”�”}”(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œubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j›h´Kßhj}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjaubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hj×yh²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×yh²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&]”uh1jwhj8€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Œ*”…”�”}”(hji€h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj€ubjx)�”}”(hŒtcp_conn”h]”hŒtcp_conn”…”�”}”(hjv€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”…”�”}”(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_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”j¯€Œmodname”NŒ classname”NjÛjÞ)�”}”já]”jW€Œ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×yh³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)�”}”(hj2�h]”hŒ Parameters”…”�”}”(hj4�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhj0�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�)�”}”(hjQ�h]”hŒstruct iscsi_tcp_conn *tcp_conn”…”�”}”(hjS�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjO�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/target:47: ./drivers/scsi/iscsi_tcp.c”h´MhjK�ubj¦)�”}”(hhh]”hÝ)�”}”(hŒthe iSCSI TCP connection”h]”hŒthe iSCSI TCP connection”…”�”}”(hjj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jf�h´Mhjg�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjK�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jf�h´MhjH�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´Mhj„�ubj¦)�”}”(hhh]”hÝ)�”}”(hŒthe buffer to transmnit”h]”hŒthe buffer to transmnit”…”�”}”(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´MhjH�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³Œ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×yh²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×yh²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&]”uh1jwhj6‚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”…”�”}”(hjV‚h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjR‚ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjc‚h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjR‚ubh)�”}”(hhh]”jx)�”}”(hŒ iscsi_conn”h]”hŒ iscsi_conn”…”�”}”(hjt‚h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjq‚ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jv‚Œmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×j<‚sbŒc.iscsi_sw_tcp_xmit”†”asbuh1hhjR‚ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”‚h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjR‚ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hj¢‚h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjR‚ubjx)�”}”(hŒconn”h]”hŒconn”…”�”}”(hj¯‚h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjR‚ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj�j‘uh1j˜hjN‚ubah}”(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×yh³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”…”�”}”(hj3ƒ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´MThj0ƒ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×yh²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×yh²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”…”�”}”(hjtƒh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjpƒh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/target:47: ./drivers/scsi/iscsi_tcp.c”h´M†ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒƒh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjpƒh²hh³j‚ƒh´M†ubjr)�”}”(hŒiscsi_sw_tcp_xmit_qlen”h]”jx)�”}”(hŒiscsi_sw_tcp_xmit_qlen”h]”hŒiscsi_sw_tcp_xmit_qlen”…”�”}”(hj•ƒh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj‘ƒubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhjpƒ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_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’hjpƒh²hh³j‚ƒh´M†ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hjlƒh²hh³j‚ƒh´M†ubah}”(h]”jgƒah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³j‚ƒh´M†hjiƒh²hubj8)�”}”(hhh]”hÝ)�”}”(hŒ*return the number of bytes queued for xmit”h]”hŒ*return the number of bytes queued for xmit”…”�”}”(hj4„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†hj1„h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hjiƒh²hh³j‚ƒh´M†ubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYjL„jZjL„j[‰j\‰j]‰uh1j=h²hhj×yh³Nh´Nubj_)�”}”(hŒ>**Parameters** ``struct iscsi_conn *conn`` iscsi connection”h]”(hÝ)�”}”(hŒ**Parameters**”h]”ji)�”}”(hjV„h]”hŒ Parameters”…”�”}”(hjX„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjT„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ŠhjP„ubj)�”}”(hhh]”j„)�”}”(hŒ,``struct iscsi_conn *conn`` iscsi connection”h]”(jŠ)�”}”(hŒ``struct iscsi_conn *conn``”h]”j�)�”}”(hju„h]”hŒstruct iscsi_conn *conn”…”�”}”(hjw„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjs„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‰h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/target:47: ./drivers/scsi/iscsi_tcp.c”h´MŒhjo„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´M‡hj‹„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjo„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jŠ„h´MŒhjl„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjP„ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hj×yh²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×yh²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Œ ”…”�”}”(hjJ…h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj…ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjX…h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hj…ubjx)�”}”(hŒtcp_conn”h]”hŒtcp_conn”…”�”}”(hje…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”…”�”}”(hj~…h²hh³Nh´Nubah}”(h]”h ]”j«ah"]”h$]”h&]”uh1jžhjz…ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹…h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjz…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”jž…Œmodname”NŒ classname”NjÛjÞ)�”}”já]”jF…Œc.iscsi_tcp_segment_done”†”asbuh1hhjz…ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjº…h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjz…ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjÈ…h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjz…ubjx)�”}”(hŒsegment”h]”hŒsegment”…”�”}”(hjÕ…h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjz…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Œ ”…”�”}”(hj1†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+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Œ%check whether the segment is complete”h]”hŒ%check whether the segment is complete”…”�”}”(hji†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¯hjf†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×yh³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³hj…†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°hj¤†ubj¦)�”}”(hhh]”hÝ)�”}”(hŒiscsi tcp connection”h]”hŒiscsi tcp connection”…”�”}”(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Œ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±hj¡†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”…”�”}”(hj5‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j1‡h´K²hj2‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j1‡h´K²hj¡†ubj„)�”}”(hŒ+``unsigned copied`` number of bytes copied ”h]”(jŠ)�”}”(hŒ``unsigned copied``”h]”j�)�”}”(hjU‡h]”hŒunsigned copied”…”�”}”(hjW‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjS‡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³hjO‡ubj¦)�”}”(hhh]”hÝ)�”}”(hŒnumber of bytes copied”h]”hŒnumber of bytes copied”…”�”}”(hjn‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jj‡h´K³hjk‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjO‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jj‡h´K³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³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/target:50: ./drivers/scsi/libiscsi_tcp.c”h´Kµhj…†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.”…”�”}”(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…†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.”…”�”}”(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…†ubhÝ)�”}”(hŒ!This function must be re-entrant.”h]”hŒ!This function must be re-entrant.”…”�”}”(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…†ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hj×yh²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×yh²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”…”�”}”(hj0ˆ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”…”�”}”(hjNˆh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjKˆubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jPˆŒmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×jˆsbŒc.iscsi_tcp_hdr_recv_prep”†”asbuh1hhj,ˆubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnˆ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”…”�”}”(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×yh³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”…”�”}”(hj1‰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.”…”�”}”(hjE‰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×yh²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×yh²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”…”�”}”(hjt‰h²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjp‰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`hjp‰h²hh³j‚‰h´M¶ubjr)�”}”(hŒiscsi_tcp_cleanup_task”h]”jx)�”}”(hŒiscsi_tcp_cleanup_task”h]”hŒiscsi_tcp_cleanup_task”…”�”}”(hj•‰h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj‘‰ubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhjp‰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ω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_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’hjp‰h²hh³j‚‰h´M¶ubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hjl‰h²hh³j‚‰h´M¶ubah}”(h]”jg‰ah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³j‚‰h´M¶hji‰h²hubj8)�”}”(hhh]”hÝ)�”}”(hŒfree tcp_task resources”h]”hŒfree tcp_task resources”…”�”}”(hj4Š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¶hj1Šh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hji‰h²hh³j‚‰h´M¶ubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYjLŠjZjLŠj[‰j\‰j]‰uh1j=h²hhj×yh³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)�”}”(hjVŠh]”hŒ Parameters”…”�”}”(hjXŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhjTŠ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ºhjPŠubj)�”}”(hhh]”j„)�”}”(hŒ'``struct iscsi_task *task`` iscsi task ”h]”(jŠ)�”}”(hŒ``struct iscsi_task *task``”h]”j�)�”}”(hjuŠh]”hŒstruct iscsi_task *task”…”�”}”(hjwŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjsŠ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·hjoŠubj¦)�”}”(hhh]”hÝ)�”}”(hŒ iscsi task”h]”hŒ iscsi task”…”�”}”(hjŽŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jŠŠh´M·hj‹Šubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjoŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jŠŠh´M·hjlŠubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjPŠ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¹hjPŠubhÝ)�”}”(hŒ%must be called with session back_lock”h]”hŒ%must be called with session back_lock”…”�”}”(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¸hjPŠubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hj×yh²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×yh²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´Mrubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjñŠh²hh³j‹h´Mrubjr)�”}”(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´Mrubj“)�”}”(hŒ!(struct iscsi_tcp_conn *tcp_conn)”h]”j™)�”}”(hŒstruct iscsi_tcp_conn *tcp_conn”h]”(jŸ)�”}”(hj¢h]”hŒstruct”…”�”}”(hj2‹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”…”�”}”(hjP‹h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjM‹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jR‹Œmodname”NŒ classname”NjÛjÞ)�”}”já]”jä)�”}”j×j‹sbŒc.iscsi_tcp_recv_segment_is_hdr”†”asbuh1hhj.‹ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjp‹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´Mrubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hjíŠh²hh³j‹h´Mrubah}”(h]”jèŠah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³j‹h´MrhjêŠh²hubj8)�”}”(hhh]”hÝ)�”}”(hŒ#tests if we are reading in a header”h]”hŒ#tests if we are reading in 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²‹h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hjêŠh²hh³j‹h´Mrubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYjÍ‹jZjÍ‹j[‰j\‰j]‰uh1j=h²hhj×yh³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´MvhjÑ‹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´Mshjð‹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´Mshj Œubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjð‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j Œh´Mshjí‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j~hjÑ‹ubhÝ)�”}”(hŒ**Description**”h]”ji)�”}”(hj1Œh]”hŒ Description”…”�”}”(hj3Œ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´MuhjÑ‹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.”…”�”}”(hjGŒ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´MthjÑ‹ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j^hj×yh²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×yh²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”…”�”}”(hjvŒh²hh³Nh´Nubah}”(h]”h ]”j[ah"]”h$]”h&]”uh1jNhjrŒh²hh³Œ]/var/lib/git/docbuild/linux/Documentation/driver-api/target:50: ./drivers/scsi/libiscsi_tcp.c”h´Mubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…Œh²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hjrŒh²hh³j„Œh´Mubjr)�”}”(hŒiscsi_tcp_recv_skb”h]”jx)�”}”(hŒiscsi_tcp_recv_skb”h]”hŒiscsi_tcp_recv_skb”…”�”}”(hj—Œh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj“Œubah}”(h]”h ]”(j‹jŒeh"]”h$]”h&]”j�j‘uh1jqhjrŒh²hh³j„Œh´Mubj“)�”}”(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”…”�”}”(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_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Œ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«Œ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Œ ”…”�”}”(hj2�h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj!�ubh)�”}”(hhh]”jx)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjC�h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj@�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÕŒreftype”j׌ reftarget”jE�Œmodname”NŒ classname”NjÛjÞ)�”}”já]”j파c.iscsi_tcp_recv_skb”†”asbuh1hhj!�ubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hja�h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj!�ubjø)�”}”(hjûh]”hŒ*”…”�”}”(hjo�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”…”�”}”(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Œoffset”h]”hŒoffset”…”�”}”(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Œ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Œ*”…”�”}”(hj6Žh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1j÷hjŽubjx)�”}”(hŒstatus”h]”hŒstatus”…”�”}”(hjCŽ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’hjrŒh²hh³j„Œh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hjnŒh²hh³j„Œh´Mubah}”(h]”jiŒah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³j„Œh´MhjkŒh²hubj8)�”}”(hhh]”hÝ)�”}”(hŒ Process skb”h]”hŒ Process skb”…”�”}”(hjmŽ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´MhjjŽh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hjkŒh²hh³j„Œh´Mubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYj…ŽjZj…Žj[‰j\‰j]‰uh1j=h²hhj×yh³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)�”}”(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_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³Œ]/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”…”�”}”(hjÇŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jÃŽh´M€hjÄŽubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj¨Žubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jÃŽh´M€hj¥Žubj„)�”}”(hŒG``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´M�hjáŽ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´M�hjýŽubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjáŽubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jüŽh´M�hj¥Žubj„)�”}”(hŒ&``unsigned int 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”…”�”}”(hj9�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j5�h´M‚hj6�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j5�h´M‚hj¥Žubj„)�”}”(hŒ=``bool offloaded`` bool indicating if transfer was offloaded ”h]”(jŠ)�”}”(hŒ``bool offloaded``”h]”j�)�”}”(hjY�h]”hŒbool offloaded”…”�”}”(hj[�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjW�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ƒhjS�ubj¦)�”}”(hhh]”hÝ)�”}”(hŒ)bool indicating if transfer was offloaded”h]”hŒ)bool indicating if transfer was offloaded”…”�”}”(hjr�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jn�h´Mƒhjo�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjS�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³jn�h´Mƒhj¥Žubj„)�”}”(hŒ(``int *status`` iscsi TCP status result ”h]”(jŠ)�”}”(hŒ``int *status``”h]”j�)�”}”(hj’�h]”hŒ int *status”…”�”}”(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 TCP status result”h]”hŒiscsi TCP status result”…”�”}”(hj«�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³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³Œ]/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×yh²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×yh²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Œ ”…”�”}”(hj3�h²hh³Nh´Nubah}”(h]”h ]”jmah"]”h$]”h&]”uh1j`hj �h²hh³j2�h´MÒubjr)�”}”(hŒiscsi_tcp_task_init”h]”jx)�”}”(hŒiscsi_tcp_task_init”h]”hŒiscsi_tcp_task_init”…”�”}”(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 iscsi_task *task)”h]”j™)�”}”(hŒstruct iscsi_task *task”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Œ 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×jG�sbŒc.iscsi_tcp_task_init”†”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˜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Œ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³j2�h´MÒubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYjü�jZjü�j[‰j\‰j]‰uh1j=h²hhj×yh³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×yh²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×yh²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”…”�”}”(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´Mubja)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽ‘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”…”�”}”(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_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_tcp_task_xmit”†”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³j�‘h´Mubeh}”(h]”h ]”h"]”h$]”h&]”j�j‘j)ˆuh1jHj*j+hjw‘h²hh³j�‘h´Mubah}”(h]”jr‘ah ]”(j/j0eh"]”h$]”h&]”j4ˆj5)j6huh1jBh³j�‘h´Mhjt‘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&]”uh1j7hjt‘h²hh³j�‘h´Mubeh}”(h]”h ]”(jÕŒfunction”eh"]”h$]”h&]”jXjÕjYjW’jZjW’j[‰j\‰j]‰uh1j=h²hhj×yh³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)�”}”(hja’h]”hŒ Parameters”…”�”}”(hjc’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�)�”}”(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´Mhjz’ubj¦)�”}”(hhh]”hÝ)�”}”(hŒiscsi command task”h]”hŒiscsi command task”…”�”}”(hj™’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j•’h´Mhj–’ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¥hjz’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jƒh³j•’h´Mhjw’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´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×yh²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Ù[jÖ[jÔyjÑyjì’jé’uŒ nametypes”}”(jô’‰hñ‰j‰j¡+‰j–,‰j,‰jŽ,‰jÙ[‰jÔy‰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Ö[j™,j¶,j»,j¤/j©/jÎ1jÓ1j 5j5jþ7j8jº;j¿;j¯>j´>j0@j5@j±Aj¶Aj2Cj7Cj�Dj’Dj{Fj€FjüGjHj}Ij‚Ij§Kj¬KjZNj_NjHPjMPj$Uj)UjVj„VjÚWjßWj_ZjdZjÑyjÜ[jù[jþ[jUbjZbj®hj³hjoj oj`ujeujãvjèvjZxj_xjé’j×yjôyjùyjè|jí|jx~j}~jÓjØj ‚j‚jgƒjlƒj„jÇ„jæ‡jë‡jg‰jl‰jèŠjíŠjiŒjnŒj�j�jr‘jw‘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.