€•Œ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/scsi”Œ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/scsi”Œ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/scsi”Œ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/scsi”Œ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/scsi”Œ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/scsi”Œ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/scsi”Œ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ŒSCSI Interfaces Guide”h]”hŒSCSI Interfaces Guide”…”�”}”(hh¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhh·h²hh³Œ=/var/lib/git/docbuild/linux/Documentation/driver-api/scsi.rst”h´KubhŒ field_list”“”)�”}”(hhh]”(hŒfield”“”)�”}”(hhh]”(hŒ field_name”“”)�”}”(hŒAuthor”h]”hŒAuthor”…”�”}”(hh×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÕhhÒh³hÊh´KubhŒ field_body”“”)�”}”(hŒJames Bottomley”h]”hŒ paragraph”“”)�”}”(hhéh]”hŒJames Bottomley”…”�”}”(hhíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Khhçubah}”(h]”h ]”h"]”h$]”h&]”uh1håhhÒubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÐh³hÊh´KhhÍh²hubhÑ)�”}”(hhh]”(hÖ)�”}”(hŒAuthor”h]”hŒAuthor”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÕhjh³hÊh´Kubhæ)�”}”(hŒ Rob Landley ”h]”hì)�”}”(hŒ Rob Landley”h]”hŒ Rob Landley”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Khjubah}”(h]”h ]”h"]”h$]”h&]”uh1håhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÐh³hÊh´KhhÍh²hubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËhh·h²hh³hÊh´Kubh¶)�”}”(hhh]”(h»)�”}”(hŒ Introduction”h]”hŒ Introduction”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj;h²hh³hÊh´K ubh¶)�”}”(hhh]”(h»)�”}”(hŒProtocol vs bus”h]”hŒProtocol vs bus”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjLh²hh³hÊh´K ubhì)�”}”(hXOnce upon a time, the Small Computer Systems Interface defined both a parallel I/O bus and a data protocol to connect a wide variety of peripherals (disk drives, tape drives, modems, printers, scanners, optical drives, test equipment, and medical devices) to a host computer.”h]”hXOnce upon a time, the Small Computer Systems Interface defined both a parallel I/O bus and a data protocol to connect a wide variety of peripherals (disk drives, tape drives, modems, printers, scanners, optical drives, test equipment, and medical devices) to a host computer.”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KhjLh²hubhì)�”}”(hŒÄAlthough the old parallel (fast/wide/ultra) SCSI bus has largely fallen out of use, the SCSI command set is more widely used than ever to communicate with devices over a number of different buses.”h]”hŒÄAlthough the old parallel (fast/wide/ultra) SCSI bus has largely fallen out of use, the SCSI command set is more widely used than ever to communicate with devices over a number of different buses.”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KhjLh²hubhì)�”}”(hŒÇThe `SCSI protocol `__ is a big-endian peer-to-peer packet based protocol. SCSI commands are 6, 10, 12, or 16 bytes long, often followed by an associated data payload.”h]”(hŒThe ”…”�”}”(hjyh²hh³Nh´NubhŒ reference”“”)�”}”(hŒ2`SCSI protocol `__”h]”hŒ SCSI protocol”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ SCSI protocol”Œrefuri”Œhttps://www.t10.org/scsi-3.htm”uh1j�hjyubhŒ‘ is a big-endian peer-to-peer packet based protocol. SCSI commands are 6, 10, 12, or 16 bytes long, often followed by an associated data payload.”…”�”}”(hjyh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KhjLh²hubhì)�”}”(hXvSCSI commands can be transported over just about any kind of bus, and are the default protocol for storage devices attached to USB, SATA, SAS, Fibre Channel, FireWire, and ATAPI devices. SCSI packets are also commonly exchanged over Infiniband, TCP/IP (`iSCSI `__), even `Parallel ports `__.”h]”(hŒýSCSI commands can be transported over just about any kind of bus, and are the default protocol for storage devices attached to USB, SATA, SAS, Fibre Channel, FireWire, and ATAPI devices. SCSI packets are also commonly exchanged over Infiniband, TCP/IP (”…”�”}”(hjŸh²hh³Nh´Nubj‚)�”}”(hŒ/`iSCSI `__”h]”hŒiSCSI”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒiSCSI”j“Œ#https://en.wikipedia.org/wiki/ISCSI”uh1j�hjŸubhŒ), even ”…”�”}”(hjŸh²hh³Nh´Nubj‚)�”}”(hŒA`Parallel ports `__”h]”hŒParallel ports”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒParallel ports”j“Œ,http://cyberelk.net/tim/parport/parscsi.html”uh1j�hjŸubhŒ.”…”�”}”(hjŸh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KhjLh²hubeh}”(h]”Œprotocol-vs-bus”ah ]”h"]”Œprotocol vs bus”ah$]”h&]”uh1hµhj;h²hh³hÊh´K ubh¶)�”}”(hhh]”(h»)�”}”(hŒ"Design of the Linux SCSI subsystem”h]”hŒ"Design of the Linux SCSI subsystem”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjßh²hh³hÊh´K#ubhì)�”}”(hXThe SCSI subsystem uses a three layer design, with upper, mid, and low layers. Every operation involving the SCSI subsystem (such as reading a sector from a disk) uses one driver at each of the 3 levels: one upper layer driver, one lower layer driver, and the SCSI midlayer.”h]”hXThe SCSI subsystem uses a three layer design, with upper, mid, and low layers. Every operation involving the SCSI subsystem (such as reading a sector from a disk) uses one driver at each of the 3 levels: one upper layer driver, one lower layer driver, and the SCSI midlayer.”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K%hjßh²hubhì)�”}”(hŒÒThe SCSI upper layer provides the interface between userspace and the kernel, in the form of block and char device nodes for I/O and ioctl(). The SCSI lower layer contains drivers for specific hardware devices.”h]”hŒÒThe SCSI upper layer provides the interface between userspace and the kernel, in the form of block and char device nodes for I/O and ioctl(). The SCSI lower layer contains drivers for specific hardware devices.”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K*hjßh²hubhì)�”}”(hXaIn between is the SCSI mid-layer, analogous to a network routing layer such as the IPv4 stack. The SCSI mid-layer routes a packet based data protocol between the upper layer's /dev nodes and the corresponding devices in the lower layer. It manages command queues, provides error handling and power management functions, and responds to ioctl() requests.”h]”hXcIn between is the SCSI mid-layer, analogous to a network routing layer such as the IPv4 stack. The SCSI mid-layer routes a packet based data protocol between the upper layer’s /dev nodes and the corresponding devices in the lower layer. It manages command queues, provides error handling and power management functions, and responds to ioctl() requests.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K.hjßh²hubeh}”(h]”Œ"design-of-the-linux-scsi-subsystem”ah ]”h"]”Œ"design of the linux scsi subsystem”ah$]”h&]”uh1hµhj;h²hh³hÊh´K#ubeh}”(h]”Œ introduction”ah ]”h"]”Œ introduction”ah$]”h&]”uh1hµhh·h²hh³hÊh´K ubh¶)�”}”(hhh]”(h»)�”}”(hŒSCSI upper layer”h]”hŒSCSI upper layer”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj*h²hh³hÊh´K6ubhì)�”}”(hŒMThe upper layer supports the user-kernel interface by providing device nodes.”h]”hŒMThe upper layer supports the user-kernel interface by providing device nodes.”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K8hj*h²hubh¶)�”}”(hhh]”(h»)�”}”(hŒsd (SCSI Disk)”h]”hŒsd (SCSI Disk)”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjIh²hh³hÊh´KhjIh²hubeh}”(h]”Œ sd-scsi-disk”ah ]”h"]”Œsd (scsi disk)”ah$]”h&]”uh1hµhj*h²hh³hÊh´Kh´M°ubah}”(h]”jah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j>h´M°hjh²hubjÁ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjh²hh³j>h´M°ubeh}”(h]”h ]”(jÝŒmacro”eh"]”h$]”h&]”jâjÝjãjWjäjWjå‰jæ‰jç‰uh1jXh²hhj6h³Nh´Nubhì)�”}”(hŒ'``shost_for_each_device (sdev, shost)``”h]”jH)�”}”(hj]h]”hŒ#shost_for_each_device (sdev, shost)”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:93: ./include/scsi/scsi_device.h”h´M²hj6h²hubhŒ block_quote”“”)�”}”(hŒ#iterate over all devices of a host ”h]”hì)�”}”(hŒ"iterate over all devices of a host”h]”hŒ"iterate over all devices of a host”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:93: ./include/scsi/scsi_device.h”h´M°hjuubah}”(h]”h ]”h"]”h$]”h&]”uh1jsh³j‡h´M°hj6h²hubjé)�”}”(hX{**Parameters** ``sdev`` the :c:type:`struct scsi_device ` to use as a cursor ``shost`` the :c:type:`struct scsi_host ` to iterate over **Description** Iterator that returns each device attached to **shost**. This loop takes a reference on each device and releases it at the end. If you break out of the loop, you must call scsi_device_put(sdev).”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj”h]”hŒ Parameters”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:93: ./include/scsi/scsi_device.h”h´M´hjŽubj7)�”}”(hhh]”(j<)�”}”(hŒK``sdev`` the :c:type:`struct scsi_device ` to use as a cursor ”h]”(jB)�”}”(hŒ``sdev``”h]”jH)�”}”(hj³h]”hŒsdev”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:93: ./include/scsi/scsi_device.h”h´M±hj­ubj^)�”}”(hhh]”hì)�”}”(hŒAthe :c:type:`struct scsi_device ` to use as a cursor”h]”(hŒthe ”…”�”}”(hjÌh²hh³Nh´Nubh)�”}”(hŒ*:c:type:`struct scsi_device `”h]”jH)�”}”(hjÖh]”hŒstruct scsi_device”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”(Œxref”jÝŒc-type”eh"]”h$]”h&]”uh1jGhjÔubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œdriver-api/scsi”Œ refdomain”jÝŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰Œ c:parent_key”Œsphinx.domains.c”Œ LookupKey”“”)�”}”Œdata”]”sbŒ reftarget”Œ scsi_device”uh1hh³jÈh´M±hjÌubhŒ to use as a cursor”…”�”}”(hjÌh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÈh´M±hjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jÈh´M±hjªubj<)�”}”(hŒE``shost`` the :c:type:`struct scsi_host ` to iterate over ”h]”(jB)�”}”(hŒ ``shost``”h]”jH)�”}”(hjh]”hŒshost”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:93: ./include/scsi/scsi_device.h”h´M²hjubj^)�”}”(hhh]”hì)�”}”(hŒ:the :c:type:`struct scsi_host ` to iterate over”h]”(hŒthe ”…”�”}”(hj3h²hh³Nh´Nubh)�”}”(hŒ&:c:type:`struct scsi_host `”h]”jH)�”}”(hj=h]”hŒstruct scsi_host”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”(jâjÝŒc-type”eh"]”h$]”h&]”uh1jGhj;ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jîŒ refdomain”jÝŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jôjøjüŒ scsi_host”uh1hh³j/h´M²hj3ubhŒ to iterate over”…”�”}”(hj3h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j/h´M²hj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j/h´M²hjªubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjŽubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjxh]”hŒ Description”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjvubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:93: ./include/scsi/scsi_device.h”h´M´hjŽubhì)�”}”(hŒÄIterator that returns each device attached to **shost**. This loop takes a reference on each device and releases it at the end. If you break out of the loop, you must call scsi_device_put(sdev).”h]”(hŒ.Iterator that returns each device attached to ”…”�”}”(hjŽh²hh³Nh´Nubjó)�”}”(hŒ **shost**”h]”hŒshost”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjŽubhŒ�. This loop takes a reference on each device and releases it at the end. If you break out of the loop, you must call scsi_device_put(sdev).”…”�”}”(hjŽh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:93: ./include/scsi/scsi_device.h”h´M³hjŽubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj6h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ!__shost_for_each_device (C macro)”Œc.__shost_for_each_device”hNt”auh1jGhj6h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ__shost_for_each_device”h]”jd)�”}”(hŒ__shost_for_each_device”h]”j�)�”}”(hŒ__shost_for_each_device”h]”j“)�”}”(hjÉh]”hŒ__shost_for_each_device”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÏubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjËh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:93: ./include/scsi/scsi_device.h”h´M¾ubah}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjÇh²hh³jæh´M¾ubah}”(h]”jÂah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jæh´M¾hjÄh²hubjÁ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjÄh²hh³jæh´M¾ubeh}”(h]”h ]”(jÝŒmacro”eh"]”h$]”h&]”jâjÝjãjÿjäjÿjå‰jæ‰jç‰uh1jXh²hhj6h³Nh´Nubhì)�”}”(hŒ)``__shost_for_each_device (sdev, shost)``”h]”jH)�”}”(hjh]”hŒ%__shost_for_each_device (sdev, shost)”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:93: ./include/scsi/scsi_device.h”h´MÀhj6h²hubjt)�”}”(hŒ.iterate over all devices of a host (UNLOCKED) ”h]”hì)�”}”(hŒ-iterate over all devices of a host (UNLOCKED)”h]”hŒ-iterate over all devices of a host (UNLOCKED)”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:93: ./include/scsi/scsi_device.h”h´M¾hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jsh³j-h´M¾hj6h²hubjé)�”}”(hX**Parameters** ``sdev`` the :c:type:`struct scsi_device ` to use as a cursor ``shost`` the :c:type:`struct scsi_host ` to iterate over **Description** Iterator that returns each device attached to **shost**. It does _not_ take a reference on the scsi_device, so the whole loop must be protected by shost->host_lock. **Note** The only reason to use this is because you need to access the device list in interrupt context. Otherwise you really want to use shost_for_each_device instead.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj:h]”hŒ Parameters”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:93: ./include/scsi/scsi_device.h”h´MÂhj4ubj7)�”}”(hhh]”(j<)�”}”(hŒK``sdev`` the :c:type:`struct scsi_device ` to use as a cursor ”h]”(jB)�”}”(hŒ``sdev``”h]”jH)�”}”(hjYh]”hŒsdev”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjWubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:93: ./include/scsi/scsi_device.h”h´M¿hjSubj^)�”}”(hhh]”hì)�”}”(hŒAthe :c:type:`struct scsi_device ` to use as a cursor”h]”(hŒthe ”…”�”}”(hjrh²hh³Nh´Nubh)�”}”(hŒ*:c:type:`struct scsi_device `”h]”jH)�”}”(hj|h]”hŒstruct scsi_device”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”(jâjÝŒc-type”eh"]”h$]”h&]”uh1jGhjzubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jîŒ refdomain”jÝŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jôjøjüŒ scsi_device”uh1hh³jnh´M¿hjrubhŒ to use as a cursor”…”�”}”(hjrh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jnh´M¿hjoubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjSubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jnh´M¿hjPubj<)�”}”(hŒE``shost`` the :c:type:`struct scsi_host ` to iterate over ”h]”(jB)�”}”(hŒ ``shost``”h]”jH)�”}”(hjµh]”hŒshost”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:93: ./include/scsi/scsi_device.h”h´MÀhj¯ubj^)�”}”(hhh]”hì)�”}”(hŒ:the :c:type:`struct scsi_host ` to iterate over”h]”(hŒthe ”…”�”}”(hjÎh²hh³Nh´Nubh)�”}”(hŒ&:c:type:`struct scsi_host `”h]”jH)�”}”(hjØh]”hŒstruct scsi_host”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”(jâjÝŒc-type”eh"]”h$]”h&]”uh1jGhjÖubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jîŒ refdomain”jÝŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jôjøjüŒ scsi_host”uh1hh³jÊh´MÀhjÎubhŒ to iterate over”…”�”}”(hjÎh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÊh´MÀhjËubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jÊh´MÀhjPubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hj4ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjh]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:93: ./include/scsi/scsi_device.h”h´MÂhj4ubhì)�”}”(hŒ¥Iterator that returns each device attached to **shost**. It does _not_ take a reference on the scsi_device, so the whole loop must be protected by shost->host_lock.”h]”(hŒ.Iterator that returns each device attached to ”…”�”}”(hj)h²hh³Nh´Nubjó)�”}”(hŒ **shost**”h]”hŒshost”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj)ubhŒn. It does _not_ take a reference on the scsi_device, so the whole loop must be protected by shost->host_lock.”…”�”}”(hj)h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:93: ./include/scsi/scsi_device.h”h´MÁhj4ubhì)�”}”(hŒ**Note**”h]”jó)�”}”(hjLh]”hŒNote”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjJubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:93: ./include/scsi/scsi_device.h”h´MÅhj4ubhì)�”}”(hŒ The only reason to use this is because you need to access the device list in interrupt context. Otherwise you really want to use shost_for_each_device instead.”h]”hŒ The only reason to use this is because you need to access the device list in interrupt context. Otherwise you really want to use shost_for_each_device instead.”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:93: ./include/scsi/scsi_device.h”h´MÆhj4ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj6h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ&scsi_device_is_pseudo_dev (C function)”Œc.scsi_device_is_pseudo_dev”hNt”auh1jGhj6h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ9bool scsi_device_is_pseudo_dev (struct scsi_device *sdev)”h]”jd)�”}”(hŒ8bool scsi_device_is_pseudo_dev(struct scsi_device *sdev)”h]”(hŒdesc_sig_keyword_type”“”)�”}”(hŒbool”h]”hŒbool”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”Œkt”ah"]”h$]”h&]”uh1j‘hj�h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:93: ./include/scsi/scsi_device.h”h´M\ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj�h²hh³j¢h´M\ubj�)�”}”(hŒscsi_device_is_pseudo_dev”h]”j“)�”}”(hŒscsi_device_is_pseudo_dev”h]”hŒscsi_device_is_pseudo_dev”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj±ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj�h²hh³j¢h´M\ubhŒdesc_parameterlist”“”)�”}”(hŒ(struct scsi_device *sdev)”h]”hŒdesc_parameter”“”)�”}”(hŒstruct scsi_device *sdev”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjÑubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÑubh)�”}”(hhh]”j“)�”}”(hŒ scsi_device”h]”hŒ scsi_device”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjðubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”Œ identifier”Œ reftarget”jõŒmodname”NŒ classname”Njôj÷)�”}”jú]”jõŒ ASTIdentifier”“”)�”}”j j·sbŒc.scsi_device_is_pseudo_dev”†”asbuh1hhjÑubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÑubhŒdesc_sig_punctuation”“”)�”}”(hŒ*”h]”hŒ*”…”�”}”(hj& h²hh³Nh´Nubah}”(h]”h ]”Œp”ah"]”h$]”h&]”uh1j$ hjÑubj“)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hj5 h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÑ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²ˆuh1jcj³j´hj‰h²hh³j¢h´M\ubah}”(h]”j„ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j¢h´M\hj†h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ)Whether a device is a pseudo SCSI device.”h]”hŒ)Whether a device is a pseudo SCSI device.”…”�”}”(hj_ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:93: ./include/scsi/scsi_device.h”h´M\hj\ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj†h²hh³j¢h´M\ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjw jäjw jå‰jæ‰jç‰uh1jXh²hhj6h³Nh´Nubjé)�”}”(hXµ**Parameters** ``struct scsi_device *sdev`` SCSI device to examine **Description** A pseudo SCSI device can be used to allocate SCSI commands but does not show up in sysfs. Additionally, the logical unit information in ***sdev** is made up. This function tests the LUN number instead of comparing **sdev** with **sdev->host->pseudo_sdev** because this function may be called before **sdev->host->pseudo_sdev** has been initialized.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj� h]”hŒ Parameters”…”�”}”(hjƒ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:93: ./include/scsi/scsi_device.h”h´M`hj{ ubj7)�”}”(hhh]”j<)�”}”(hŒ4``struct scsi_device *sdev`` SCSI device to examine ”h]”(jB)�”}”(hŒ``struct scsi_device *sdev``”h]”jH)�”}”(hj  h]”hŒstruct scsi_device *sdev”…”�”}”(hj¢ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjž ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:93: ./include/scsi/scsi_device.h”h´M]hjš ubj^)�”}”(hhh]”hì)�”}”(hŒSCSI device to examine”h]”hŒSCSI device to examine”…”�”}”(hj¹ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³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&]”uh1j6hj{ ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjÛ h]”hŒ Description”…”�”}”(hjÝ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÙ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:93: ./include/scsi/scsi_device.h”h´M_hj{ ubhì)�”}”(hŒ�A pseudo SCSI device can be used to allocate SCSI commands but does not show up in sysfs. Additionally, the logical unit information in ***sdev** is made up.”h]”(hŒˆA pseudo SCSI device can be used to allocate SCSI commands but does not show up in sysfs. Additionally, the logical unit information in ”…”�”}”(hjñ h²hh³Nh´Nubjó)�”}”(hŒ ***sdev**”h]”hŒ*sdev”…”�”}”(hjù h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjñ ubhŒ is made up.”…”�”}”(hjñ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:93: ./include/scsi/scsi_device.h”h´M^hj{ ubhì)�”}”(hŒ¾This function tests the LUN number instead of comparing **sdev** with **sdev->host->pseudo_sdev** because this function may be called before **sdev->host->pseudo_sdev** has been initialized.”h]”(hŒ8This function tests the LUN number instead of comparing ”…”�”}”(hj h²hh³Nh´Nubjó)�”}”(hŒ**sdev**”h]”hŒsdev”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj ubhŒ with ”…”�”}”(hj h²hh³Nh´Nubjó)�”}”(hŒ**sdev->host->pseudo_sdev**”h]”hŒsdev->host->pseudo_sdev”…”�”}”(hj, h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj ubhŒ, because this function may be called before ”…”�”}”(hj h²hh³Nh´Nubjó)�”}”(hŒ**sdev->host->pseudo_sdev**”h]”hŒsdev->host->pseudo_sdev”…”�”}”(hj> h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj ubhŒ has been initialized.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:93: ./include/scsi/scsi_device.h”h´Mahj{ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj6h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ%scsi_device_supports_vpd (C function)”Œc.scsi_device_supports_vpd”hNt”auh1jGhj6h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ7int scsi_device_supports_vpd (struct scsi_device *sdev)”h]”jd)�”}”(hŒ6int scsi_device_supports_vpd(struct scsi_device *sdev)”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hjw h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjs h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:93: ./include/scsi/scsi_device.h”h´Mµubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj† h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjs h²hh³j… h´Mµubj�)�”}”(hŒscsi_device_supports_vpd”h]”j“)�”}”(hŒscsi_device_supports_vpd”h]”hŒscsi_device_supports_vpd”…”�”}”(hj˜ h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj” ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjs h²hh³j… h´MµubjÊ)�”}”(hŒ(struct scsi_device *sdev)”h]”jÐ)�”}”(hŒstruct scsi_device *sdev”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj´ h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj° ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁ h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj° ubh)�”}”(hhh]”j“)�”}”(hŒ scsi_device”h]”hŒ scsi_device”…”�”}”(hjÒ h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÏ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jÔ Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jš sbŒc.scsi_device_supports_vpd”†”asbuh1hhj° ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjò h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj° ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj° ubj“)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj° ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj¬ ubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjs h²hh³j… h´Mµubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjo h²hh³j… h´Mµubah}”(h]”jj ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j… h´Mµhjl h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ#test if a device supports VPD pages”h]”hŒ#test if a device supports VPD pages”…”�”}”(hj7 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:93: ./include/scsi/scsi_device.h”h´Mµhj4 h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjl h²hh³j… h´Mµubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjO jäjO jå‰jæ‰jç‰uh1jXh²hhj6h³Nh´Nubjé)�”}”(hX%**Parameters** ``struct scsi_device *sdev`` the :c:type:`struct scsi_device ` to test **Description** If the 'try_vpd_pages' flag is set it takes precedence. Otherwise we will assume VPD pages are supported if the SCSI level is at least SPC-3 and 'skip_vpd_pages' is not set.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjY h]”hŒ Parameters”…”�”}”(hj[ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjW ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:93: ./include/scsi/scsi_device.h”h´M¹hjS ubj7)�”}”(hhh]”j<)�”}”(hŒT``struct scsi_device *sdev`` the :c:type:`struct scsi_device ` to test ”h]”(jB)�”}”(hŒ``struct scsi_device *sdev``”h]”jH)�”}”(hjx h]”hŒstruct scsi_device *sdev”…”�”}”(hjz h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjv ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:93: ./include/scsi/scsi_device.h”h´M¶hjr ubj^)�”}”(hhh]”hì)�”}”(hŒ6the :c:type:`struct scsi_device ` to test”h]”(hŒthe ”…”�”}”(hj‘ h²hh³Nh´Nubh)�”}”(hŒ*:c:type:`struct scsi_device `”h]”jH)�”}”(hj› h]”hŒstruct scsi_device”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”(jâjÝŒc-type”eh"]”h$]”h&]”uh1jGhj™ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jîŒ refdomain”jÝŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jôjøjüŒ scsi_device”uh1hh³j� h´M¶hj‘ ubhŒ to test”…”�”}”(hj‘ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j� h´M¶hjŽ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjr ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j� h´M¶hjo ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjS ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjÖ h]”hŒ Description”…”�”}”(hjØ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÔ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:93: ./include/scsi/scsi_device.h”h´M¸hjS ubhì)�”}”(hŒ­If the 'try_vpd_pages' flag is set it takes precedence. Otherwise we will assume VPD pages are supported if the SCSI level is at least SPC-3 and 'skip_vpd_pages' is not set.”h]”hŒµIf the ‘try_vpd_pages’ flag is set it takes precedence. Otherwise we will assume VPD pages are supported if the SCSI level is at least SPC-3 and ‘skip_vpd_pages’ is not set.”…”�”}”(hjì h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:93: ./include/scsi/scsi_device.h”h´M·hjS ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj6h²hh³Nh´Nubeh}”(h]”Œinclude-scsi-scsi-device-h”ah ]”h"]”Œinclude/scsi/scsi_device.h”ah$]”h&]”uh1hµhj%h²hh³hÊh´K[ubh¶)�”}”(hhh]”(h»)�”}”(hŒdrivers/scsi/scsi.c”h]”hŒdrivers/scsi/scsi.c”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj h²hh³hÊh´Kaubhì)�”}”(hŒ Main file for the SCSI midlayer.”h]”hŒ Main file for the SCSI midlayer.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Kchj h²hubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ$scsi_change_queue_depth (C function)”Œc.scsi_change_queue_depth”hNt”auh1jGhj h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒAint scsi_change_queue_depth (struct scsi_device *sdev, int depth)”h]”jd)�”}”(hŒ@int scsi_change_queue_depth(struct scsi_device *sdev, int depth)”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hjB h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj> h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´KÓubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQ h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj> h²hh³jP h´KÓubj�)�”}”(hŒscsi_change_queue_depth”h]”j“)�”}”(hŒscsi_change_queue_depth”h]”hŒscsi_change_queue_depth”…”�”}”(hjc h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj_ ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj> h²hh³jP h´KÓubjÊ)�”}”(hŒ%(struct scsi_device *sdev, int depth)”h]”(jÐ)�”}”(hŒstruct scsi_device *sdev”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj{ ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒ h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj{ ubh)�”}”(hhh]”j“)�”}”(hŒ scsi_device”h]”hŒ scsi_device”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjš ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jŸ Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j je sbŒc.scsi_change_queue_depth”†”asbuh1hhj{ ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½ h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj{ ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjË h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj{ ubj“)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hjØ h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj{ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjw ubjÐ)�”}”(hŒ int depth”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hjñ h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjí ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿ h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjí ubj“)�”}”(hŒdepth”h]”hŒdepth”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjí ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjw ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhj> h²hh³jP h´KÓubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj: h²hh³jP h´KÓubah}”(h]”j5 ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jP h´KÓhj7 h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒchange a device's queue depth”h]”hŒchange a device’s queue depth”…”�”}”(hj7 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´KÓhj4 h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj7 h²hh³jP h´KÓubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjO jäjO jå‰jæ‰jç‰uh1jXh²hhj h³Nh´Nubjé)�”}”(hŒÖ**Parameters** ``struct scsi_device *sdev`` SCSI Device in question ``int depth`` number of commands allowed to be queued to the driver **Description** Sets the device queue depth and returns the new value.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjY h]”hŒ Parameters”…”�”}”(hj[ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjW ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´K×hjS ubj7)�”}”(hhh]”(j<)�”}”(hŒ5``struct scsi_device *sdev`` SCSI Device in question ”h]”(jB)�”}”(hŒ``struct scsi_device *sdev``”h]”jH)�”}”(hjx h]”hŒstruct scsi_device *sdev”…”�”}”(hjz h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjv ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´KÔhjr ubj^)�”}”(hhh]”hì)�”}”(hŒSCSI Device in question”h]”hŒSCSI Device in question”…”�”}”(hj‘ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j� h´KÔhjŽ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjr ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j� h´KÔhjo ubj<)�”}”(hŒD``int depth`` number of commands allowed to be queued to the driver ”h]”(jB)�”}”(hŒ ``int depth``”h]”jH)�”}”(hj± h]”hŒ int depth”…”�”}”(hj³ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj¯ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´KÕhj« ubj^)�”}”(hhh]”hì)�”}”(hŒ5number of commands allowed to be queued to the driver”h]”hŒ5number of commands allowed to be queued to the driver”…”�”}”(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Õhjo ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjS ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjì h]”hŒ Description”…”�”}”(hjî h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjê ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´K×hjS ubhì)�”}”(hŒ6Sets the device queue depth and returns the new value.”h]”hŒ6Sets the device queue depth and returns the new value.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´KÖhjS ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ"scsi_track_queue_full (C function)”Œc.scsi_track_queue_full”hNt”auh1jGhj h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ?int scsi_track_queue_full (struct scsi_device *sdev, int depth)”h]”jd)�”}”(hŒ>int scsi_track_queue_full(struct scsi_device *sdev, int depth)”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj-h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´Kïubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj-h²hh³j?h´Kïubj�)�”}”(hŒscsi_track_queue_full”h]”j“)�”}”(hŒscsi_track_queue_full”h]”hŒscsi_track_queue_full”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjNubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj-h²hh³j?h´KïubjÊ)�”}”(hŒ%(struct scsi_device *sdev, int depth)”h]”(jÐ)�”}”(hŒstruct scsi_device *sdev”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjjubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjjubh)�”}”(hhh]”j“)�”}”(hŒ scsi_device”h]”hŒ scsi_device”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj‰ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jŽŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jTsbŒc.scsi_track_queue_full”†”asbuh1hhjjubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjjubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjjubj“)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjfubjÐ)�”}”(hŒ int depth”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjÜubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÜubj“)�”}”(hŒdepth”h]”hŒdepth”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÜubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjfubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhj-h²hh³j?h´Kïubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj)h²hh³j?h´Kïubah}”(h]”j$ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j?h´Kïhj&h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ-track QUEUE_FULL events to adjust queue depth”h]”hŒ-track QUEUE_FULL events to adjust queue depth”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´Kïhj#h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj&h²hh³j?h´Kïubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj>jäj>jå‰jæ‰jç‰uh1jXh²hhj h³Nh´Nubjé)�”}”(hXé**Parameters** ``struct scsi_device *sdev`` SCSI Device in question ``int depth`` Current number of outstanding SCSI commands on this device, not counting the one returned as QUEUE_FULL. **Description** This function will track successive QUEUE_FULL events on a specific SCSI device to determine if and when there is a need to adjust the queue depth on the device. Lock Status: None held on entry **Return** * 0 - No change needed * >0 - Adjust queue depth to this new depth, * -1 - Drop back to untagged operation using host->cmd_per_lun as the untagged command depth **Notes** Low level drivers may call this at any time and we will do "The Right Thing." We are interrupt context safe.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjHh]”hŒ Parameters”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjFubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´KóhjBubj7)�”}”(hhh]”(j<)�”}”(hŒ5``struct scsi_device *sdev`` SCSI Device in question ”h]”(jB)�”}”(hŒ``struct scsi_device *sdev``”h]”jH)�”}”(hjgh]”hŒstruct scsi_device *sdev”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjeubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´Kðhjaubj^)�”}”(hhh]”hì)�”}”(hŒSCSI Device in question”h]”hŒSCSI Device in question”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j|h´Kðhj}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjaubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j|h´Kðhj^ubj<)�”}”(hŒw``int depth`` Current number of outstanding SCSI commands on this device, not counting the one returned as QUEUE_FULL. ”h]”(jB)�”}”(hŒ ``int depth``”h]”jH)�”}”(hj h]”hŒ int depth”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjžubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´Kòhjšubj^)�”}”(hhh]”hì)�”}”(hŒhCurrent number of outstanding SCSI commands on this device, not counting the one returned as QUEUE_FULL.”h]”hŒhCurrent number of outstanding SCSI commands on this device, not counting the one returned as QUEUE_FULL.”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´Kñhj¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjšubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jµh´Kòhj^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjBubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjÜh]”hŒ Description”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´KôhjBubj7)�”}”(hhh]”j<)�”}”(hŒ£This function will track successive QUEUE_FULL events on a specific SCSI device to determine if and when there is a need to adjust the queue depth on the device. ”h]”(jB)�”}”(hŒ:This function will track successive QUEUE_FULL events on a”h]”hŒ:This function will track successive QUEUE_FULL events on a”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´K÷hjõubj^)�”}”(hhh]”hì)�”}”(hŒfspecific SCSI device to determine if and when there is a need to adjust the queue depth on the device.”h]”hŒfspecific SCSI device to determine if and when there is a need to adjust the queue depth on the device.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´Kõhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjõubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jh´K÷hjòubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjBubhì)�”}”(hŒLock Status: None held on entry”h]”hŒLock Status: None held on entry”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´KùhjBubhì)�”}”(hŒ **Return**”h]”jó)�”}”(hj=h]”hŒReturn”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´KûhjBubhŒ bullet_list”“”)�”}”(hhh]”(hŒ list_item”“”)�”}”(hŒ0 - No change needed”h]”hì)�”}”(hj\h]”hŒ0 - No change needed”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´KøhjZubah}”(h]”h ]”h"]”h$]”h&]”uh1jXhjUubjY)�”}”(hŒ*>0 - Adjust queue depth to this new depth,”h]”hì)�”}”(hjth]”hŒ*>0 - Adjust queue depth to this new depth,”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´Kùhjrubah}”(h]”h ]”h"]”h$]”h&]”uh1jXhjUubjY)�”}”(hŒ[-1 - Drop back to untagged operation using host->cmd_per_lun as the untagged command depth ”h]”hì)�”}”(hŒZ-1 - Drop back to untagged operation using host->cmd_per_lun as the untagged command depth”h]”hŒZ-1 - Drop back to untagged operation using host->cmd_per_lun as the untagged command depth”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´KúhjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jXhjUubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”j( uh1jSh³jkh´KøhjBubhì)�”}”(hŒ **Notes**”h]”jó)�”}”(hj¬h]”hŒNotes”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjªubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´KýhjBubj7)�”}”(hhh]”j<)�”}”(hŒmLow level drivers may call this at any time and we will do "The Right Thing." We are interrupt context safe.”h]”(jB)�”}”(hŒ:Low level drivers may call this at any time and we will do”h]”hŒ:Low level drivers may call this at any time and we will do”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´MhjÅubj^)�”}”(hhh]”hì)�”}”(hŒ2"The Right Thing." We are interrupt context safe.”h]”hŒ6“The Right Thing.â€� We are interrupt context safe.”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´MhjØubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÅubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j×h´MhjÂubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjBubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_get_vpd_page (C function)”Œc.scsi_get_vpd_page”hNt”auh1jGhj h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒZint scsi_get_vpd_page (struct scsi_device *sdev, u8 page, unsigned char *buf, int buf_len)”h]”jd)�”}”(hŒYint scsi_get_vpd_page(struct scsi_device *sdev, u8 page, unsigned char *buf, int buf_len)”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjh²hh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´Mˆubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjh²hh³j*h´Mˆubj�)�”}”(hŒscsi_get_vpd_page”h]”j“)�”}”(hŒscsi_get_vpd_page”h]”hŒscsi_get_vpd_page”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj9ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjh²hh³j*h´MˆubjÊ)�”}”(hŒD(struct scsi_device *sdev, u8 page, unsigned char *buf, int buf_len)”h]”(jÐ)�”}”(hŒstruct scsi_device *sdev”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjUubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjUubh)�”}”(hhh]”j“)�”}”(hŒ scsi_device”h]”hŒ scsi_device”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjtubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jyŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j j?sbŒc.scsi_get_vpd_page”†”asbuh1hhjUubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjUubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjUubj“)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjUubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjQubjÐ)�”}”(hŒu8 page”h]”(h)�”}”(hhh]”j“)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjËubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jÐŒmodname”NŒ classname”Njôj÷)�”}”jú]”j“Œc.scsi_get_vpd_page”†”asbuh1hhjÇubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÇubj“)�”}”(hŒpage”h]”hŒpage”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÇubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjQubjÐ)�”}”(hŒunsigned char *buf”h]”(j’)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjubj’)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjubj“)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjQubjÐ)�”}”(hŒ int buf_len”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjmubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjmubj“)�”}”(hŒbuf_len”h]”hŒbuf_len”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjmubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjQubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjh²hh³j*h´Mˆubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjh²hh³j*h´Mˆubah}”(h]”jah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j*h´Mˆhjh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ)Get Vital Product Data from a SCSI device”h]”hŒ)Get Vital Product Data from a SCSI device”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´Mˆhj´h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjh²hh³j*h´Mˆubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjÏjäjÏjå‰jæ‰jç‰uh1jXh²hhj h³Nh´Nubjé)�”}”(hX;**Parameters** ``struct scsi_device *sdev`` The device to ask ``u8 page`` Which Vital Product Data to return ``unsigned char *buf`` where to store the VPD ``int buf_len`` number of bytes in the VPD buffer area **Description** SCSI devices may optionally supply Vital Product Data. Each 'page' of VPD is defined in the appropriate SCSI document (eg SPC, SBC). If the device supports this VPD page, this routine fills **buf** with the data from that page and return 0. If the VPD page is not supported or its content cannot be retrieved, -EINVAL is returned.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjÙh]”hŒ Parameters”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj×ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´MŒhjÓubj7)�”}”(hhh]”(j<)�”}”(hŒ/``struct scsi_device *sdev`` The device to ask ”h]”(jB)�”}”(hŒ``struct scsi_device *sdev``”h]”jH)�”}”(hjøh]”hŒstruct scsi_device *sdev”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjöubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´M‰hjòubj^)�”}”(hhh]”hì)�”}”(hŒThe device to ask”h]”hŒThe device to ask”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j h´M‰hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjòubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j h´M‰hjïubj<)�”}”(hŒ/``u8 page`` Which Vital Product Data to return ”h]”(jB)�”}”(hŒ ``u8 page``”h]”jH)�”}”(hj1h]”hŒu8 page”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´MŠhj+ubj^)�”}”(hhh]”hì)�”}”(hŒ"Which Vital Product Data to return”h]”hŒ"Which Vital Product Data to return”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jFh´MŠhjGubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jFh´MŠhjïubj<)�”}”(hŒ.``unsigned char *buf`` where to store the VPD ”h]”(jB)�”}”(hŒ``unsigned char *buf``”h]”jH)�”}”(hjjh]”hŒunsigned char *buf”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjhubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´M‹hjdubj^)�”}”(hhh]”hì)�”}”(hŒwhere to store the VPD”h]”hŒwhere to store the VPD”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jh´M‹hj€ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjdubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jh´M‹hjïubj<)�”}”(hŒ7``int buf_len`` number of bytes in the VPD buffer area ”h]”(jB)�”}”(hŒ``int buf_len``”h]”jH)�”}”(hj£h]”hŒ int buf_len”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´MŒhj�ubj^)�”}”(hhh]”hì)�”}”(hŒ&number of bytes in the VPD buffer area”h]”hŒ&number of bytes in the VPD buffer area”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³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&]”uh1j6hjÓubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjÞh]”hŒ Description”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÜubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´MŽhjÓubhì)�”}”(hXKSCSI devices may optionally supply Vital Product Data. Each 'page' of VPD is defined in the appropriate SCSI document (eg SPC, SBC). If the device supports this VPD page, this routine fills **buf** with the data from that page and return 0. If the VPD page is not supported or its content cannot be retrieved, -EINVAL is returned.”h]”(hŒÃSCSI devices may optionally supply Vital Product Data. Each ‘page’ of VPD is defined in the appropriate SCSI document (eg SPC, SBC). If the device supports this VPD page, this routine fills ”…”�”}”(hjôh²hh³Nh´Nubjó)�”}”(hŒ**buf**”h]”hŒbuf”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjôubhŒ… with the data from that page and return 0. If the VPD page is not supported or its content cannot be retrieved, -EINVAL is returned.”…”�”}”(hjôh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´M�hjÓubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jT•¬Œscsi_report_opcode (C function)”Œc.scsi_report_opcode”hNt”auh1jGhj h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒƒint scsi_report_opcode (struct scsi_device *sdev, unsigned char *buffer, unsigned int len, unsigned char opcode, unsigned short sa)”h]”jd)�”}”(hŒ‚int scsi_report_opcode(struct scsi_device *sdev, unsigned char *buffer, unsigned int len, unsigned char opcode, unsigned short sa)”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj1h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´M)ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj1h²hh³jCh´M)ubj�)�”}”(hŒscsi_report_opcode”h]”j“)�”}”(hŒscsi_report_opcode”h]”hŒscsi_report_opcode”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjRubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj1h²hh³jCh´M)ubjÊ)�”}”(hŒl(struct scsi_device *sdev, unsigned char *buffer, unsigned int len, unsigned char opcode, unsigned short sa)”h]”(jÐ)�”}”(hŒstruct scsi_device *sdev”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjnubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjnubh)�”}”(hhh]”j“)�”}”(hŒ scsi_device”h]”hŒ scsi_device”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j’Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jXsbŒc.scsi_report_opcode”†”asbuh1hhjnubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjnubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjnubj“)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjnubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjjubjÐ)�”}”(hŒunsigned char *buffer”h]”(j’)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjàubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjàubj’)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjàubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjàubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjàubj“)�”}”(hŒbuffer”h]”hŒbuffer”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjàubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjjubjÐ)�”}”(hŒunsigned int len”h]”(j’)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj>ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj>ubj’)�”}”(hŒint”h]”hŒint”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj>ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj>ubj“)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj>ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjjubjÐ)�”}”(hŒunsigned char opcode”h]”(j’)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj�ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj�ubj’)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj�ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj�ubj“)�”}”(hŒopcode”h]”hŒopcode”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjjubjÐ)�”}”(hŒunsigned short sa”h]”(j’)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjàubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjàubj’)�”}”(hŒshort”h]”hŒshort”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjàubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjàubj“)�”}”(hŒsa”h]”hŒsa”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjàubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjjubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhj1h²hh³jCh´M)ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj-h²hh³jCh´M)ubah}”(h]”j(ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jCh´M)hj*h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ(Find out if a given command is supported”h]”hŒ(Find out if a given command is supported”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´M)hjCh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj*h²hh³jCh´M)ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj^jäj^jå‰jæ‰jç‰uh1jXh²hhj h³Nh´Nubjé)�”}”(hXs**Parameters** ``struct scsi_device *sdev`` scsi device to query ``unsigned char *buffer`` scratch buffer (must be at least 20 bytes long) ``unsigned int len`` length of buffer ``unsigned char opcode`` opcode for the command to look up ``unsigned short sa`` service action for the command to look up **Description** Uses the REPORT SUPPORTED OPERATION CODES to check support for the command identified with **opcode** and **sa**. If the command does not have a service action, **sa** must be 0. Returns -EINVAL if RSOC fails, 0 if the command is not supported and 1 if the device claims to support the command.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjhh]”hŒ Parameters”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjfubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´M-hjbubj7)�”}”(hhh]”(j<)�”}”(hŒ2``struct scsi_device *sdev`` scsi device to query ”h]”(jB)�”}”(hŒ``struct scsi_device *sdev``”h]”jH)�”}”(hj‡h]”hŒstruct scsi_device *sdev”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´M*hj�ubj^)�”}”(hhh]”hì)�”}”(hŒscsi device to query”h]”hŒscsi device to query”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jœh´M*hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jœh´M*hj~ubj<)�”}”(hŒJ``unsigned char *buffer`` scratch buffer (must be at least 20 bytes long) ”h]”(jB)�”}”(hŒ``unsigned char *buffer``”h]”jH)�”}”(hjÀh]”hŒunsigned char *buffer”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´M+hjºubj^)�”}”(hhh]”hì)�”}”(hŒ/scratch buffer (must be at least 20 bytes long)”h]”hŒ/scratch buffer (must be at least 20 bytes long)”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÕh´M+hjÖubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjºubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jÕh´M+hj~ubj<)�”}”(hŒ&``unsigned int len`` length of buffer ”h]”(jB)�”}”(hŒ``unsigned int len``”h]”jH)�”}”(hjùh]”hŒunsigned int len”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´M,hjóubj^)�”}”(hhh]”hì)�”}”(hŒlength of buffer”h]”hŒlength of buffer”…”�”}”(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Œ;``unsigned char opcode`` opcode for the command to look up ”h]”(jB)�”}”(hŒ``unsigned char opcode``”h]”jH)�”}”(hj2h]”hŒunsigned char opcode”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´M-hj,ubj^)�”}”(hhh]”hì)�”}”(hŒ!opcode for the command to look up”h]”hŒ!opcode for the command to look up”…”�”}”(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Œ@``unsigned short sa`` service action for the command to look up ”h]”(jB)�”}”(hŒ``unsigned short sa``”h]”jH)�”}”(hjkh]”hŒunsigned short sa”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjiubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´M.hjeubj^)�”}”(hhh]”hì)�”}”(hŒ)service action for the command to look up”h]”hŒ)service action for the command to look up”…”�”}”(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~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjbubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hj¦h]”hŒ Description”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´M0hjbubhì)�”}”(hX&Uses the REPORT SUPPORTED OPERATION CODES to check support for the command identified with **opcode** and **sa**. If the command does not have a service action, **sa** must be 0. Returns -EINVAL if RSOC fails, 0 if the command is not supported and 1 if the device claims to support the command.”h]”(hŒ[Uses the REPORT SUPPORTED OPERATION CODES to check support for the command identified with ”…”�”}”(hj¼h²hh³Nh´Nubjó)�”}”(hŒ **opcode**”h]”hŒopcode”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj¼ubhŒ and ”…”�”}”(hj¼h²hh³Nh´Nubjó)�”}”(hŒ**sa**”h]”hŒsa”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj¼ubhŒ1. If the command does not have a service action, ”…”�”}”(hj¼h²hh³Nh´Nubjó)�”}”(hŒ**sa**”h]”hŒsa”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj¼ubhŒ must be 0. Returns -EINVAL if RSOC fails, 0 if the command is not supported and 1 if the device claims to support the command.”…”�”}”(hj¼h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´M/hjbubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_device_get (C function)”Œc.scsi_device_get”hNt”auh1jGhj h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ.int scsi_device_get (struct scsi_device *sdev)”h]”jd)�”}”(hŒ-int scsi_device_get(struct scsi_device *sdev)”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjh²hh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´Mubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjh²hh³j/h´Mubj�)�”}”(hŒscsi_device_get”h]”j“)�”}”(hŒscsi_device_get”h]”hŒscsi_device_get”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj>ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjh²hh³j/h´MubjÊ)�”}”(hŒ(struct scsi_device *sdev)”h]”jÐ)�”}”(hŒstruct scsi_device *sdev”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjZubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjZubh)�”}”(hhh]”j“)�”}”(hŒ scsi_device”h]”hŒ scsi_device”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjyubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j~Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jDsbŒc.scsi_device_get”†”asbuh1hhjZubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjZubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjZubj“)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjZubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjVubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjh²hh³j/h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjh²hh³j/h´Mubah}”(h]”jah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j/h´Mhjh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ,get an additional reference to a scsi_device”h]”hŒ,get an additional reference to a scsi_device”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´MhjÞh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjh²hh³j/h´Mubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjùjäjùjå‰jæ‰jç‰uh1jXh²hhj h³Nh´Nubjé)�”}”(hXŽ**Parameters** ``struct scsi_device *sdev`` device to get a reference to **Description** Gets a reference to the scsi_device and increments the use count of the underlying LLDD module. You must hold host_lock of the parent Scsi_Host or already have a reference when calling this. This will fail if a device is deleted or cancelled, or when the LLD module is in the process of being unloaded.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´Mhjýubj7)�”}”(hhh]”j<)�”}”(hŒ:``struct scsi_device *sdev`` device to get a reference to ”h]”(jB)�”}”(hŒ``struct scsi_device *sdev``”h]”jH)�”}”(hj"h]”hŒstruct scsi_device *sdev”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´Mhjubj^)�”}”(hhh]”hì)�”}”(hŒdevice to get a reference to”h]”hŒdevice to get a reference to”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j7h´Mhj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j7h´Mhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjýubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hj]h]”hŒ Description”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´Mhjýubhì)�”}”(hŒ¿Gets a reference to the scsi_device and increments the use count of the underlying LLDD module. You must hold host_lock of the parent Scsi_Host or already have a reference when calling this.”h]”hŒ¿Gets a reference to the scsi_device and increments the use count of the underlying LLDD module. You must hold host_lock of the parent Scsi_Host or already have a reference when calling this.”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´Mhjýubhì)�”}”(hŒoThis will fail if a device is deleted or cancelled, or when the LLD module is in the process of being unloaded.”h]”hŒoThis will fail if a device is deleted or cancelled, or when the LLD module is in the process of being unloaded.”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´M hjýubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_device_put (C function)”Œc.scsi_device_put”hNt”auh1jGhj h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ/void scsi_device_put (struct scsi_device *sdev)”h]”jd)�”}”(hŒ.void scsi_device_put(struct scsi_device *sdev)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj­h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´M5ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj­h²hh³j¿h´M5ubj�)�”}”(hŒscsi_device_put”h]”j“)�”}”(hŒscsi_device_put”h]”hŒscsi_device_put”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÎubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj­h²hh³j¿h´M5ubjÊ)�”}”(hŒ(struct scsi_device *sdev)”h]”jÐ)�”}”(hŒstruct scsi_device *sdev”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjêubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjêubh)�”}”(hhh]”j“)�”}”(hŒ scsi_device”h]”hŒ scsi_device”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jÔsbŒc.scsi_device_put”†”asbuh1hhjêubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjêubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjêubj“)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjê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´M5ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj©h²hh³j¿h´M5ubah}”(h]”j¤ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j¿h´M5hj¦h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ$release a reference to a scsi_device”h]”hŒ$release a reference to a scsi_device”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´M5hjnh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj¦h²hh³j¿h´M5ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj‰jäj‰jå‰jæ‰jç‰uh1jXh²hhj h³Nh´Nubjé)�”}”(hŒ÷**Parameters** ``struct scsi_device *sdev`` device to release a reference on. **Description** Release a reference to the scsi_device and decrements the use count of the underlying LLDD module. The device is freed once the last user vanishes.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj“h]”hŒ Parameters”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´M9hj�ubj7)�”}”(hhh]”j<)�”}”(hŒ?``struct scsi_device *sdev`` device to release a reference on. ”h]”(jB)�”}”(hŒ``struct scsi_device *sdev``”h]”jH)�”}”(hj²h]”hŒstruct scsi_device *sdev”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´M6hj¬ubj^)�”}”(hhh]”hì)�”}”(hŒ!device to release a reference on.”h]”hŒ!device to release a reference on.”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÇh´M6hjÈubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jÇh´M6hj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj�ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjíh]”hŒ Description”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjëubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´M8hj�ubhì)�”}”(hŒ”Release a reference to the scsi_device and decrements the use count of the underlying LLDD module. The device is freed once the last user vanishes.”h]”hŒ”Release a reference to the scsi_device and decrements the use count of the underlying LLDD module. The device is freed once the last user vanishes.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´M8hj�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ$starget_for_each_device (C function)”Œc.starget_for_each_device”hNt”auh1jGhj h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒpvoid starget_for_each_device (struct scsi_target *starget, void *data, void (*fn)(struct scsi_device *, void *))”h]”jd)�”}”(hŒmvoid starget_for_each_device(struct scsi_target *starget, void *data, void (*fn)(struct scsi_device*, void*))”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj.h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´Mbubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj.h²hh³j@h´Mbubj�)�”}”(hŒstarget_for_each_device”h]”j“)�”}”(hŒstarget_for_each_device”h]”hŒstarget_for_each_device”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjOubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj.h²hh³j@h´MbubjÊ)�”}”(hŒQ(struct scsi_target *starget, void *data, void (*fn)(struct scsi_device*, void*))”h]”(jÐ)�”}”(hŒstruct scsi_target *starget”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjkubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjkubh)�”}”(hhh]”j“)�”}”(hŒ scsi_target”h]”hŒ scsi_target”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjŠubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j�Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jUsbŒc.starget_for_each_device”†”asbuh1hhjkubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjkubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjkubj“)�”}”(hŒstarget”h]”hŒstarget”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjkubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjgubjÐ)�”}”(hŒ void *data”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjÝubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÝubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjÝubj“)�”}”(hŒdata”h]”hŒdata”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÝubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjgubjÐ)�”}”(hŒ&void (*fn)(struct scsi_device*, void*)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjubj% )�”}”(hŒ(”h]”hŒ(”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjubj“)�”}”(hŒfn”h]”hŒfn”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjubj% )�”}”(hŒ)”h]”hŒ)”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjubj% )�”}”(hjAh]”hŒ(”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjubjj)�”}”(hjmh]”hŒstruct”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjubh)�”}”(hhh]”j“)�”}”(hŒ scsi_device”h]”hŒ scsi_device”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjžubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j£Œmodname”NŒ classname”Njôj÷)�”}”jú]”j©Œc.starget_for_each_device”†”asbuh1hhjubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjubj% )�”}”(hŒ,”h]”hŒ,”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjubj’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjubj% )�”}”(hjjh]”hŒ)”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjgubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhj.h²hh³j@h´Mbubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj*h²hh³j@h´Mbubah}”(h]”j%ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j@h´Mbhj'h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ&helper to walk all devices of a target”h]”hŒ&helper to walk all devices of a target”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´Mbhj)h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj'h²hh³j@h´Mbubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjDjäjDjå‰jæ‰jç‰uh1jXh²hhj h³Nh´Nubjé)�”}”(hXŒ**Parameters** ``struct scsi_target *starget`` target whose devices we want to iterate over. ``void *data`` Opaque passed to each function call. ``void (*fn)(struct scsi_device *, void *)`` Function to call on each device **Description** This traverses over each device of **starget**. The devices have a reference that must be released by scsi_host_put when breaking out of the loop.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjNh]”hŒ Parameters”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjLubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´MfhjHubj7)�”}”(hhh]”(j<)�”}”(hŒN``struct scsi_target *starget`` target whose devices we want to iterate over. ”h]”(jB)�”}”(hŒ``struct scsi_target *starget``”h]”jH)�”}”(hjmh]”hŒstruct scsi_target *starget”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjkubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´Mchjgubj^)�”}”(hhh]”hì)�”}”(hŒ-target whose devices we want to iterate over.”h]”hŒ-target whose devices we want to iterate over.”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j‚h´Mchjƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjgubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j‚h´Mchjdubj<)�”}”(hŒ4``void *data`` Opaque passed to each function call. ”h]”(jB)�”}”(hŒ``void *data``”h]”jH)�”}”(hj¦h]”hŒ void *data”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´Mdhj ubj^)�”}”(hhh]”hì)�”}”(hŒ$Opaque passed to each function call.”h]”hŒ$Opaque passed to each function call.”…”�”}”(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´Mdhjdubj<)�”}”(hŒM``void (*fn)(struct scsi_device *, void *)`` Function to call on each device ”h]”(jB)�”}”(hŒ,``void (*fn)(struct scsi_device *, void *)``”h]”jH)�”}”(hjßh]”hŒ(void (*fn)(struct scsi_device *, void *)”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´MehjÙubj^)�”}”(hhh]”hì)�”}”(hŒFunction to call on each device”h]”hŒFunction to call on each device”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jôh´Mehjõubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÙubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jôh´Mehjdubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjHubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjh]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´MghjHubhì)�”}”(hŒ“This traverses over each device of **starget**. The devices have a reference that must be released by scsi_host_put when breaking out of the loop.”h]”(hŒ#This traverses over each device of ”…”�”}”(hj0h²hh³Nh´Nubjó)�”}”(hŒ **starget**”h]”hŒstarget”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj0ubhŒe. The devices have a reference that must be released by scsi_host_put when breaking out of the loop.”…”�”}”(hj0h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´MfhjHubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ&__starget_for_each_device (C function)”Œc.__starget_for_each_device”hNt”auh1jGhj h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒrvoid __starget_for_each_device (struct scsi_target *starget, void *data, void (*fn)(struct scsi_device *, void *))”h]”jd)�”}”(hŒovoid __starget_for_each_device(struct scsi_target *starget, void *data, void (*fn)(struct scsi_device*, void*))”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjmh²hh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´Mzubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjmh²hh³jh´Mzubj�)�”}”(hŒ__starget_for_each_device”h]”j“)�”}”(hŒ__starget_for_each_device”h]”hŒ__starget_for_each_device”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjŽubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjmh²hh³jh´MzubjÊ)�”}”(hŒQ(struct scsi_target *starget, void *data, void (*fn)(struct scsi_device*, void*))”h]”(jÐ)�”}”(hŒstruct scsi_target *starget”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjªubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjªubh)�”}”(hhh]”j“)�”}”(hŒ scsi_target”h]”hŒ scsi_target”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÉubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jÎŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j j”sbŒc.__starget_for_each_device”†”asbuh1hhjªubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjªubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjªubj“)�”}”(hŒstarget”h]”hŒstarget”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjªubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj¦ubjÐ)�”}”(hŒ void *data”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjubj“)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj¦ubjÐ)�”}”(hŒ&void (*fn)(struct scsi_device*, void*)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj^ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj^ubj% )�”}”(hjAh]”hŒ(”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj^ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj^ubj“)�”}”(hŒfn”h]”hŒfn”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj^ubj% )�”}”(hjjh]”hŒ)”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj^ubj% )�”}”(hjAh]”hŒ(”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj^ubjj)�”}”(hjmh]”hŒstruct”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj^ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj^ubh)�”}”(hhh]”j“)�”}”(hŒ scsi_device”h]”hŒ scsi_device”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÛubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jàŒmodname”NŒ classname”Njôj÷)�”}”jú]”jèŒc.__starget_for_each_device”†”asbuh1hhj^ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj^ubj% )�”}”(hjÎh]”hŒ,”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj^ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj^ubj’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj$ h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj^ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj2 h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj^ubj% )�”}”(hjjh]”hŒ)”…”�”}”(hj? h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj^ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj¦ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjmh²hh³jh´Mzubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjih²hh³jh´Mzubah}”(h]”jdah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jh´Mzhjfh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ1helper to walk all devices of a target (UNLOCKED)”h]”hŒ1helper to walk all devices of a target (UNLOCKED)”…”�”}”(hjh h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´Mzhje h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjfh²hh³jh´Mzubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj€ jäj€ jå‰jæ‰jç‰uh1jXh²hhj h³Nh´Nubjé)�”}”(hXd**Parameters** ``struct scsi_target *starget`` target whose devices we want to iterate over. ``void *data`` parameter for callback **fn\(\)** ``void (*fn)(struct scsi_device *, void *)`` callback function that is invoked for each device **Description** This traverses over each device of **starget**. It does _not_ take a reference on the scsi_device, so the whole loop must be protected by shost->host_lock. **Note** The only reason why drivers would want to use this is because they need to access the device list in irq context. Otherwise you really want to use starget_for_each_device instead.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjŠ h]”hŒ Parameters”…”�”}”(hjŒ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjˆ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´M~hj„ ubj7)�”}”(hhh]”(j<)�”}”(hŒN``struct scsi_target *starget`` target whose devices we want to iterate over. ”h]”(jB)�”}”(hŒ``struct scsi_target *starget``”h]”jH)�”}”(hj© h]”hŒstruct scsi_target *starget”…”�”}”(hj« h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj§ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´M{hj£ ubj^)�”}”(hhh]”hì)�”}”(hŒ-target whose devices we want to iterate over.”h]”hŒ-target whose devices we want to iterate over.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¾ h´M{hj¿ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj£ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j¾ h´M{hj  ubj<)�”}”(hŒ1``void *data`` parameter for callback **fn\(\)** ”h]”(jB)�”}”(hŒ``void *data``”h]”jH)�”}”(hjâ h]”hŒ void *data”…”�”}”(hjä h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjà ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´M|hjÜ ubj^)�”}”(hhh]”hì)�”}”(hŒ!parameter for callback **fn\(\)**”h]”(hŒparameter for callback ”…”�”}”(hjû h²hh³Nh´Nubjó)�”}”(hŒ **fn\(\)**”h]”hŒfn()”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjû ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j÷ h´M|hjø ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÜ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j÷ h´M|hj  ubj<)�”}”(hŒ_``void (*fn)(struct scsi_device *, void *)`` callback function that is invoked for each device ”h]”(jB)�”}”(hŒ,``void (*fn)(struct scsi_device *, void *)``”h]”jH)�”}”(hj)!h]”hŒ(void (*fn)(struct scsi_device *, void *)”…”�”}”(hj+!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj'!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´M}hj#!ubj^)�”}”(hhh]”hì)�”}”(hŒ1callback function that is invoked for each device”h]”hŒ1callback function that is invoked for each device”…”�”}”(hjB!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j>!h´M}hj?!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj#!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j>!h´M}hj  ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hj„ ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjd!h]”hŒ Description”…”�”}”(hjf!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjb!ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´Mhj„ ubhì)�”}”(hŒœThis traverses over each device of **starget**. It does _not_ take a reference on the scsi_device, so the whole loop must be protected by shost->host_lock.”h]”(hŒ#This traverses over each device of ”…”�”}”(hjz!h²hh³Nh´Nubjó)�”}”(hŒ **starget**”h]”hŒstarget”…”�”}”(hj‚!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjz!ubhŒn. It does _not_ take a reference on the scsi_device, so the whole loop must be protected by shost->host_lock.”…”�”}”(hjz!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´M~hj„ ubhì)�”}”(hŒ**Note**”h]”jó)�”}”(hj�!h]”hŒNote”…”�”}”(hjŸ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj›!ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´M‚hj„ ubhì)�”}”(hŒ´The only reason why drivers would want to use this is because they need to access the device list in irq context. Otherwise you really want to use starget_for_each_device instead.”h]”hŒ´The only reason why drivers would want to use this is because they need to access the device list in irq context. Otherwise you really want to use starget_for_each_device instead.”…”�”}”(hj³!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´Mƒhj„ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ+__scsi_device_lookup_by_target (C function)”Œ c.__scsi_device_lookup_by_target”hNt”auh1jGhj h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒZstruct scsi_device * __scsi_device_lookup_by_target (struct scsi_target *starget, u64 lun)”h]”jd)�”}”(hŒXstruct scsi_device *__scsi_device_lookup_by_target(struct scsi_target *starget, u64 lun)”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjâ!h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjÞ!h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´M–ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjð!h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÞ!h²hh³jï!h´M–ubh)�”}”(hhh]”j“)�”}”(hŒ scsi_device”h]”hŒ scsi_device”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjþ!ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j"Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j Œ__scsi_device_lookup_by_target”sbŒ c.__scsi_device_lookup_by_target”†”asbuh1hhjÞ!h²hh³jï!h´M–ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj""h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÞ!h²hh³jï!h´M–ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj0"h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjÞ!h²hh³jï!h´M–ubj�)�”}”(hŒ__scsi_device_lookup_by_target”h]”j“)�”}”(hj"h]”hŒ__scsi_device_lookup_by_target”…”�”}”(hjA"h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj="ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjÞ!h²hh³jï!h´M–ubjÊ)�”}”(hŒ&(struct scsi_target *starget, u64 lun)”h]”(jÐ)�”}”(hŒstruct scsi_target *starget”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj\"h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjX"ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hji"h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjX"ubh)�”}”(hhh]”j“)�”}”(hŒ scsi_target”h]”hŒ scsi_target”…”�”}”(hjz"h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjw"ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j|"Œmodname”NŒ classname”Njôj÷)�”}”jú]”j"Œ c.__scsi_device_lookup_by_target”†”asbuh1hhjX"ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜"h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjX"ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj¦"h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjX"ubj“)�”}”(hŒstarget”h]”hŒstarget”…”�”}”(hj³"h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjX"ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjT"ubjÐ)�”}”(hŒu64 lun”h]”(h)�”}”(hhh]”j“)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjÏ"h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÌ"ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jÑ"Œmodname”NŒ classname”Njôj÷)�”}”jú]”j"Œ c.__scsi_device_lookup_by_target”†”asbuh1hhjÈ"ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjí"h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÈ"ubj“)�”}”(hŒlun”h]”hŒlun”…”�”}”(hjû"h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÈ"ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjT"ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjÞ!h²hh³jï!h´M–ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjÚ!h²hh³jï!h´M–ubah}”(h]”jÕ!ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jï!h´M–hj×!h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ)find a device given the target (UNLOCKED)”h]”hŒ)find a device given the target (UNLOCKED)”…”�”}”(hj%#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´M–hj"#h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj×!h²hh³jï!h´M–ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj=#jäj=#jå‰jæ‰jç‰uh1jXh²hhj h³Nh´Nubjé)�”}”(hXV**Parameters** ``struct scsi_target *starget`` SCSI target pointer ``u64 lun`` SCSI Logical Unit Number **Description** Looks up the scsi_device with the specified **lun** for a given **starget**. The returned scsi_device does not have an additional reference. You must hold the host's host_lock over this call and any access to the returned scsi_device. A scsi_device in state SDEV_DEL is skipped. **Note** The only reason why drivers should use this is because they need to access the device list in irq context. Otherwise you really want to use scsi_device_lookup_by_target instead.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjG#h]”hŒ Parameters”…”�”}”(hjI#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjE#ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´MšhjA#ubj7)�”}”(hhh]”(j<)�”}”(hŒ4``struct scsi_target *starget`` SCSI target pointer ”h]”(jB)�”}”(hŒ``struct scsi_target *starget``”h]”jH)�”}”(hjf#h]”hŒstruct scsi_target *starget”…”�”}”(hjh#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjd#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´M—hj`#ubj^)�”}”(hhh]”hì)�”}”(hŒSCSI target pointer”h]”hŒSCSI target pointer”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j{#h´M—hj|#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj`#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j{#h´M—hj]#ubj<)�”}”(hŒ%``u64 lun`` SCSI Logical Unit Number ”h]”(jB)�”}”(hŒ ``u64 lun``”h]”jH)�”}”(hjŸ#h]”hŒu64 lun”…”�”}”(hj¡#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj�#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´M˜hj™#ubj^)�”}”(hhh]”hì)�”}”(hŒSCSI Logical Unit Number”h]”hŒSCSI Logical Unit Number”…”�”}”(hj¸#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j´#h´M˜hjµ#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj™#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j´#h´M˜hj]#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjA#ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjÚ#h]”hŒ Description”…”�”}”(hjÜ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjØ#ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´MšhjA#ubhì)�”}”(hXLooks up the scsi_device with the specified **lun** for a given **starget**. The returned scsi_device does not have an additional reference. You must hold the host's host_lock over this call and any access to the returned scsi_device. A scsi_device in state SDEV_DEL is skipped.”h]”(hŒ,Looks up the scsi_device with the specified ”…”�”}”(hjð#h²hh³Nh´Nubjó)�”}”(hŒ**lun**”h]”hŒlun”…”�”}”(hjø#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjð#ubhŒ for a given ”…”�”}”(hjð#h²hh³Nh´Nubjó)�”}”(hŒ **starget**”h]”hŒstarget”…”�”}”(hj $h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjð#ubhŒÏ. The returned scsi_device does not have an additional reference. You must hold the host’s host_lock over this call and any access to the returned scsi_device. A scsi_device in state SDEV_DEL is skipped.”…”�”}”(hjð#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´MšhjA#ubhì)�”}”(hŒ**Note**”h]”jó)�”}”(hj%$h]”hŒNote”…”�”}”(hj'$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj#$ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´M hjA#ubhì)�”}”(hŒ²The only reason why drivers should use this is because they need to access the device list in irq context. Otherwise you really want to use scsi_device_lookup_by_target instead.”h]”hŒ²The only reason why drivers should use this is because they need to access the device list in irq context. Otherwise you really want to use scsi_device_lookup_by_target instead.”…”�”}”(hj;$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´M hjA#ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ)scsi_device_lookup_by_target (C function)”Œc.scsi_device_lookup_by_target”hNt”auh1jGhj h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒXstruct scsi_device * scsi_device_lookup_by_target (struct scsi_target *starget, u64 lun)”h]”jd)�”}”(hŒVstruct scsi_device *scsi_device_lookup_by_target(struct scsi_target *starget, u64 lun)”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjj$h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjf$h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´Mµubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjx$h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjf$h²hh³jw$h´Mµubh)�”}”(hhh]”j“)�”}”(hŒ scsi_device”h]”hŒ scsi_device”…”�”}”(hj‰$h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj†$ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j‹$Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j Œscsi_device_lookup_by_target”sbŒc.scsi_device_lookup_by_target”†”asbuh1hhjf$h²hh³jw$h´Mµubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjª$h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjf$h²hh³jw$h´Mµubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj¸$h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjf$h²hh³jw$h´Mµubj�)�”}”(hŒscsi_device_lookup_by_target”h]”j“)�”}”(hj§$h]”hŒscsi_device_lookup_by_target”…”�”}”(hjÉ$h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÅ$ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjf$h²hh³jw$h´MµubjÊ)�”}”(hŒ&(struct scsi_target *starget, u64 lun)”h]”(jÐ)�”}”(hŒstruct scsi_target *starget”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjä$h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjà$ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñ$h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjà$ubh)�”}”(hhh]”j“)�”}”(hŒ scsi_target”h]”hŒ scsi_target”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÿ$ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j%Œmodname”NŒ classname”Njôj÷)�”}”jú]”j¥$Œc.scsi_device_lookup_by_target”†”asbuh1hhjà$ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj %h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjà$ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj.%h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjà$ubj“)�”}”(hŒstarget”h]”hŒstarget”…”�”}”(hj;%h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjà$ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjÜ$ubjÐ)�”}”(hŒu64 lun”h]”(h)�”}”(hhh]”j“)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjW%h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjT%ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jY%Œmodname”NŒ classname”Njôj÷)�”}”jú]”j¥$Œc.scsi_device_lookup_by_target”†”asbuh1hhjP%ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hju%h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjP%ubj“)�”}”(hŒlun”h]”hŒlun”…”�”}”(hjƒ%h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjP%ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjÜ$ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjf$h²hh³jw$h´Mµubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjb$h²hh³jw$h´Mµubah}”(h]”j]$ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jw$h´Mµhj_$h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒfind a device given the target”h]”hŒfind a device given the target”…”�”}”(hj­%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´Mµhjª%h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj_$h²hh³jw$h´Mµubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjÅ%jäjÅ%jå‰jæ‰jç‰uh1jXh²hhj h³Nh´Nubjé)�”}”(hXK**Parameters** ``struct scsi_target *starget`` SCSI target pointer ``u64 lun`` SCSI Logical Unit Number **Description** Looks up the scsi_device with the specified **lun** for a given **starget**. The returned scsi_device has an additional reference that needs to be released with scsi_device_put once you're done with it.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjÏ%h]”hŒ Parameters”…”�”}”(hjÑ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÍ%ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´M¹hjÉ%ubj7)�”}”(hhh]”(j<)�”}”(hŒ4``struct scsi_target *starget`` SCSI target pointer ”h]”(jB)�”}”(hŒ``struct scsi_target *starget``”h]”jH)�”}”(hjî%h]”hŒstruct scsi_target *starget”…”�”}”(hjð%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjì%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´M¶hjè%ubj^)�”}”(hhh]”hì)�”}”(hŒSCSI target pointer”h]”hŒSCSI target pointer”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j&h´M¶hj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjè%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j&h´M¶hjå%ubj<)�”}”(hŒ%``u64 lun`` SCSI Logical Unit Number ”h]”(jB)�”}”(hŒ ``u64 lun``”h]”jH)�”}”(hj'&h]”hŒu64 lun”…”�”}”(hj)&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj%&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´M·hj!&ubj^)�”}”(hhh]”hì)�”}”(hŒSCSI Logical Unit Number”h]”hŒSCSI Logical Unit Number”…”�”}”(hj@&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j<&h´M·hj=&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj!&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j<&h´M·hjå%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjÉ%ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjb&h]”hŒ Description”…”�”}”(hjd&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj`&ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´M¹hjÉ%ubhì)�”}”(hŒËLooks up the scsi_device with the specified **lun** for a given **starget**. The returned scsi_device has an additional reference that needs to be released with scsi_device_put once you're done with it.”h]”(hŒ,Looks up the scsi_device with the specified ”…”�”}”(hjx&h²hh³Nh´Nubjó)�”}”(hŒ**lun**”h]”hŒlun”…”�”}”(hj€&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjx&ubhŒ for a given ”…”�”}”(hjx&h²hh³Nh´Nubjó)�”}”(hŒ **starget**”h]”hŒstarget”…”�”}”(hj’&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjx&ubhŒ‚. The returned scsi_device has an additional reference that needs to be released with scsi_device_put once you’re done with it.”…”�”}”(hjx&h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´M¹hjÉ%ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ!__scsi_device_lookup (C function)”Œc.__scsi_device_lookup”hNt”auh1jGhj h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒcstruct scsi_device * __scsi_device_lookup (struct Scsi_Host *shost, uint channel, uint id, u64 lun)”h]”jd)�”}”(hŒastruct scsi_device *__scsi_device_lookup(struct Scsi_Host *shost, uint channel, uint id, u64 lun)”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjË&h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjÇ&h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´MÏubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙ&h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÇ&h²hh³jØ&h´MÏubh)�”}”(hhh]”j“)�”}”(hŒ scsi_device”h]”hŒ scsi_device”…”�”}”(hjê&h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjç&ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jì&Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j Œ__scsi_device_lookup”sbŒc.__scsi_device_lookup”†”asbuh1hhjÇ&h²hh³jØ&h´MÏubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj 'h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÇ&h²hh³jØ&h´MÏubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjÇ&h²hh³jØ&h´MÏubj�)�”}”(hŒ__scsi_device_lookup”h]”j“)�”}”(hj'h]”hŒ__scsi_device_lookup”…”�”}”(hj*'h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj&'ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjÇ&h²hh³jØ&h´MÏubjÊ)�”}”(hŒ9(struct Scsi_Host *shost, uint channel, uint id, u64 lun)”h]”(jÐ)�”}”(hŒstruct Scsi_Host *shost”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjE'h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjA'ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjR'h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjA'ubh)�”}”(hhh]”j“)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hjc'h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj`'ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”je'Œmodname”NŒ classname”Njôj÷)�”}”jú]”j'Œc.__scsi_device_lookup”†”asbuh1hhjA'ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�'h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjA'ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj�'h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjA'ubj“)�”}”(hŒshost”h]”hŒshost”…”�”}”(hjœ'h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjA'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj='ubjÐ)�”}”(hŒ uint channel”h]”(h)�”}”(hhh]”j“)�”}”(hŒuint”h]”hŒuint”…”�”}”(hj¸'h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjµ'ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jº'Œmodname”NŒ classname”Njôj÷)�”}”jú]”j'Œc.__scsi_device_lookup”†”asbuh1hhj±'ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖ'h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj±'ubj“)�”}”(hŒchannel”h]”hŒchannel”…”�”}”(hjä'h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj±'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj='ubjÐ)�”}”(hŒuint id”h]”(h)�”}”(hhh]”j“)�”}”(hŒuint”h]”hŒuint”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjý'ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j(Œmodname”NŒ classname”Njôj÷)�”}”jú]”j'Œc.__scsi_device_lookup”†”asbuh1hhjù'ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjù'ubj“)�”}”(hŒid”h]”hŒid”…”�”}”(hj,(h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjù'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj='ubjÐ)�”}”(hŒu64 lun”h]”(h)�”}”(hhh]”j“)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjH(h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjE(ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jJ(Œmodname”NŒ classname”Njôj÷)�”}”jú]”j'Œc.__scsi_device_lookup”†”asbuh1hhjA(ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjf(h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjA(ubj“)�”}”(hŒlun”h]”hŒlun”…”�”}”(hjt(h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjA(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²ˆuh1jcj³j´hjÃ&h²hh³jØ&h´MÏubah}”(h]”j¾&ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jØ&h´MÏhjÀ&h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ'find a device given the host (UNLOCKED)”h]”hŒ'find a device given the host (UNLOCKED)”…”�”}”(hjž(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´MÏhj›(h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjÀ&h²hh³jØ&h´MÏubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj¶(jäj¶(jå‰jæ‰jç‰uh1jXh²hhj h³Nh´Nubjé)�”}”(hX£**Parameters** ``struct Scsi_Host *shost`` SCSI host pointer ``uint channel`` SCSI channel (zero if only one channel) ``uint id`` SCSI target number (physical unit number) ``u64 lun`` SCSI Logical Unit Number **Description** Looks up the scsi_device with the specified **channel**, **id**, **lun** for a given host. The returned scsi_device does not have an additional reference. You must hold the host's host_lock over this call and any access to the returned scsi_device. **Note** The only reason why drivers would want to use this is because they need to access the device list in irq context. Otherwise you really want to use scsi_device_lookup instead.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjÀ(h]”hŒ Parameters”…”�”}”(hjÂ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj¾(ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´MÓhjº(ubj7)�”}”(hhh]”(j<)�”}”(hŒ.``struct Scsi_Host *shost`` SCSI host pointer ”h]”(jB)�”}”(hŒ``struct Scsi_Host *shost``”h]”jH)�”}”(hjß(h]”hŒstruct Scsi_Host *shost”…”�”}”(hjá(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjÝ(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´MÐhjÙ(ubj^)�”}”(hhh]”hì)�”}”(hŒSCSI host pointer”h]”hŒSCSI host pointer”…”�”}”(hjø(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jô(h´MÐhjõ(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÙ(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jô(h´MÐhjÖ(ubj<)�”}”(hŒ9``uint channel`` SCSI channel (zero if only one channel) ”h]”(jB)�”}”(hŒ``uint channel``”h]”jH)�”}”(hj)h]”hŒ uint channel”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´MÑhj)ubj^)�”}”(hhh]”hì)�”}”(hŒ'SCSI channel (zero if only one channel)”h]”hŒ'SCSI channel (zero if only one channel)”…”�”}”(hj1)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j-)h´MÑhj.)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j-)h´MÑhjÖ(ubj<)�”}”(hŒ6``uint id`` SCSI target number (physical unit number) ”h]”(jB)�”}”(hŒ ``uint id``”h]”jH)�”}”(hjQ)h]”hŒuint id”…”�”}”(hjS)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjO)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´MÒhjK)ubj^)�”}”(hhh]”hì)�”}”(hŒ)SCSI target number (physical unit number)”h]”hŒ)SCSI target number (physical unit number)”…”�”}”(hjj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jf)h´MÒhjg)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjK)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jf)h´MÒhjÖ(ubj<)�”}”(hŒ%``u64 lun`` SCSI Logical Unit Number ”h]”(jB)�”}”(hŒ ``u64 lun``”h]”jH)�”}”(hjŠ)h]”hŒu64 lun”…”�”}”(hjŒ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjˆ)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´MÓhj„)ubj^)�”}”(hhh]”hì)�”}”(hŒSCSI Logical Unit Number”h]”hŒSCSI Logical Unit Number”…”�”}”(hj£)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jŸ)h´MÓhj )ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj„)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jŸ)h´MÓhjÖ(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjº(ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjÅ)h]”hŒ Description”…”�”}”(hjÇ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÃ)ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´MÕhjº(ubhì)�”}”(hŒùLooks up the scsi_device with the specified **channel**, **id**, **lun** for a given host. The returned scsi_device does not have an additional reference. You must hold the host's host_lock over this call and any access to the returned scsi_device.”h]”(hŒ,Looks up the scsi_device with the specified ”…”�”}”(hjÛ)h²hh³Nh´Nubjó)�”}”(hŒ **channel**”h]”hŒchannel”…”�”}”(hjã)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÛ)ubhŒ, ”…”�”}”(hjÛ)h²hh³Nh´Nubjó)�”}”(hŒ**id**”h]”hŒid”…”�”}”(hjõ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÛ)ubhŒ, ”…”�”}”hjÛ)sbjó)�”}”(hŒ**lun**”h]”hŒlun”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÛ)ubhŒ³ for a given host. The returned scsi_device does not have an additional reference. You must hold the host’s host_lock over this call and any access to the returned scsi_device.”…”�”•}”(hjÛ)h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´MÕhjº(ubhì)�”}”(hŒ**Note**”h]”jó)�”}”(hj"*h]”hŒNote”…”�”}”(hj$*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj *ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´MÚhjº(ubhì)�”}”(hŒ¯The only reason why drivers would want to use this is because they need to access the device list in irq context. Otherwise you really want to use scsi_device_lookup instead.”h]”hŒ¯The only reason why drivers would want to use this is because they need to access the device list in irq context. Otherwise you really want to use scsi_device_lookup instead.”…”�”}”(hj8*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´MÚhjº(ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_device_lookup (C function)”Œc.scsi_device_lookup”hNt”auh1jGhj h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒastruct scsi_device * scsi_device_lookup (struct Scsi_Host *shost, uint channel, uint id, u64 lun)”h]”jd)�”}”(hŒ_struct scsi_device *scsi_device_lookup(struct Scsi_Host *shost, uint channel, uint id, u64 lun)”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjg*h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjc*h²hh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´Mðubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hju*h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjc*h²hh³jt*h´Mðubh)�”}”(hhh]”j“)�”}”(hŒ scsi_device”h]”hŒ scsi_device”…”�”}”(hj†*h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjƒ*ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jˆ*Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j Œscsi_device_lookup”sbŒc.scsi_device_lookup”†”asbuh1hhjc*h²hh³jt*h´Mðubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§*h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjc*h²hh³jt*h´Mðubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjµ*h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjc*h²hh³jt*h´Mðubj�)�”}”(hŒscsi_device_lookup”h]”j“)�”}”(hj¤*h]”hŒscsi_device_lookup”…”�”}”(hjÆ*h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÂ*ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjc*h²hh³jt*h´MðubjÊ)�”}”(hŒ9(struct Scsi_Host *shost, uint channel, uint id, u64 lun)”h]”(jÐ)�”}”(hŒstruct Scsi_Host *shost”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjá*h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjÝ*ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjî*h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÝ*ubh)�”}”(hhh]”j“)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hjÿ*h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjü*ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j+Œmodname”NŒ classname”Njôj÷)�”}”jú]”j¢*Œc.scsi_device_lookup”†”asbuh1hhjÝ*ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÝ*ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj++h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjÝ*ubj“)�”}”(hŒshost”h]”hŒshost”…”�”}”(hj8+h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÝ*ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjÙ*ubjÐ)�”}”(hŒ uint channel”h]”(h)�”}”(hhh]”j“)�”}”(hŒuint”h]”hŒuint”…”�”}”(hjT+h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjQ+ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jV+Œmodname”NŒ classname”Njôj÷)�”}”jú]”j¢*Œc.scsi_device_lookup”†”asbuh1hhjM+ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjr+h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjM+ubj“)�”}”(hŒchannel”h]”hŒchannel”…”�”}”(hj€+h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjM+ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjÙ*ubjÐ)�”}”(hŒuint id”h]”(h)�”}”(hhh]”j“)�”}”(hŒuint”h]”hŒuint”…”�”}”(hjœ+h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj™+ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jž+Œmodname”NŒ classname”Njôj÷)�”}”jú]”j¢*Œc.scsi_device_lookup”†”asbuh1hhj•+ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjº+h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj•+ubj“)�”}”(hŒid”h]”hŒid”…”�”}”(hjÈ+h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj•+ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjÙ*ubjÐ)�”}”(hŒu64 lun”h]”(h)�”}”(hhh]”j“)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjä+h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjá+ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jæ+Œmodname”NŒ classname”Njôj÷)�”}”jú]”j¢*Œc.scsi_device_lookup”†”asbuh1hhjÝ+ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÝ+ubj“)�”}”(hŒlun”h]”hŒlun”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÝ+ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjÙ*ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjc*h²hh³jt*h´Mðubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj_*h²hh³jt*h´Mðubah}”(h]”jZ*ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jt*h´Mðhj\*h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒfind a device given the host”h]”hŒfind a device given the host”…”�”}”(hj:,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´Mðhj7,h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj\*h²hh³jt*h´Mðubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjR,jäjR,jå‰jæ‰jç‰uh1jXh²hhj h³Nh´Nubjé)�”}”(hXÈ**Parameters** ``struct Scsi_Host *shost`` SCSI host pointer ``uint channel`` SCSI channel (zero if only one channel) ``uint id`` SCSI target number (physical unit number) ``u64 lun`` SCSI Logical Unit Number **Description** Looks up the scsi_device with the specified **channel**, **id**, **lun** for a given host. The returned scsi_device has an additional reference that needs to be released with scsi_device_put once you're done with it.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj\,h]”hŒ Parameters”…”�”}”(hj^,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjZ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´MôhjV,ubj7)�”}”(hhh]”(j<)�”}”(hŒ.``struct Scsi_Host *shost`` SCSI host pointer ”h]”(jB)�”}”(hŒ``struct Scsi_Host *shost``”h]”jH)�”}”(hj{,h]”hŒstruct Scsi_Host *shost”…”�”}”(hj},h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjy,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´Mñhju,ubj^)�”}”(hhh]”hì)�”}”(hŒSCSI host pointer”h]”hŒSCSI host pointer”…”�”}”(hj”,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j�,h´Mñhj‘,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hju,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j�,h´Mñhjr,ubj<)�”}”(hŒ9``uint channel`` SCSI channel (zero if only one channel) ”h]”(jB)�”}”(hŒ``uint channel``”h]”jH)�”}”(hj´,h]”hŒ uint channel”…”�”}”(hj¶,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj²,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´Mòhj®,ubj^)�”}”(hhh]”hì)�”}”(hŒ'SCSI channel (zero if only one channel)”h]”hŒ'SCSI channel (zero if only one channel)”…”�”}”(hjÍ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÉ,h´MòhjÊ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj®,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jÉ,h´Mòhjr,ubj<)�”}”(hŒ6``uint id`` SCSI target number (physical unit number) ”h]”(jB)�”}”(hŒ ``uint id``”h]”jH)�”}”(hjí,h]”hŒuint id”…”�”}”(hjï,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjë,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´Móhjç,ubj^)�”}”(hhh]”hì)�”}”(hŒ)SCSI target number (physical unit number)”h]”hŒ)SCSI target number (physical unit number)”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j-h´Móhj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjç,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j-h´Móhjr,ubj<)�”}”(hŒ%``u64 lun`` SCSI Logical Unit Number ”h]”(jB)�”}”(hŒ ``u64 lun``”h]”jH)�”}”(hj&-h]”hŒu64 lun”…”�”}”(hj(-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj$-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´Môhj -ubj^)�”}”(hhh]”hì)�”}”(hŒSCSI Logical Unit Number”h]”hŒSCSI Logical Unit Number”…”�”}”(hj?-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j;-h´Môhj<-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj -ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j;-h´Môhjr,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjV,ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hja-h]”hŒ Description”…”�”}”(hjc-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj_-ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´MöhjV,ubhì)�”}”(hŒÙLooks up the scsi_device with the specified **channel**, **id**, **lun** for a given host. The returned scsi_device has an additional reference that needs to be released with scsi_device_put once you're done with it.”h]”(hŒ,Looks up the scsi_device with the specified ”…”�”}”(hjw-h²hh³Nh´Nubjó)�”}”(hŒ **channel**”h]”hŒchannel”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjw-ubhŒ, ”…”�”}”(hjw-h²hh³Nh´Nubjó)�”}”(hŒ**id**”h]”hŒid”…”�”}”(hj‘-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjw-ubhŒ, ”…”�”}”hjw-sbjó)�”}”(hŒ**lun**”h]”hŒlun”…”�”}”(hj£-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjw-ubhŒ“ for a given host. The returned scsi_device has an additional reference that needs to be released with scsi_device_put once you’re done with it.”…”�”}”(hjw-h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒT/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:101: ./drivers/scsi/scsi.c”h´MöhjV,ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj h²hh³Nh´Nubeh}”(h]”Œdrivers-scsi-scsi-c”ah ]”h"]”Œdrivers/scsi/scsi.c”ah$]”h&]”uh1hµhj%h²hh³hÊh´Kaubh¶)�”}”(hhh]”(h»)�”}”(hŒdrivers/scsi/scsicam.c”h]”hŒdrivers/scsi/scsicam.c”…”�”}”(hjÎ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjË-h²hh³hÊh´Kiubhì)�”}”(hŒ„`SCSI Common Access Method `__ support functions, for use with HDIO_GETGEO, etc.”h]”(j‚)�”}”(hŒR`SCSI Common Access Method `__”h]”hŒSCSI Common Access Method”…”�”}”(hjà-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒSCSI Common Access Method”j“Œ2http://www.t10.org/ftp/t10/drafts/cam/cam-r12b.pdf”uh1j�hjÜ-ubhŒ2 support functions, for use with HDIO_GETGEO, etc.”…”�”}”(hjÜ-h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KkhjË-h²hubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_bios_ptable (C function)”Œc.scsi_bios_ptable”hNt”auh1jGhjË-h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ6unsigned char * scsi_bios_ptable (struct gendisk *dev)”h]”jd)�”}”(hŒ4unsigned char *scsi_bios_ptable(struct gendisk *dev)”h]”(j’)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj.h²hh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:111: ./drivers/scsi/scsicam.c”h´Kubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#.h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj.h²hh³j".h´Kubj’)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj1.h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj.h²hh³j".h´Kubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?.h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj.h²hh³j".h´Kubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjM.h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj.h²hh³j".h´Kubj�)�”}”(hŒscsi_bios_ptable”h]”j“)�”}”(hŒscsi_bios_ptable”h]”hŒscsi_bios_ptable”…”�”}”(hj^.h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjZ.ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj.h²hh³j".h´KubjÊ)�”}”(hŒ(struct gendisk *dev)”h]”jÐ)�”}”(hŒstruct gendisk *dev”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjz.h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjv.ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡.h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjv.ubh)�”}”(hhh]”j“)�”}”(hŒgendisk”h]”hŒgendisk”…”�”}”(hj˜.h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj•.ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jš.Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j j`.sbŒc.scsi_bios_ptable”†”asbuh1hhjv.ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸.h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjv.ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjÆ.h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjv.ubj“)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjÓ.h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjv.ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjr.ubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhj.h²hh³j".h´Kubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj .h²hh³j".h´Kubah}”(h]”j.ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j".h´Khj .h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ6Read PC partition table out of first sector of device.”h]”hŒ6Read PC partition table out of first sector of device.”…”�”}”(hjý.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:111: ./drivers/scsi/scsicam.c”h´Khjú.h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj .h²hh³j".h´Kubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj/jäj/jå‰jæ‰jç‰uh1jXh²hhjË-h³Nh´Nubjé)�”}”(hX**Parameters** ``struct gendisk *dev`` from this device **Description** Reads the first sector from the device and returns ``0x42`` bytes starting at offset ``0x1be``. **Return** partition table in kmalloc(GFP_KERNEL) memory, or NULL on error.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj/h]”hŒ Parameters”…”�”}”(hj!/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:111: ./drivers/scsi/scsicam.c”h´Khj/ubj7)�”}”(hhh]”j<)�”}”(hŒ)``struct gendisk *dev`` from this device ”h]”(jB)�”}”(hŒ``struct gendisk *dev``”h]”jH)�”}”(hj>/h]”hŒstruct gendisk *dev”…”�”}”(hj@/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j:5h´KÒhj;5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j:5h´KÒhjª4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjŽ4ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hj`5h]”hŒ Description”…”�”}”(hjb5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj^5ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:111: ./drivers/scsi/scsicam.c”h´KÔhjŽ4ubj7)�”}”(hhh]”j<)�”}”(hŒ�determine the BIOS mapping/geometry used for a drive in a SCSI-CAM system, storing the results in ip as required by the HDIO_GETGEO ioctl(). ”h]”(jB)�”}”(hŒ9determine the BIOS mapping/geometry used for a drive in a”h]”hŒ9determine the BIOS mapping/geometry used for a drive in a”…”�”}”(hj}5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:111: ./drivers/scsi/scsicam.c”h´KÖhjy5ubj^)�”}”(hhh]”hì)�”}”(hŒRSCSI-CAM system, storing the results in ip as required by the HDIO_GETGEO ioctl().”h]”hŒRSCSI-CAM system, storing the results in ip as required by the HDIO_GETGEO ioctl().”…”�”}”(hj�5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:111: ./drivers/scsi/scsicam.c”h´KÕhjŒ5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjy5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j‹5h´KÖhjv5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjŽ4ubhì)�”}”(hŒ **Return**”h]”jó)�”}”(hj²5h]”hŒReturn”…”�”}”(hj´5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj°5ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:111: ./drivers/scsi/scsicam.c”h´KØhjŽ4ubhì)�”}”(hŒ-1 on failure, 0 on success.”h]”hŒ-1 on failure, 0 on success.”…”�”}”(hjÈ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒW/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:111: ./drivers/scsi/scsicam.c”h´KØhjŽ4ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjË-h²hh³Nh´Nubeh}”(h]”Œdrivers-scsi-scsicam-c”ah ]”h"]”Œdrivers/scsi/scsicam.c”ah$]”h&]”uh1hµhj%h²hh³hÊh´Kiubh¶)�”}”(hhh]”(h»)�”}”(hŒdrivers/scsi/scsi_error.c”h]”hŒdrivers/scsi/scsi_error.c”…”�”}”(hjé5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjæ5h²hh³hÊh´Ksubhì)�”}”(hŒ,Common SCSI error/timeout handling routines.”h]”hŒ,Common SCSI error/timeout handling routines.”…”�”}”(hj÷5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Kuhjæ5h²hubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_schedule_eh (C function)”Œc.scsi_schedule_eh”hNt”auh1jGhjæ5h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ/void scsi_schedule_eh (struct Scsi_Host *shost)”h]”jd)�”}”(hŒ.void scsi_schedule_eh(struct Scsi_Host *shost)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj6h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´Kaubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-6h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj6h²hh³j,6h´Kaubj�)�”}”(hŒscsi_schedule_eh”h]”j“)�”}”(hŒscsi_schedule_eh”h]”hŒscsi_schedule_eh”…”�”}”(hj?6h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj;6ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj6h²hh³j,6h´KaubjÊ)�”}”(hŒ(struct Scsi_Host *shost)”h]”jÐ)�”}”(hŒstruct Scsi_Host *shost”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj[6h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjW6ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh6h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjW6ubh)�”}”(hhh]”j“)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hjy6h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjv6ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j{6Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jA6sbŒc.scsi_schedule_eh”†”asbuh1hhjW6ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™6h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjW6ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj§6h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjW6ubj“)�”}”(hŒshost”h]”hŒshost”…”�”}”(hj´6h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjW6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjS6ubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhj6h²hh³j,6h´Kaubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj6h²hh³j,6h´Kaubah}”(h]”j6ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j,6h´Kahj6h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒschedule EH for SCSI host”h]”hŒschedule EH for SCSI host”…”�”}”(hjÞ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´KahjÛ6h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj6h²hh³j,6h´Kaubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjö6jäjö6jå‰jæ‰jç‰uh1jXh²hhjæ5h³Nh´Nubjé)�”}”(hŒ…**Parameters** ``struct Scsi_Host *shost`` SCSI host to invoke error handling on. **Description** Schedule SCSI EH without scmd.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj7h]”hŒ Parameters”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjþ6ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´Kehjú6ubj7)�”}”(hhh]”j<)�”}”(hŒC``struct Scsi_Host *shost`` SCSI host to invoke error handling on. ”h]”(jB)�”}”(hŒ``struct Scsi_Host *shost``”h]”jH)�”}”(hj7h]”hŒstruct Scsi_Host *shost”…”�”}”(hj!7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´Kbhj7ubj^)�”}”(hhh]”hì)�”}”(hŒ&SCSI host to invoke error handling on.”h]”hŒ&SCSI host to invoke error handling on.”…”�”}”(hj87h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j47h´Kbhj57ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j47h´Kbhj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjú6ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjZ7h]”hŒ Description”…”�”}”(hj\7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjX7ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´Kdhjú6ubhì)�”}”(hŒSchedule SCSI EH without scmd.”h]”hŒSchedule SCSI EH without scmd.”…”�”}”(hjp7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´Kchjú6ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjæ5h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ.scsi_block_when_processing_errors (C function)”Œ#c.scsi_block_when_processing_errors”hNt”auh1jGhjæ5h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ@int scsi_block_when_processing_errors (struct scsi_device *sdev)”h]”jd)�”}”(hŒ?int scsi_block_when_processing_errors(struct scsi_device *sdev)”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hjŸ7h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj›7h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´M“ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®7h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj›7h²hh³j­7h´M“ubj�)�”}”(hŒ!scsi_block_when_processing_errors”h]”j“)�”}”(hŒ!scsi_block_when_processing_errors”h]”hŒ!scsi_block_when_processing_errors”…”�”}”(hjÀ7h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj¼7ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj›7h²hh³j­7h´M“ubjÊ)�”}”(hŒ(struct scsi_device *sdev)”h]”jÐ)�”}”(hŒstruct scsi_device *sdev”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjÜ7h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjØ7ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjé7h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjØ7ubh)�”}”(hhh]”j“)�”}”(hŒ scsi_device”h]”hŒ scsi_device”…”�”}”(hjú7h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj÷7ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jü7Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jÂ7sbŒ#c.scsi_block_when_processing_errors”†”asbuh1hhjØ7ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjØ7ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj(8h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjØ7ubj“)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hj58h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjØ7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjÔ7ubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhj›7h²hh³j­7h´M“ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj—7h²hh³j­7h´M“ubah}”(h]”j’7ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j­7h´M“hj”7h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒPrevent cmds from being queued.”h]”hŒPrevent cmds from being queued.”…”�”}”(hj_8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´M“hj\8h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj”7h²hh³j­7h´M“ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjw8jäjw8jå‰jæ‰jç‰uh1jXh²hhjæ5h³Nh´Nubjé)�”}”(hX;**Parameters** ``struct scsi_device *sdev`` Device on which we are performing recovery. **Description** We block until the host is out of error recovery, and then check to see whether the host or the device is offline. Return value: 0 when dev was taken offline by error recovery. 1 OK to proceed.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj�8h]”hŒ Parameters”…”�”}”(hjƒ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´M—hj{8ubj7)�”}”(hhh]”j<)�”}”(hŒI``struct scsi_device *sdev`` Device on which we are performing recovery. ”h]”(jB)�”}”(hŒ``struct scsi_device *sdev``”h]”jH)�”}”(hj 8h]”hŒstruct scsi_device *sdev”…”�”}”(hj¢8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjž8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´M”hjš8ubj^)�”}”(hhh]”hì)�”}”(hŒ+Device on which we are performing recovery.”h]”hŒ+Device on which we are performing recovery.”…”�”}”(hj¹8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jµ8h´M”hj¶8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjš8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jµ8h´M”hj—8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj{8ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjÛ8h]”hŒ Description”…”�”}”(hjÝ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÙ8ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´M–hj{8ubjt)�”}”(hŒsWe block until the host is out of error recovery, and then check to see whether the host or the device is offline. ”h]”hì)�”}”(hŒrWe block until the host is out of error recovery, and then check to see whether the host or the device is offline.”h]”hŒrWe block until the host is out of error recovery, and then check to see whether the host or the device is offline.”…”�”}”(hjõ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´M–hjñ8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jsh³j9h´M–hj{8ubj7)�”}”(hhh]”j<)�”}”(hŒNReturn value: 0 when dev was taken offline by error recovery. 1 OK to proceed.”h]”(jB)�”}”(hŒ Return value:”h]”hŒ Return value:”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´M™hj 9ubj^)�”}”(hhh]”hì)�”}”(hŒ@0 when dev was taken offline by error recovery. 1 OK to proceed.”h]”hŒ@0 when dev was taken offline by error recovery. 1 OK to proceed.”…”�”}”(hj#9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´Mšhj 9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj 9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j9h´M™hj 9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj{8ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjæ5h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_check_sense (C function)”Œc.scsi_check_sense”hNt”auh1jGhjæ5h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ?enum scsi_disposition scsi_check_sense (struct scsi_cmnd *scmd)”h]”jd)�”}”(hŒ>enum scsi_disposition scsi_check_sense(struct scsi_cmnd *scmd)”h]”(jj)�”}”(hŒenum”h]”hŒenum”…”�”}”(hjd9h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj`9h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´M.ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjs9h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj`9h²hh³jr9h´M.ubh)�”}”(hhh]”j“)�”}”(hŒscsi_disposition”h]”hŒscsi_disposition”…”�”}”(hj„9h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj�9ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j†9Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j Œscsi_check_sense”sbŒc.scsi_check_sense”†”asbuh1hhj`9h²hh³jr9h´M.ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥9h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj`9h²hh³jr9h´M.ubj�)�”}”(hŒscsi_check_sense”h]”j“)�”}”(hj¢9h]”hŒscsi_check_sense”…”�”}”(hj·9h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj³9ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj`9h²hh³jr9h´M.ubjÊ)�”}”(hŒ(struct scsi_cmnd *scmd)”h]”jÐ)�”}”(hŒstruct scsi_cmnd *scmd”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjÒ9h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjÎ9ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjß9h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÎ9ubh)�”}”(hhh]”j“)�”}”(hŒ scsi_cmnd”h]”hŒ scsi_cmnd”…”�”}”(hjð9h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjí9ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jò9Œmodname”NŒ classname”Njôj÷)�”}”jú]”j 9Œc.scsi_check_sense”†”asbuh1hhjÎ9ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÎ9ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjÎ9ubj“)�”}”(hŒscmd”h]”hŒscmd”…”�”}”(hj):h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÎ9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjÊ9ubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhj`9h²hh³jr9h´M.ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj\9h²hh³jr9h´M.ubah}”(h]”jW9ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jr9h´M.hjY9h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒExamine scsi cmd sense”h]”hŒExamine scsi cmd sense”…”�”}”(hjS:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´M.hjP:h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjY9h²hh³jr9h´M.ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjk:jäjk:jå‰jæ‰jç‰uh1jXh²hhjæ5h³Nh´Nubjé)�”}”(hX**Parameters** ``struct scsi_cmnd *scmd`` Cmd to have sense checked. **Description** Return value: SUCCESS or FAILED or NEEDS_RETRY or ADD_TO_MLQUEUE **Notes** When a deferred error is detected the current command has not been executed and needs retrying.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hju:h]”hŒ Parameters”…”�”}”(hjw:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjs:ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´M2hjo:ubj7)�”}”(hhh]”j<)�”}”(hŒ6``struct scsi_cmnd *scmd`` Cmd to have sense checked. ”h]”(jB)�”}”(hŒ``struct scsi_cmnd *scmd``”h]”jH)�”}”(hj”:h]”hŒstruct scsi_cmnd *scmd”…”�”}”(hj–:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj’:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´M/hjŽ:ubj^)�”}”(hhh]”hì)�”}”(hŒCmd to have sense checked.”h]”hŒCmd to have sense checked.”…”�”}”(hj­:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j©:h´M/hjª:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjŽ:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j©:h´M/hj‹:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjo:ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjÏ:h]”hŒ Description”…”�”}”(hjÑ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÍ:ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´M1hjo:ubj7)�”}”(hhh]”j<)�”}”(hŒAReturn value: SUCCESS or FAILED or NEEDS_RETRY or ADD_TO_MLQUEUE ”h]”(jB)�”}”(hŒ Return value:”h]”hŒ Return value:”…”�”}”(hjì:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´M1hjè:ubj^)�”}”(hhh]”hì)�”}”(hŒ2SUCCESS or FAILED or NEEDS_RETRY or ADD_TO_MLQUEUE”h]”hŒ2SUCCESS or FAILED or NEEDS_RETRY or ADD_TO_MLQUEUE”…”�”}”(hjþ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jú:h´M1hjû:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjè:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jú:h´M1hjå:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjo:ubhì)�”}”(hŒ **Notes**”h]”jó)�”}”(hj ;h]”hŒNotes”…”�”}”(hj";h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´M3hjo:ubjt)�”}”(hŒ_When a deferred error is detected the current command has not been executed and needs retrying.”h]”hì)�”}”(hŒ_When a deferred error is detected the current command has not been executed and needs retrying.”h]”hŒ_When a deferred error is detected the current command has not been executed and needs retrying.”…”�”}”(hj:;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´M4hj6;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jsh³jH;h´M4hjo:ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjæ5h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_eh_prep_cmnd (C function)”Œc.scsi_eh_prep_cmnd”hNt”auh1jGhjæ5h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒƒvoid scsi_eh_prep_cmnd (struct scsi_cmnd *scmd, struct scsi_eh_save *ses, unsigned char *cmnd, int cmnd_size, unsigned sense_bytes)”h]”jd)�”}”(hŒ‚void scsi_eh_prep_cmnd(struct scsi_cmnd *scmd, struct scsi_eh_save *ses, unsigned char *cmnd, int cmnd_size, unsigned sense_bytes)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjo;h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjk;h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´M6ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~;h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjk;h²hh³j};h´M6ubj�)�”}”(hŒscsi_eh_prep_cmnd”h]”j“)�”}”(hŒscsi_eh_prep_cmnd”h]”hŒscsi_eh_prep_cmnd”…”�”}”(hj�;h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjŒ;ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjk;h²hh³j};h´M6ubjÊ)�”}”(hŒl(struct scsi_cmnd *scmd, struct scsi_eh_save *ses, unsigned char *cmnd, int cmnd_size, unsigned sense_bytes)”h]”(jÐ)�”}”(hŒstruct scsi_cmnd *scmd”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj¬;h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj¨;ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹;h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj¨;ubh)�”}”(hhh]”j“)�”}”(hŒ scsi_cmnd”h]”hŒ scsi_cmnd”…”�”}”(hjÊ;h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÇ;ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jÌ;Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j j’;sbŒc.scsi_eh_prep_cmnd”†”asbuh1hhj¨;ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjê;h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj¨;ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjø;h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj¨;ubj“)�”}”(hŒscmd”h]”hŒscmd”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj¨;ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj¤;ubjÐ)�”}”(hŒstruct scsi_eh_save *ses”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj<ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+<h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj<ubh)�”}”(hhh]”j“)�”}”(hŒ scsi_eh_save”h]”hŒ scsi_eh_save”…”�”}”(hj<<h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj9<ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j><Œmodname”NŒ classname”Njôj÷)�”}”jú]”jæ;Œc.scsi_eh_prep_cmnd”†”asbuh1hhj<ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZ<h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj<ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjh<h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj<ubj“)�”}”(hŒses”h]”hŒses”…”�”}”(hju<h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj<ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj¤;ubjÐ)�”}”(hŒunsigned char *cmnd”h]”(j’)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjŽ<h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjŠ<ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœ<h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjŠ<ubj’)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjª<h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjŠ<ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸<h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjŠ<ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjÆ<h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjŠ<ubj“)�”}”(hŒcmnd”h]”hŒcmnd”…”�”}”(hjÓ<h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjŠ<ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj¤;ubjÐ)�”}”(hŒ int cmnd_size”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hjì<h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjè<ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjú<h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjè<ubj“)�”}”(hŒ cmnd_size”h]”hŒ cmnd_size”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjè<ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj¤;ubjÐ)�”}”(hŒunsigned sense_bytes”h]”(j’)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj!=h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj=ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/=h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj=ubj“)�”}”(hŒ sense_bytes”h]”hŒ sense_bytes”…”�”}”(hj==h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj=ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj¤;ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjk;h²hh³j};h´M6ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjg;h²hh³j};h´M6ubah}”(h]”jb;ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j};h´M6hjd;h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ2Save a scsi command info as part of error recovery”h]”hŒ2Save a scsi command info as part of error recovery”…”�”}”(hjg=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´M6hjd=h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjd;h²hh³j};h´M6ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj=jäj=jå‰jæ‰jç‰uh1jXh²hhjæ5h³Nh´Nubjé)�”}”(hX **Parameters** ``struct scsi_cmnd *scmd`` SCSI command structure to hijack ``struct scsi_eh_save *ses`` structure to save restore information ``unsigned char *cmnd`` CDB to send. Can be NULL if no new cmnd is needed ``int cmnd_size`` size in bytes of **cmnd** (must be <= MAX_COMMAND_SIZE) ``unsigned sense_bytes`` size of sense data to copy. or 0 (if != 0 **cmnd** is ignored) **Description** This function is used to save a scsi command information before re-execution as part of the error recovery process. If **sense_bytes** is 0 the command sent must be one that does not transfer any data. If **sense_bytes** != 0 **cmnd** is ignored and this functions sets up a REQUEST_SENSE command and cmnd buffers to read **sense_bytes** into **scmd->sense_buffer**.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj‰=h]”hŒ Parameters”…”�”}”(hj‹=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj‡=ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´M:hjƒ=ubj7)�”}”(hhh]”(j<)�”}”(hŒ<``struct scsi_cmnd *scmd`` SCSI command structure to hijack ”h]”(jB)�”}”(hŒ``struct scsi_cmnd *scmd``”h]”jH)�”}”(hj¨=h]”hŒstruct scsi_cmnd *scmd”…”�”}”(hjª=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj¦=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´M7hj¢=ubj^)�”}”(hhh]”hì)�”}”(hŒ SCSI command structure to hijack”h]”hŒ SCSI command structure to hijack”…”�”}”(hjÁ=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j½=h´M7hj¾=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj¢=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j½=h´M7hjŸ=ubj<)�”}”(hŒC``struct scsi_eh_save *ses`` structure to save restore information ”h]”(jB)�”}”(hŒ``struct scsi_eh_save *ses``”h]”jH)�”}”(hjá=h]”hŒstruct scsi_eh_save *ses”…”�”}”(hjã=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjß=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´M8hjÛ=ubj^)�”}”(hhh]”hì)�”}”(hŒ%structure to save restore information”h]”hŒ%structure to save restore information”…”�”}”(hjú=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jö=h´M8hj÷=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÛ=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jö=h´M8hjŸ=ubj<)�”}”(hŒJ``unsigned char *cmnd`` CDB to send. Can be NULL if no new cmnd is needed ”h]”(jB)�”}”(hŒ``unsigned char *cmnd``”h]”jH)�”}”(hj>h]”hŒunsigned char *cmnd”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´M9hj>ubj^)�”}”(hhh]”hì)�”}”(hŒ1CDB to send. Can be NULL if no new cmnd is needed”h]”hŒ1CDB to send. Can be NULL if no new cmnd is needed”…”�”}”(hj3>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j/>h´M9hj0>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j/>h´M9hjŸ=ubj<)�”}”(hŒJ``int cmnd_size`` size in bytes of **cmnd** (must be <= MAX_COMMAND_SIZE) ”h]”(jB)�”}”(hŒ``int cmnd_size``”h]”jH)�”}”(hjS>h]”hŒ int cmnd_size”…”�”}”(hjU>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjQ>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´M:hjM>ubj^)�”}”(hhh]”hì)�”}”(hŒ7size in bytes of **cmnd** (must be <= MAX_COMMAND_SIZE)”h]”(hŒsize in bytes of ”…”�”}”(hjl>h²hh³Nh´Nubjó)�”}”(hŒ**cmnd**”h]”hŒcmnd”…”�”}”(hjt>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjl>ubhŒ (must be <= MAX_COMMAND_SIZE)”…”�”}”(hjl>h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jh>h´M:hji>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjM>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jh>h´M:hjŸ=ubj<)�”}”(hŒX``unsigned sense_bytes`` size of sense data to copy. or 0 (if != 0 **cmnd** is ignored) ”h]”(jB)�”}”(hŒ``unsigned sense_bytes``”h]”jH)�”}”(hjž>h]”hŒunsigned sense_bytes”…”�”}”(hj >h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjœ>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´M;hj˜>ubj^)�”}”(hhh]”hì)�”}”(hŒ>size of sense data to copy. or 0 (if != 0 **cmnd** is ignored)”h]”(hŒ*size of sense data to copy. or 0 (if != 0 ”…”�”}”(hj·>h²hh³Nh´Nubjó)�”}”(hŒ**cmnd**”h]”hŒcmnd”…”�”}”(hj¿>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj·>ubhŒ is ignored)”…”�”}”(hj·>h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j³>h´M;hj´>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj˜>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j³>h´M;hjŸ=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjƒ=ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjë>h]”hŒ Description”…”�”}”(hjí>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjé>ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´M=hjƒ=ubhì)�”}”(hXpThis function is used to save a scsi command information before re-execution as part of the error recovery process. If **sense_bytes** is 0 the command sent must be one that does not transfer any data. If **sense_bytes** != 0 **cmnd** is ignored and this functions sets up a REQUEST_SENSE command and cmnd buffers to read **sense_bytes** into **scmd->sense_buffer**.”h]”(hŒxThis function is used to save a scsi command information before re-execution as part of the error recovery process. If ”…”�”}”(hj?h²hh³Nh´Nubjó)�”}”(hŒ**sense_bytes**”h]”hŒ sense_bytes”…”�”}”(hj ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj?ubhŒH is 0 the command sent must be one that does not transfer any data. If ”…”�”}”(hj?h²hh³Nh´Nubjó)�”}”(hŒ**sense_bytes**”h]”hŒ sense_bytes”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj?ubhŒ != 0 ”…”�”}”(hj?h²hh³Nh´Nubjó)�”}”(hŒ**cmnd**”h]”hŒcmnd”…”�”}”(hj-?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj?ubhŒX is ignored and this functions sets up a REQUEST_SENSE command and cmnd buffers to read ”…”�”}”(hj?h²hh³Nh´Nubjó)�”}”(hŒ**sense_bytes**”h]”hŒ sense_bytes”…”�”}”(hj??h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj?ubhŒ into ”…”�”}”(hj?h²hh³Nh´Nubjó)�”}”(hŒ**scmd->sense_buffer**”h]”hŒscmd->sense_buffer”…”�”}”(hjQ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj?ubhŒ.”…”�”}”(hj?h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´M<hjƒ=ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjæ5h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ!scsi_eh_restore_cmnd (C function)”Œc.scsi_eh_restore_cmnd”hNt”auh1jGhjæ5h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒLvoid scsi_eh_restore_cmnd (struct scsi_cmnd* scmd, struct scsi_eh_save *ses)”h]”jd)�”}”(hŒKvoid scsi_eh_restore_cmnd(struct scsi_cmnd *scmd, struct scsi_eh_save *ses)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjŠ?h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj†?h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´M’ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™?h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj†?h²hh³j˜?h´M’ubj�)�”}”(hŒscsi_eh_restore_cmnd”h]”j“)�”}”(hŒscsi_eh_restore_cmnd”h]”hŒscsi_eh_restore_cmnd”…”�”}”(hj«?h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj§?ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj†?h²hh³j˜?h´M’ubjÊ)�”}”(hŒ2(struct scsi_cmnd *scmd, struct scsi_eh_save *ses)”h]”(jÐ)�”}”(hŒstruct scsi_cmnd *scmd”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjÇ?h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjÃ?ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔ?h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÃ?ubh)�”}”(hhh]”j“)�”}”(hŒ scsi_cmnd”h]”hŒ scsi_cmnd”…”�”}”(hjå?h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjâ?ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jç?Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j j­?sbŒc.scsi_eh_restore_cmnd”†”asbuh1hhjÃ?ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÃ?ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjÃ?ubj“)�”}”(hŒscmd”h]”hŒscmd”…”�”}”(hj @h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÃ?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj¿?ubjÐ)�”}”(hŒstruct scsi_eh_save *ses”h]”(jj)�”}”(hjmh]”•ihŒstruct”…”�”}”(hj9@h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj5@ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjF@h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj5@ubh)�”}”(hhh]”j“)�”}”(hŒ scsi_eh_save”h]”hŒ scsi_eh_save”…”�”}”(hjW@h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjT@ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jY@Œmodname”NŒ classname”Njôj÷)�”}”jú]”j@Œc.scsi_eh_restore_cmnd”†”asbuh1hhj5@ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hju@h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj5@ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjƒ@h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj5@ubj“)�”}”(hŒses”h]”hŒses”…”�”}”(hj�@h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj5@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²ˆuh1jcj³j´hj‚?h²hh³j˜?h´M’ubah}”(h]”j}?ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j˜?h´M’hj?h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ5Restore a scsi command info as part of error recovery”h]”hŒ5Restore a scsi command info as part of error recovery”…”�”}”(hjº@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´M’hj·@h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj?h²hh³j˜?h´M’ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjÒ@jäjÒ@jå‰jæ‰jç‰uh1jXh²hhjæ5h³Nh´Nubjé)�”}”(hŒó**Parameters** ``struct scsi_cmnd* scmd`` SCSI command structure to restore ``struct scsi_eh_save *ses`` saved information from a coresponding call to scsi_eh_prep_cmnd **Description** Undo any damage done by above scsi_eh_prep_cmnd().”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjÜ@h]”hŒ Parameters”…”�”}”(hjÞ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÚ@ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´M–hjÖ@ubj7)�”}”(hhh]”(j<)�”}”(hŒ=``struct scsi_cmnd* scmd`` SCSI command structure to restore ”h]”(jB)�”}”(hŒ``struct scsi_cmnd* scmd``”h]”jH)�”}”(hjû@h]”hŒstruct scsi_cmnd* scmd”…”�”}”(hjý@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjù@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´M“hjõ@ubj^)�”}”(hhh]”hì)�”}”(hŒ!SCSI command structure to restore”h]”hŒ!SCSI command structure to restore”…”�”}”(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Œ]``struct scsi_eh_save *ses`` saved information from a coresponding call to scsi_eh_prep_cmnd ”h]”(jB)�”}”(hŒ``struct scsi_eh_save *ses``”h]”jH)�”}”(hj4Ah]”hŒstruct scsi_eh_save *ses”…”�”}”(hj6Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj2Aubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´M”hj.Aubj^)�”}”(hhh]”hì)�”}”(hŒ?saved information from a coresponding call to scsi_eh_prep_cmnd”h]”hŒ?saved information from a coresponding call to scsi_eh_prep_cmnd”…”�”}”(hjMAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jIAh´M”hjJAubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj.Aubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jIAh´M”hjò@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjÖ@ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjoAh]”hŒ Description”…”�”}”(hjqAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjmAubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´M–hjÖ@ubhì)�”}”(hŒ2Undo any damage done by above scsi_eh_prep_cmnd().”h]”hŒ2Undo any damage done by above scsi_eh_prep_cmnd().”…”�”}”(hj…Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´M•hjÖ@ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjæ5h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_eh_finish_cmd (C function)”Œc.scsi_eh_finish_cmd”hNt”auh1jGhjæ5h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒJvoid scsi_eh_finish_cmd (struct scsi_cmnd *scmd, struct list_head *done_q)”h]”jd)�”}”(hŒIvoid scsi_eh_finish_cmd(struct scsi_cmnd *scmd, struct list_head *done_q)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj´Ah²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj°Ah²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´M?ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃAh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj°Ah²hh³jÂAh´M?ubj�)�”}”(hŒscsi_eh_finish_cmd”h]”j“)�”}”(hŒscsi_eh_finish_cmd”h]”hŒscsi_eh_finish_cmd”…”�”}”(hjÕAh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÑAubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj°Ah²hh³jÂAh´M?ubjÊ)�”}”(hŒ2(struct scsi_cmnd *scmd, struct list_head *done_q)”h]”(jÐ)�”}”(hŒstruct scsi_cmnd *scmd”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjñAh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjíAubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþAh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjíAubh)�”}”(hhh]”j“)�”}”(hŒ scsi_cmnd”h]”hŒ scsi_cmnd”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj Bubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jBŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j j×AsbŒc.scsi_eh_finish_cmd”†”asbuh1hhjíAubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/Bh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjíAubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj=Bh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjíAubj“)�”}”(hŒscmd”h]”hŒscmd”…”�”}”(hjJBh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjíAubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjéAubjÐ)�”}”(hŒstruct list_head *done_q”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjcBh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj_Bubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjpBh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj_Bubh)�”}”(hhh]”j“)�”}”(hŒ list_head”h]”hŒ list_head”…”�”}”(hj�Bh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj~Bubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jƒBŒmodname”NŒ classname”Njôj÷)�”}”jú]”j+BŒc.scsi_eh_finish_cmd”†”asbuh1hhj_Bubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸBh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj_Bubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj­Bh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj_Bubj“)�”}”(hŒdone_q”h]”hŒdone_q”…”�”}”(hjºBh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj_Bubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjéAubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhj°Ah²hh³jÂAh´M?ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj¬Ah²hh³jÂAh´M?ubah}”(h]”j§Aah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jÂAh´M?hj©Ah²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ&Handle a cmd that eh is finished with.”h]”hŒ&Handle a cmd that eh is finished with.”…”�”}”(hjäBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´M?hjáBh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj©Ah²hh³jÂAh´M?ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjüBjäjüBjå‰jæ‰jç‰uh1jXh²hhjæ5h³Nh´Nubjé)�”}”(hXø**Parameters** ``struct scsi_cmnd *scmd`` Original SCSI cmd that eh has finished. ``struct list_head *done_q`` Queue for processed commands. **Notes** We don't want to use the normal command completion while we are are still handling errors - it may cause other commands to be queued, and that would disturb what we are doing. Thus we really want to keep a list of pending commands for final completion, and once we are ready to leave error handling we handle completion for real.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjCh]”hŒ Parameters”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjCubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´MChjCubj7)�”}”(hhh]”(j<)�”}”(hŒC``struct scsi_cmnd *scmd`` Original SCSI cmd that eh has finished. ”h]”(jB)�”}”(hŒ``struct scsi_cmnd *scmd``”h]”jH)�”}”(hj%Ch]”hŒstruct scsi_cmnd *scmd”…”�”}”(hj'Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj#Cubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´M@hjCubj^)�”}”(hhh]”hì)�”}”(hŒ'Original SCSI cmd that eh has finished.”h]”hŒ'Original SCSI cmd that eh has finished.”…”�”}”(hj>Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j:Ch´M@hj;Cubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjCubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j:Ch´M@hjCubj<)�”}”(hŒ;``struct list_head *done_q`` Queue for processed commands. ”h]”(jB)�”}”(hŒ``struct list_head *done_q``”h]”jH)�”}”(hj^Ch]”hŒstruct list_head *done_q”…”�”}”(hj`Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj\Cubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´MAhjXCubj^)�”}”(hhh]”hì)�”}”(hŒQueue for processed commands.”h]”hŒQueue for processed commands.”…”�”}”(hjwCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jsCh´MAhjtCubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjXCubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jsCh´MAhjCubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjCubhì)�”}”(hŒ **Notes**”h]”jó)�”}”(hj™Ch]”hŒNotes”…”�”}”(hj›Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj—Cubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´MChjCubjt)�”}”(hXJWe don't want to use the normal command completion while we are are still handling errors - it may cause other commands to be queued, and that would disturb what we are doing. Thus we really want to keep a list of pending commands for final completion, and once we are ready to leave error handling we handle completion for real.”h]”hì)�”}”(hXJWe don't want to use the normal command completion while we are are still handling errors - it may cause other commands to be queued, and that would disturb what we are doing. Thus we really want to keep a list of pending commands for final completion, and once we are ready to leave error handling we handle completion for real.”h]”hXLWe don’t want to use the normal command completion while we are are still handling errors - it may cause other commands to be queued, and that would disturb what we are doing. Thus we really want to keep a list of pending commands for final completion, and once we are ready to leave error handling we handle completion for real.”…”�”}”(hj³Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´MChj¯Cubah}”(h]”h ]”h"]”h$]”h&]”uh1jsh³jÁCh´MChjCubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjæ5h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_eh_get_sense (C function)”Œc.scsi_eh_get_sense”hNt”auh1jGhjæ5h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒJint scsi_eh_get_sense (struct list_head *work_q, struct list_head *done_q)”h]”jd)�”}”(hŒIint scsi_eh_get_sense(struct list_head *work_q, struct list_head *done_q)”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hjèCh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjäCh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´MQubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷Ch²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjäCh²hh³jöCh´MQubj�)�”}”(hŒscsi_eh_get_sense”h]”j“)�”}”(hŒscsi_eh_get_sense”h]”hŒscsi_eh_get_sense”…”�”}”(hj Dh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjDubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjäCh²hh³jöCh´MQubjÊ)�”}”(hŒ4(struct list_head *work_q, struct list_head *done_q)”h]”(jÐ)�”}”(hŒstruct list_head *work_q”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj%Dh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj!Dubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2Dh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj!Dubh)�”}”(hhh]”j“)�”}”(hŒ list_head”h]”hŒ list_head”…”�”}”(hjCDh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj@Dubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jEDŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j j DsbŒc.scsi_eh_get_sense”†”asbuh1hhj!Dubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjcDh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj!Dubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjqDh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj!Dubj“)�”}”(hŒwork_q”h]”hŒwork_q”…”�”}”(hj~Dh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj!Dubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjDubjÐ)�”}”(hŒstruct list_head *done_q”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj—Dh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj“Dubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤Dh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj“Dubh)�”}”(hhh]”j“)�”}”(hŒ list_head”h]”hŒ list_head”…”�”}”(hjµDh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj²Dubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j·DŒmodname”NŒ classname”Njôj÷)�”}”jú]”j_DŒc.scsi_eh_get_sense”†”asbuh1hhj“Dubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓDh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj“Dubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjáDh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj“Dubj“)�”}”(hŒdone_q”h]”hŒdone_q”…”�”}”(hjîDh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj“Dubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjDubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjäCh²hh³jöCh´MQubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjàCh²hh³jöCh´MQubah}”(h]”jÛCah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jöCh´MQhjÝCh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒGet device sense data.”h]”hŒGet device sense data.”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´MQhjEh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjÝCh²hh³jöCh´MQubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj0Ejäj0Ejå‰jæ‰jç‰uh1jXh²hhjæ5h³Nh´Nubjé)�”}”(hXµ**Parameters** ``struct list_head *work_q`` Queue of commands to process. ``struct list_head *done_q`` Queue of processed commands. **Description** See if we need to request sense information. if so, then get it now, so we have a better idea of what to do. **Notes** This has the unfortunate side effect that if a shost adapter does not automatically request sense information, we end up shutting it down before we request it. All drivers should request sense information internally these days, so for now all I have to say is tough noogies if you end up in here. XXX: Long term this code should go away, but that needs an audit of all LLDDs first.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj:Eh]”hŒ Parameters”…”�”}”(hjJh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjvIh²hh³j�Ih´MÞubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjYJjäjYJjå‰jæ‰jç‰uh1jXh²hhjæ5h³Nh´Nubjé)�”}”(hŒO**Parameters** ``struct list_head *done_q`` list_head of processed commands.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjcJh]”hŒ Parameters”…”�”}”(hjeJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjaJubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´Mâhj]Jubj7)�”}”(hhh]”j<)�”}”(hŒ=``struct list_head *done_q`` list_head of processed commands.”h]”(jB)�”}”(hŒ``struct list_head *done_q``”h]”jH)�”}”(hj‚Jh]”hŒstruct list_head *done_q”…”�”}”(hj„Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj€Jubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´Mähj|Jubj^)�”}”(hhh]”hì)�”}”(hŒ list_head of processed commands.”h]”hŒ list_head of processed commands.”…”�”}”(hj›Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´Mßhj˜Jubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj|Jubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j—Jh´MähjyJubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj]Jubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjæ5h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ"scsi_report_bus_reset (C function)”Œc.scsi_report_bus_reset”hNt”auh1jGhjæ5h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒAvoid scsi_report_bus_reset (struct Scsi_Host *shost, int channel)”h]”jd)�”}”(hŒ@void scsi_report_bus_reset(struct Scsi_Host *shost, int channel)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÜJh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjØJh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´MŽ ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëJh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjØJh²hh³jêJh´MŽ ubj�)�”}”(hŒscsi_report_bus_reset”h]”j“)�”}”(hŒscsi_report_bus_reset”h]”hŒscsi_report_bus_reset”…”�”}”(hjýJh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjùJubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjØJh²hh³jêJh´MŽ ubjÊ)�”}”(hŒ&(struct Scsi_Host *shost, int channel)”h]”(jÐ)�”}”(hŒstruct Scsi_Host *shost”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjKubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&Kh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjKubh)�”}”(hhh]”j“)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hj7Kh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj4Kubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j9KŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jÿJsbŒc.scsi_report_bus_reset”†”asbuh1hhjKubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWKh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjKubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjeKh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjKubj“)�”}”(hŒshost”h]”hŒshost”…”�”}”(hjrKh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjKubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjKubjÐ)�”}”(hŒ int channel”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hj‹Kh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj‡Kubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™Kh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj‡Kubj“)�”}”(hŒchannel”h]”hŒchannel”…”�”}”(hj§Kh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj‡Kubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjKubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjØJh²hh³jêJh´MŽ ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjÔJh²hh³jêJh´MŽ ubah}”(h]”jÏJah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jêJh´MŽ hjÑJh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒreport bus reset observed”h]”hŒreport bus reset observed”…”�”}”(hjÑKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´MŽ hjÎKh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjÑJh²hh³jêJh´MŽ ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjéKjäjéKjå‰jæ‰jç‰uh1jXh²hhjæ5h³Nh´Nubjé)�”}”(hX—**Parameters** ``struct Scsi_Host *shost`` Host in question ``int channel`` channel on which reset was observed. **Description** Utility function used by low-level drivers to report that they have observed a bus reset on the bus being handled. Lock status: Host lock must be held. **Return** Nothing **Notes** This only needs to be called if the reset is one which originates from an unknown location. Resets originated by the mid-level itself don't need to call this, but there should be no harm. The main purpose of this is to make sure that a CHECK_CONDITION is properly treated.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjóKh]”hŒ Parameters”…”�”}”(hjõKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjñKubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´M’ hjíKubj7)�”}”(hhh]”(j<)�”}”(hŒ-``struct Scsi_Host *shost`` Host in question ”h]”(jB)�”}”(hŒ``struct Scsi_Host *shost``”h]”jH)�”}”(hjLh]”hŒstruct Scsi_Host *shost”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjLubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´M“ hj Lubj^)�”}”(hhh]”hì)�”}”(hŒHost in question”h]”hŒHost in question”…”�”}”(hj+Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j'Lh´M“ hj(Lubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj Lubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j'Lh´M“ hj Lubj<)�”}”(hŒ5``int channel`` channel on which reset was observed. ”h]”(jB)�”}”(hŒ``int channel``”h]”jH)�”}”(hjKLh]”hŒ int channel”…”�”}”(hjMLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjILubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´M” hjELubj^)�”}”(hhh]”hì)�”}”(hŒ$channel on which reset was observed.”h]”hŒ$channel on which reset was observed.”…”�”}”(hjdLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j`Lh´M” hjaLubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjELubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j`Lh´M” hj Lubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjíKubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hj†Lh]”hŒ Description”…”�”}”(hjˆLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj„Lubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´M– hjíKubhì)�”}”(hŒrUtility function used by low-level drivers to report that they have observed a bus reset on the bus being handled.”h]”hŒrUtility function used by low-level drivers to report that they have observed a bus reset on the bus being handled.”…”�”}”(hjœLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´M� hjíKubhì)�”}”(hŒ$Lock status: Host lock must be held.”h]”hŒ$Lock status: Host lock must be held.”…”�”}”(hj«Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´M“ hjíKubhì)�”}”(hŒ **Return**”h]”jó)�”}”(hj¼Lh]”hŒReturn”…”�”}”(hj¾Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjºLubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´M• hjíKubhì)�”}”(hŒNothing”h]”hŒNothing”…”�”}”(hjÒLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´M– hjíKubhì)�”}”(hŒ **Notes**”h]”jó)�”}”(hjãLh]”hŒNotes”…”�”}”(hjåLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjáLubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´M˜ hjíKubj7)�”}”(hhh]”j<)�”}”(hXThis only needs to be called if the reset is one which originates from an unknown location. Resets originated by the mid-level itself don't need to call this, but there should be no harm. The main purpose of this is to make sure that a CHECK_CONDITION is properly treated.”h]”(jB)�”}”(hŒ6This only needs to be called if the reset is one which”h]”hŒ6This only needs to be called if the reset is one which”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´MŸ hjüLubj^)�”}”(hhh]”(hì)�”}”(hŒ…originates from an unknown location. Resets originated by the mid-level itself don't need to call this, but there should be no harm.”h]”hŒ‡originates from an unknown location. Resets originated by the mid-level itself don’t need to call this, but there should be no harm.”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´M› hjMubhì)�”}”(hŒTThe main purpose of this is to make sure that a CHECK_CONDITION is properly treated.”h]”hŒTThe main purpose of this is to make sure that a CHECK_CONDITION is properly treated.”…”�”}”(hj!Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jMh´MŸ hjMubeh}”(h]”h ]”h"]”h$]”h&]”uh1j]hjüLubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jMh´MŸ hjùLubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjíKubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjæ5h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ%scsi_report_device_reset (C function)”Œc.scsi_report_device_reset”hNt”auh1jGhjæ5h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒPvoid scsi_report_device_reset (struct Scsi_Host *shost, int channel, int target)”h]”jd)�”}”(hŒOvoid scsi_report_device_reset(struct Scsi_Host *shost, int channel, int target)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjaMh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj]Mh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´M® ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjpMh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj]Mh²hh³joMh´M® ubj�)�”}”(hŒscsi_report_device_reset”h]”j“)�”}”(hŒscsi_report_device_reset”h]”hŒscsi_report_device_reset”…”�”}”(hj‚Mh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj~Mubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj]Mh²hh³joMh´M® ubjÊ)�”}”(hŒ2(struct Scsi_Host *shost, int channel, int target)”h]”(jÐ)�”}”(hŒstruct Scsi_Host *shost”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjžMh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjšMubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«Mh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjšMubh)�”}”(hhh]”j“)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hj¼Mh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj¹Mubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j¾MŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j j„MsbŒc.scsi_report_device_reset”†”asbuh1hhjšMubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜMh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjšMubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjêMh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjšMubj“)�”}”(hŒshost”h]”hŒshost”…”�”}”(hj÷Mh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjšMubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj–MubjÐ)�”}”(hŒ int channel”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj Nubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj Nubj“)�”}”(hŒchannel”h]”hŒchannel”…”�”}”(hj,Nh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj Nubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj–MubjÐ)�”}”(hŒ int target”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hjENh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjANubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSNh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjANubj“)�”}”(hŒtarget”h]”hŒtarget”…”�”}”(hjaNh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjANubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj–Mubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhj]Mh²hh³joMh´M® ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjYMh²hh³joMh´M® ubah}”(h]”jTMah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³joMh´M® hjVMh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒreport device reset observed”h]”hŒreport device reset observed”…”�”}”(hj‹Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´M® hjˆNh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjVMh²hh³joMh´M® ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj£Njäj£Njå‰jæ‰jç‰uh1jXh²hhjæ5h³Nh´Nubjé)�”}”(hXÐ**Parameters** ``struct Scsi_Host *shost`` Host in question ``int channel`` channel on which reset was observed ``int target`` target on which reset was observed **Description** Utility function used by low-level drivers to report that they have observed a device reset on the device being handled. Lock status: Host lock must be held **Return** Nothing **Notes** This only needs to be called if the reset is one which originates from an unknown location. Resets originated by the mid-level itself don't need to call this, but there should be no harm. The main purpose of this is to make sure that a CHECK_CONDITION is properly treated.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj­Nh]”hŒ Parameters”…”�”}”(hj¯Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj«Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´M² hj§Nubj7)�”}”(hhh]”(j<)�”}”(hŒ-``struct Scsi_Host *shost`` Host in question ”h]”(jB)�”}”(hŒ``struct Scsi_Host *shost``”h]”jH)�”}”(hjÌNh]”hŒstruct Scsi_Host *shost”…”�”}”(hjÎNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjÊNubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´M³ hjÆNubj^)�”}”(hhh]”hì)�”}”(hŒHost in question”h]”hŒHost in question”…”�”}”(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³ hjÃNubj<)�”}”(hŒ4``int channel`` channel on which reset was observed ”h]”(jB)�”}”(hŒ``int channel``”h]”jH)�”}”(hjOh]”hŒ int channel”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjOubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´M´ hjÿNubj^)�”}”(hhh]”hì)�”}”(hŒ#channel on which reset was observed”h]”hŒ#channel on which reset was observed”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jOh´M´ hjOubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÿNubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jOh´M´ hjÃNubj<)�”}”(hŒ2``int target`` target on which reset was observed ”h]”(jB)�”}”(hŒ``int target``”h]”jH)�”}”(hj>Oh]”hŒ int target”…”�”}”(hj@Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj hjRubj^)�”}”(hhh]”hì)�”}”(hŒ%number of valid bytes in sense_buffer”h]”hŒ%number of valid bytes in sense_buffer”…”�”}”(hj1Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j-Rh´M> hj.Rubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjRubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j-Rh´M> hjÖQubj<)�”}”(hŒe``u64 *info_out`` pointer to 64 integer where 8 or 4 byte information field will be placed if found. ”h]”(jB)�”}”(hŒ``u64 *info_out``”h]”jH)�”}”(hjQRh]”hŒ u64 *info_out”…”�”}”(hjSRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjORubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´M@ hjKRubj^)�”}”(hhh]”hì)�”}”(hŒRpointer to 64 integer where 8 or 4 byte information field will be placed if found.”h]”hŒRpointer to 64 integer where 8 or 4 byte information field will be placed if found.”…”�”}”(hjjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´M? hjgRubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjKRubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jfRh´M@ hjÖQubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjºQubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hj�Rh]”hŒ Description”…”�”}”(hj�Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj‹Rubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´MB hjºQubj7)�”}”(hhh]”j<)�”}”(hŒBReturn value: true if information field found, false if not found.”h]”(jB)�”}”(hŒ Return value:”h]”hŒ Return value:”…”�”}”(hjªRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´MA hj¦Rubj^)�”}”(hhh]”hì)�”}”(hŒ4true if information field found, false if not found.”h]”hŒ4true if information field found, false if not found.”…”�”}”(hj¼Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:119: ./drivers/scsi/scsi_error.c”h´MB hj¹Rubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj¦Rubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j¸Rh´MA hj£Rubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjºQubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjæ5h²hh³Nh´Nubeh}”(h]”Œdrivers-scsi-scsi-error-c”ah ]”h"]”Œdrivers/scsi/scsi_error.c”ah$]”h&]”uh1hµhj%h²hh³hÊh´Ksubh¶)�”}”(hhh]”(h»)�”}”(hŒdrivers/scsi/scsi_devinfo.c”h]”hŒdrivers/scsi/scsi_devinfo.c”…”�”}”(hjïRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjìRh²hh³hÊh´K{ubhì)�”}”(hŒLManage scsi_dev_info_list, which tracks blacklisted and whitelisted devices.”h]”hŒLManage scsi_dev_info_list, which tracks blacklisted and whitelisted devices.”…”�”}”(hjýRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K}hjìRh²hubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ)scsi_dev_info_list_add_keyed (C function)”Œc.scsi_dev_info_list_add_keyed”hNt”auh1jGhjìRh²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒŒint scsi_dev_info_list_add_keyed (int compatible, char *vendor, char *model, char *strflags, blist_flags_t flags, enum scsi_devinfo_key key)”h]”jd)�”}”(hŒ‹int scsi_dev_info_list_add_keyed(int compatible, char *vendor, char *model, char *strflags, blist_flags_t flags, enum scsi_devinfo_key key)”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hj$Sh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj Sh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:128: ./drivers/scsi/scsi_devinfo.c”h´MKubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3Sh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj Sh²hh³j2Sh´MKubj�)�”}”(hŒscsi_dev_info_list_add_keyed”h]”j“)�”}”(hŒscsi_dev_info_list_add_keyed”h]”hŒscsi_dev_info_list_add_keyed”…”�”}”(hjESh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjASubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj Sh²hh³j2Sh´MKubjÊ)�”}”(hŒk(int compatible, char *vendor, char *model, char *strflags, blist_flags_t flags, enum scsi_devinfo_key key)”h]”(jÐ)�”}”(hŒint compatible”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hjaSh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj]Subj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoSh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj]Subj“)�”}”(hŒ compatible”h]”hŒ compatible”…”�”}”(hj}Sh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj]Subeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjYSubjÐ)�”}”(hŒ char *vendor”h]”(j’)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj–Sh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj’Subj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤Sh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj’Subj% )�”}”(hj( h]”hŒ*”…”�”}”(hj²Sh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj’Subj“)�”}”(hŒvendor”h]”hŒvendor”…”�”}”(hj¿Sh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj’Subeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjYSubjÐ)�”}”(hŒ char *model”h]”(j’)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjØSh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjÔSubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæSh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÔSubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjôSh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjÔSubj“)�”}”(hŒmodel”h]”hŒmodel”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÔSubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjYSubjÐ)�”}”(hŒchar *strflags”h]”(j’)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjTubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(Th²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjTubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj6Th²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjTubj“)�”}”(hŒstrflags”h]”hŒstrflags”…”�”}”(hjCTh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjTubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjYSubjÐ)�”}”(hŒblist_flags_t flags”h]”(h)�”}”(hhh]”j“)�”}”(hŒ blist_flags_t”h]”hŒ blist_flags_t”…”�”}”(hj_Th²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj\Tubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jaTŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jGSsbŒc.scsi_dev_info_list_add_keyed”†”asbuh1hhjXTubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjXTubj“)�”}”(hŒflags”h]”hŒflags”…”�”}”(hj�Th²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjXTubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjYSubjÐ)�”}”(hŒenum scsi_devinfo_key key”h]”(jj)�”}”(hjf9h]”hŒenum”…”�”}”(hj¦Th²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj¢Tubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³Th²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj¢Tubh)�”}”(hhh]”j“)�”}”(hŒscsi_devinfo_key”h]”hŒscsi_devinfo_key”…”�”}”(hjÄTh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÁTubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jÆTŒmodname”NŒ classname”Njôj÷)�”}”jú]”j{TŒc.scsi_dev_info_list_add_keyed”†”asbuh1hhj¢Tubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâTh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj¢Tubj“)�”}”(hŒkey”h]”hŒkey”…”�”}”(hjðTh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj¢Tubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjYSubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhj Sh²hh³j2Sh´MKubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjSh²hh³j2Sh´MKubah}”(h]”jSah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j2Sh´MKhjSh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒadd one dev_info list entry.”h]”hŒadd one dev_info list entry.”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:128: ./drivers/scsi/scsi_devinfo.c”h´MKhjUh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjSh²hh³j2Sh´MKubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj2Ujäj2Ujå‰jæ‰jç‰uh1jXh²hhjìRh³Nh´Nubjé)�”}”(hXÅ**Parameters** ``int compatible`` if true, null terminate short strings. Otherwise space pad. ``char *vendor`` vendor string ``char *model`` model (product) string ``char *strflags`` integer string ``blist_flags_t flags`` if strflags NULL, use this flag value ``enum scsi_devinfo_key key`` specify list to use **Description** Create and add one dev_info entry for **vendor**, **model**, **strflags** or **flag** in list specified by **key**. If **compatible**, add to the tail of the list, do not space pad, and set devinfo->compatible. The scsi_static_device_list entries are added with **compatible** 1 and **clfags** NULL. **Return** 0 OK, -error on failure.”•/h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj:Uubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:128: ./drivers/scsi/scsi_devinfo.c”h´MOhj6Uubj7)�”}”(hhh]”(j<)�”}”(hŒP``int compatible`` if true, null terminate short strings. Otherwise space pad. ”h]”(jB)�”}”(hŒ``int compatible``”h]”jH)�”}”(hj[Uh]”hŒint compatible”…”�”}”(hj]Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjYUubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:128: ./drivers/scsi/scsi_devinfo.c”h´MLhjUUubj^)�”}”(hhh]”hì)�”}”(hŒ``blist_flags_t flags`` if strflags NULL, use this flag value ”h]”(jB)�”}”(hŒ``blist_flags_t flags``”h]”jH)�”}”(hj?Vh]”hŒblist_flags_t flags”…”�”}”(hjAVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj=Vubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:128: ./drivers/scsi/scsi_devinfo.c”h´MPhj9Vubj^)�”}”(hhh]”hì)�”}”(hŒ%if strflags NULL, use this flag value”h]”hŒ%if strflags NULL, use this flag value”…”�”}”(hjXVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jTVh´MPhjUVubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj9Vubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jTVh´MPhjRUubj<)�”}”(hŒ2``enum scsi_devinfo_key key`` specify list to use ”h]”(jB)�”}”(hŒ``enum scsi_devinfo_key key``”h]”jH)�”}”(hjxVh]”hŒenum scsi_devinfo_key key”…”�”}”(hjzVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjvVubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:128: ./drivers/scsi/scsi_devinfo.c”h´MQhjrVubj^)�”}”(hhh]”hì)�”}”(hŒspecify list to use”h]”hŒspecify list to use”…”�”}”(hj‘Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j�Vh´MQhjŽVubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjrVubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j�Vh´MQhjRUubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hj6Uubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hj³Vh]”hŒ Description”…”�”}”(hjµVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj±Vubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:128: ./drivers/scsi/scsi_devinfo.c”h´MShj6Uubjt)�”}”(hX,Create and add one dev_info entry for **vendor**, **model**, **strflags** or **flag** in list specified by **key**. If **compatible**, add to the tail of the list, do not space pad, and set devinfo->compatible. The scsi_static_device_list entries are added with **compatible** 1 and **clfags** NULL. ”h]”hì)�”}”(hX+Create and add one dev_info entry for **vendor**, **model**, **strflags** or **flag** in list specified by **key**. If **compatible**, add to the tail of the list, do not space pad, and set devinfo->compatible. The scsi_static_device_list entries are added with **compatible** 1 and **clfags** NULL.”h]”(hŒ&Create and add one dev_info entry for ”…”�”}”(hjÍVh²hh³Nh´Nubjó)�”}”(hŒ **vendor**”h]”hŒvendor”…”�”}”(hjÕVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÍVubhŒ, ”…”�”}”(hjÍVh²hh³Nh´Nubjó)�”}”(hŒ **model**”h]”hŒmodel”…”�”}”(hjçVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÍVubhŒ, ”…”�”}”(hjÍVh²hh³Nh´Nubjó)�”}”(hŒ **strflags**”h]”hŒstrflags”…”�”}”(hjùVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÍVubhŒ or ”…”�”}”(hjÍVh²hh³Nh´Nubjó)�”}”(hŒ**flag**”h]”hŒflag”…”�”}”(hj Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÍVubhŒ in list specified by ”…”�”}”(hjÍVh²hh³Nh´Nubjó)�”}”(hŒ**key**”h]”hŒkey”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÍVubhŒ. If ”…”�”}”(hjÍVh²hh³Nh´Nubjó)�”}”(hŒ**compatible**”h]”hŒ compatible”…”�”}”(hj/Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÍVubhŒ�, add to the tail of the list, do not space pad, and set devinfo->compatible. The scsi_static_device_list entries are added with ”…”�”}”(hjÍVh²hh³Nh´Nubjó)�”}”(hŒ**compatible**”h]”hŒ compatible”…”�”}”(hjAWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÍVubhŒ 1 and ”…”�”}”(hjÍVh²hh³Nh´Nubjó)�”}”(hŒ **clfags**”h]”hŒclfags”…”�”}”(hjSWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÍVubhŒ NULL.”…”�”}”(hjÍVh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:128: ./drivers/scsi/scsi_devinfo.c”h´MShjÉVubah}”(h]”h ]”h"]”h$]”h&]”uh1jsh³jkWh´MShj6Uubhì)�”}”(hŒ **Return**”h]”jó)�”}”(hjtWh]”hŒReturn”…”�”}”(hjvWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjrWubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:128: ./drivers/scsi/scsi_devinfo.c”h´MYhj6Uubhì)�”}”(hŒ0 OK, -error on failure.”h]”hŒ0 OK, -error on failure.”…”�”}”(hjŠWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:128: ./drivers/scsi/scsi_devinfo.c”h´MZhj6Uubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjìRh²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ(scsi_get_device_flags_keyed (C function)”Œc.scsi_get_device_flags_keyed”hNt”auh1jGhjìRh²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ˜blist_flags_t scsi_get_device_flags_keyed (struct scsi_device *sdev, const unsigned char *vendor, const unsigned char *model, enum scsi_devinfo_key key)”h]”jd)�”}”(hŒ—blist_flags_t scsi_get_device_flags_keyed(struct scsi_device *sdev, const unsigned char *vendor, const unsigned char *model, enum scsi_devinfo_key key)”h]”(h)�”}”(hhh]”j“)�”}”(hŒ blist_flags_t”h]”hŒ blist_flags_t”…”�”}”(hj¼Wh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj¹Wubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j¾WŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j Œscsi_get_device_flags_keyed”sbŒc.scsi_get_device_flags_keyed”†”asbuh1hhjµWh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:128: ./drivers/scsi/scsi_devinfo.c”h´M.ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞWh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjµWh²hh³jÝWh´M.ubj�)�”}”(hŒscsi_get_device_flags_keyed”h]”j“)�”}”(hjÚWh]”hŒscsi_get_device_flags_keyed”…”�”}”(hjðWh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjìWubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjµWh²hh³jÝWh´M.ubjÊ)�”}”(hŒn(struct scsi_device *sdev, const unsigned char *vendor, const unsigned char *model, enum scsi_devinfo_key key)”h]”(jÐ)�”}”(hŒstruct scsi_device *sdev”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj Xh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjXubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjXubh)�”}”(hhh]”j“)�”}”(hŒ scsi_device”h]”hŒ scsi_device”…”�”}”(hj)Xh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj&Xubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j+XŒmodname”NŒ classname”Njôj÷)�”}”jú]”jØWŒc.scsi_get_device_flags_keyed”†”asbuh1hhjXubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGXh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjXubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjUXh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjXubj“)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hjbXh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjXubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjXubjÐ)�”}”(hŒconst unsigned char *vendor”h]”(jj)�”}”(hj’Ph]”hŒconst”…”�”}”(hj{Xh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjwXubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆXh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjwXubj’)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj–Xh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjwXubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤Xh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjwXubj’)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj²Xh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjwXubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀXh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjwXubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjÎXh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjwXubj“)�”}”(hŒvendor”h]”hŒvendor”…”�”}”(hjÛXh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjwXubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjXubjÐ)�”}”(hŒconst unsigned char *model”h]”(jj)�”}”(hj’Ph]”hŒconst”…”�”}”(hjôXh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjðXubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjðXubj’)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjðXubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjðXubj’)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj+Yh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjðXubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9Yh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjðXubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjGYh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjðXubj“)�”}”(hŒmodel”h]”hŒmodel”…”�”}”(hjTYh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjðXubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjXubjÐ)�”}”(hŒenum scsi_devinfo_key key”h]”(jj)�”}”(hjf9h]”hŒenum”…”�”}”(hjmYh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjiYubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjzYh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjiYubh)�”}”(hhh]”j“)�”}”(hŒscsi_devinfo_key”h]”hŒscsi_devinfo_key”…”�”}”(hj‹Yh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjˆYubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j�YŒmodname”NŒ classname”Njôj÷)�”}”jú]”jØWŒc.scsi_get_device_flags_keyed”†”asbuh1hhjiYubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©Yh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjiYubj“)�”}”(hŒkey”h]”hŒkey”…”�”}”(hj·Yh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjiYubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjXubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjµWh²hh³jÝWh´M.ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj±Wh²hh³jÝWh´M.ubah}”(h]”j¬Wah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jÝWh´M.hj®Wh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ6get device specific flags from the dynamic device list”h]”hŒ6get device specific flags from the dynamic device list”…”�”}”(hjáYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:128: ./drivers/scsi/scsi_devinfo.c”h´M.hjÞYh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj®Wh²hh³jÝWh´M.ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjùYjäjùYjå‰jæ‰jç‰uh1jXh²hhjìRh³Nh´Nubjé)�”}”(hXÜ**Parameters** ``struct scsi_device *sdev`` :c:type:`scsi_device` to get flags for ``const unsigned char *vendor`` vendor name ``const unsigned char *model`` model name ``enum scsi_devinfo_key key`` list to look up **Description** Search the scsi_dev_info_list specified by **key** for an entry matching **vendor** and **model**, if found, return the matching flags value, else return the host or global default settings. Called during scan time.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjZh]”hŒ Parameters”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjZubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:128: ./drivers/scsi/scsi_devinfo.c”h´M2hjýYubj7)�”}”(hhh]”(j<)�”}”(hŒD``struct scsi_device *sdev`` :c:type:`scsi_device` to get flags for ”h]”(jB)�”}”(hŒ``struct scsi_device *sdev``”h]”jH)�”}”(hj"Zh]”hŒstruct scsi_device *sdev”…”�”}”(hj$Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj Zubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:128: ./drivers/scsi/scsi_devinfo.c”h´M/hjZubj^)�”}”(hhh]”hì)�”}”(hŒ&:c:type:`scsi_device` to get flags for”h]”(h)�”}”(hŒ:c:type:`scsi_device`”h]”jH)�”}”(hjAZh]”hŒ scsi_device”…”�”}”(hjCZh²hh³Nh´Nubah}”(h]”h ]”(jâjÝŒc-type”eh"]”h$]”h&]”uh1jGhj?Zubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jîŒ refdomain”jÝŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jôjøjüŒ scsi_device”uh1hh³j7Zh´M/hj;ZubhŒ to get flags for”…”�”}”(hj;Zh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j7Zh´M/hj8Zubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjZubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j7Zh´M/hjZubj<)�”}”(hŒ,``const unsigned char *vendor`` vendor name ”h]”(jB)�”}”(hŒ``const unsigned char *vendor``”h]”jH)�”}”(hjzZh]”hŒconst unsigned char *vendor”…”�”}”(hj|Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjxZubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:128: ./drivers/scsi/scsi_devinfo.c”h´M0hjtZubj^)�”}”(hhh]”hì)�”}”(hŒ vendor name”h]”hŒ vendor name”…”�”}”(hj“Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j�Zh´M0hj�Zubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjtZubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j�Zh´M0hjZubj<)�”}”(hŒ*``const unsigned char *model`` model name ”h]”(jB)�”}”(hŒ``const unsigned char *model``”h]”jH)�”}”(hj³Zh]”hŒconst unsigned char *model”…”�”}”(hjµZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj±Zubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:128: ./drivers/scsi/scsi_devinfo.c”h´M1hj­Zubj^)�”}”(hhh]”hì)�”}”(hŒ model name”h]”hŒ model name”…”�”}”(hjÌZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÈZh´M1hjÉZubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj­Zubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jÈZh´M1hjZubj<)�”}”(hŒ.``enum scsi_devinfo_key key`` list to look up ”h]”(jB)�”}”(hŒ``enum scsi_devinfo_key key``”h]”jH)�”}”(hjìZh]”hŒenum scsi_devinfo_key key”…”�”}”(hjîZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjêZubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:128: ./drivers/scsi/scsi_devinfo.c”h´M2hjæZubj^)�”}”(hhh]”hì)�”}”(hŒlist to look up”h]”hŒlist to look up”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j[h´M2hj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjæZubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j[h´M2hjZubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjýYubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hj'[h]”hŒ Description”…”�”}”(hj)[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj%[ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:128: ./drivers/scsi/scsi_devinfo.c”h´M4hjýYubjt)�”}”(hŒ×Search the scsi_dev_info_list specified by **key** for an entry matching **vendor** and **model**, if found, return the matching flags value, else return the host or global default settings. Called during scan time.”h]”hì)�”}”(hŒ×Search the scsi_dev_info_list specified by **key** for an entry matching **vendor** and **model**, if found, return the matching flags value, else return the host or global default settings. Called during scan time.”h]”(hŒ+Search the scsi_dev_info_list specified by ”…”�”}”(hjA[h²hh³Nh´Nubjó)�”}”(hŒ**key**”h]”hŒkey”…”�”}”(hjI[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjA[ubhŒ for an entry matching ”…”�”}”(hjA[h²hh³Nh´Nubjó)�”}”(hŒ **vendor**”h]”hŒvendor”…”�”}”(hj[[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjA[ubhŒ and ”…”�”}”(hjA[h²hh³Nh´Nubjó)�”}”(hŒ **model**”h]”hŒmodel”…”�”}”(hjm[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjA[ubhŒv, if found, return the matching flags value, else return the host or global default settings. Called during scan time.”…”�”}”(hjA[h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:128: ./drivers/scsi/scsi_devinfo.c”h´M4hj=[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jsh³j…[h´M4hjýYubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjìRh²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ#scsi_dev_info_add_list (C function)”Œc.scsi_dev_info_add_list”hNt”auh1jGhjìRh²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒHint scsi_dev_info_add_list (enum scsi_devinfo_key key, const char *name)”h]”jd)�”}”(hŒGint scsi_dev_info_add_list(enum scsi_devinfo_key key, const char *name)”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hj¬[h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj¨[h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:128: ./drivers/scsi/scsi_devinfo.c”h´Mëubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»[h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj¨[h²hh³jº[h´Mëubj�)�”}”(hŒscsi_dev_info_add_list”h]”j“)�”}”(hŒscsi_dev_info_add_list”h]”hŒscsi_dev_info_add_list”…”�”}”(hjÍ[h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÉ[ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj¨[h²hh³jº[h´MëubjÊ)�”}”(hŒ-(enum scsi_devinfo_key key, const char *name)”h]”(jÐ)�”}”(hŒenum scsi_devinfo_key key”h]”(jj)�”}”(hjf9h]”hŒenum”…”�”}”(hjé[h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjå[ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjö[h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjå[ubh)�”}”(hhh]”j“)�”}”(hŒscsi_devinfo_key”h]”hŒscsi_devinfo_key”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj\ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j \Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jÏ[sbŒc.scsi_dev_info_add_list”†”asbuh1hhjå[ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'\h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjå[ubj“)�”}”(hŒkey”h]”hŒkey”…”�”}”(hj5\h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjå[ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjá[ubjÐ)�”}”(hŒconst char *name”h]”(jj)�”}”(hj’Ph]”hŒconst”…”�”}”(hjN\h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjJ\ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[\h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjJ\ubj’)�”}”(hŒchar”h]”hŒchar”…”�”}”(hji\h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjJ\ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjw\h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjJ\ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj…\h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjJ\ubj“)�”}”(hŒname”h]”hŒname”…”�”}”(hj’\h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjJ\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²ˆuh1jcj³j´hj¤[h²hh³jº[h´Mëubah}”(h]”jŸ[ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jº[h´Mëhj¡[h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒadd a new devinfo list”h]”hŒadd a new devinfo list”…”�”}”(hj¼\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:128: ./drivers/scsi/scsi_devinfo.c”h´Mëhj¹\h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj¡[h²hh³jº[h´Mëubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjÔ\jäjÔ\jå‰jæ‰jç‰uh1jXh²hhjìRh³Nh´Nubjé)�”}”(hX&**Parameters** ``enum scsi_devinfo_key key`` key of the list to add ``const char *name`` Name of the list to add (for /proc/scsi/device_info) **Description** Adds the requested list, returns zero on success, -EEXIST if the key is already registered to a list, or other error on failure.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjÞ\h]”hŒ Parameters”…”�”}”(hjà\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÜ\ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:128: ./drivers/scsi/scsi_devinfo.c”h´MïhjØ\ubj7)�”}”(hhh]”(j<)�”}”(hŒ5``enum scsi_devinfo_key key`` key of the list to add ”h]”(jB)�”}”(hŒ``enum scsi_devinfo_key key``”h]”jH)�”}”(hjý\h]”hŒenum scsi_devinfo_key key”…”�”}”(hjÿ\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjû\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:128: ./drivers/scsi/scsi_devinfo.c”h´Mìhj÷\ubj^)�”}”(hhh]”hì)�”}”(hŒkey of the list to add”h]”hŒkey of the list to add”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j]h´Mìhj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj÷\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j]h´Mìhjô\ubj<)�”}”(hŒJ``const char *name`` Name of the list to add (for /proc/scsi/device_info) ”h]”(jB)�”}”(hŒ``const char *name``”h]”jH)�”}”(hj6]h]”hŒconst char *name”…”�”}”(hj8]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj4]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:128: ./drivers/scsi/scsi_devinfo.c”h´Míhj0]ubj^)�”}”(hhh]”hì)�”}”(hŒ4Name of the list to add (for /proc/scsi/device_info)”h]”hŒ4Name of the list to add (for /proc/scsi/device_info)”…”�”}”(hjO]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jK]h´MíhjL]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj0]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jK]h´Míhjô\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjØ\ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjq]h]”hŒ Description”…”�”}”(hjs]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjo]ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:128: ./drivers/scsi/scsi_devinfo.c”h´MïhjØ\ubhì)�”}”(hŒ€Adds the requested list, returns zero on success, -EEXIST if the key is already registered to a list, or other error on failure.”h]”hŒ€Adds the requested list, returns zero on success, -EEXIST if the key is already registered to a list, or other error on failure.”…”�”}”(hj‡]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:128: ./drivers/scsi/scsi_devinfo.c”h´MîhjØ\ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjìRh²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ&scsi_dev_info_remove_list (C function)”Œc.scsi_dev_info_remove_list”hNt”auh1jGhjìRh²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ9int scsi_dev_info_remove_list (enum scsi_devinfo_key key)”h]”jd)�”}”(hŒ8int scsi_dev_info_remove_list(enum scsi_devinfo_key key)”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hj¶]h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj²]h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:128: ./drivers/scsi/scsi_devinfo.c”h´M ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅ]h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj²]h²hh³jÄ]h´M ubj�)�”}”(hŒscsi_dev_info_remove_list”h]”j“)�”}”(hŒscsi_dev_info_remove_list”h]”hŒscsi_dev_info_remove_list”…”�”}”(hj×]h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÓ]ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj²]h²hh³jÄ]h´M ubjÊ)�”}”(hŒ(enum scsi_devinfo_key key)”h]”jÐ)�”}”(hŒenum scsi_devinfo_key key”h]”(jj)�”}”(hjf9h]”hŒenum”…”�”}”(hjó]h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjï]ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjï]ubh)�”}”(hhh]”j“)�”}”(hŒscsi_devinfo_key”h]”hŒscsi_devinfo_key”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj^ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j^Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jÙ]sbŒc.scsi_dev_info_remove_list”†”asbuh1hhjï]ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1^h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjï]ubj“)�”}”(hŒkey”h]”hŒkey”…”�”}”(hj?^h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjï]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²ˆuh1jcj³j´hj®]h²hh³jÄ]h´M ubah}”(h]”j©]ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jÄ]h´M hj«]h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒdestroy an added devinfo list”h]”hŒdestroy an added devinfo list”…”�”}”(hji^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:128: ./drivers/scsi/scsi_devinfo.c”h´M hjf^h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj«]h²hh³jÄ]h´M ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj�^jäj�^jå‰jæ‰jç‰uh1jXh²hhjìRh³Nh´Nubjé)�”}”(hŒñ**Parameters** ``enum scsi_devinfo_key key`` key of the list to destroy **Description** Iterates over the entire list first, freeing all the values, then frees the list itself. Returns 0 on success or -EINVAL if the key can't be found.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj‹^h]”hŒ Parameters”…”�”}”(hj�^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj‰^ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:128: ./drivers/scsi/scsi_devinfo.c”h´Mhj…^ubj7)�”}”(hhh]”j<)�”}”(hŒ9``enum scsi_devinfo_key key`` key of the list to destroy ”h]”(jB)�”}”(hŒ``enum scsi_devinfo_key key``”h]”jH)�”}”(hjª^h]”hŒenum scsi_devinfo_key key”…”�”}”(hj¬^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj¨^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:128: ./drivers/scsi/scsi_devinfo.c”h´M hj¤^ubj^)�”}”(hhh]”hì)�”}”(hŒkey of the list to destroy”h]”hŒkey of the list to destroy”…”�”}”(hjÃ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³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&]”uh1j6hj…^ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjå^h]”hŒ Description”…”�”}”(hjç^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjã^ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:128: ./drivers/scsi/scsi_devinfo.c”h´Mhj…^ubhì)�”}”(hŒ”Iterates over the entire list first, freeing all the values, then frees the list itself. Returns 0 on success or -EINVAL if the key can't be found.”h]”hŒ–Iterates over the entire list first, freeing all the values, then frees the list itself. Returns 0 on success or -EINVAL if the key can’t be found.”…”�”}”(hjû^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:128: ./drivers/scsi/scsi_devinfo.c”h´M hj…^ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjìRh²hh³Nh´Nubeh}”(h]”Œdrivers-scsi-scsi-devinfo-c”ah ]”h"]”Œdrivers/scsi/scsi_devinfo.c”ah$]”h&]”uh1hµhj%h²hh³hÊh´K{ubh¶)�”}”(hhh]”(h»)�”}”(hŒdrivers/scsi/scsi_ioctl.c”h]”hŒdrivers/scsi/scsi_ioctl.c”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj_h²hh³hÊh´K„ubhì)�”}”(hŒ&Handle ioctl() calls for SCSI devices.”h]”hŒ&Handle ioctl() calls for SCSI devices.”…”�”}”(hj*_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K†hj_h²hubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ$scsi_set_medium_removal (C function)”Œc.scsi_set_medium_removal”hNt”auh1jGhj_h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒBint scsi_set_medium_removal (struct scsi_device *sdev, char state)”h]”jd)�”}”(hŒAint scsi_set_medium_removal(struct scsi_device *sdev, char state)”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hjQ_h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjM_h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:136: ./drivers/scsi/scsi_ioctl.c”h´Kubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`_h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjM_h²hh³j__h´Kubj�)�”}”(hŒscsi_set_medium_removal”h]”j“)�”}”(hŒscsi_set_medium_removal”h]”hŒscsi_set_medium_removal”…”�”}”(hjr_h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjn_ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjM_h²hh³j__h´KubjÊ)�”}”(hŒ&(struct scsi_device *sdev, char state)”h]”(jÐ)�”}”(hŒstruct scsi_device *sdev”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjŽ_h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjŠ_ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›_h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjŠ_ubh)�”}”(hhh]”j“)�”}”(hŒ scsi_device”h]”hŒ scsi_device”…”�”}”(hj¬_h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj©_ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j®_Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jt_sbŒc.scsi_set_medium_removal”†”asbuh1hhjŠ_ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌ_h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjŠ_ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjÚ_h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjŠ_ubj“)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hjç_h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjŠ_ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj†_ubjÐ)�”}”(hŒ char state”h]”(j’)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjü_ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjü_ubj“)�”}”(hŒstate”h]”hŒstate”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjü_ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj†_ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjM_h²hh³j__h´Kubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjI_h²hh³j__h´Kubah}”(h]”jD_ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j__h´KhjF_h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ/send command to allow or prevent medium removal”h]”hŒ/send command to allow or prevent medium removal”…”�”}”(hjF`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:136: ./drivers/scsi/scsi_ioctl.c”h´KhjC`h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjF_h²hh³j__h´Kubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj^`jäj^`jå‰jæ‰jç‰uh1jXh²hhj_h³Nh´Nubjé)�”}”(hXG**Parameters** ``struct scsi_device *sdev`` target scsi device ``char state`` removal state to set (prevent or allow) **Return** * ``0`` if **sdev** is not removable or not lockable or successful. * non-``0`` is a SCSI result code if > 0 or kernel error code if < 0. * Sets **sdev->locked** to the new state on success.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjh`h]”hŒ Parameters”…”�”}”(hjj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjf`ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:136: ./drivers/scsi/scsi_ioctl.c”h´Kƒhjb`ubj7)�”}”(hhh]”(j<)�”}”(hŒ0``struct scsi_device *sdev`` target scsi device ”h]”(jB)�”}”(hŒ``struct scsi_device *sdev``”h]”jH)�”}”(hj‡`h]”hŒstruct scsi_device *sdev”…”�”}”(hj‰`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj…`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:136: ./drivers/scsi/scsi_ioctl.c”h´K€hj�`ubj^)�”}”(hhh]”hì)�”}”(hŒtarget scsi device”h]”hŒtarget scsi device”…”�”}”(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Œ7``char state`` removal state to set (prevent or allow) ”h]”(jB)�”}”(hŒ``char state``”h]”jH)�”}”(hjÀ`h]”hŒ char state”…”�”}”(hjÂ`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj¾`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:136: ./drivers/scsi/scsi_ioctl.c”h´K�hjº`ubj^)�”}”(hhh]”hì)�”}”(hŒ'removal state to set (prevent or allow)”h]”hŒ'removal state to set (prevent or allow)”…”�”}”(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&]”uh1j6hjb`ubhì)�”}”(hŒ **Return**”h]”jó)�”}”(hjû`h]”hŒReturn”…”�”}”(hjý`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjù`ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:136: ./drivers/scsi/scsi_ioctl.c”h´Kƒhjb`ubjT)�”}”(hhh]”(jY)�”}”(hŒA``0`` if **sdev** is not removable or not lockable or successful.”h]”hì)�”}”(hjah]”(jH)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjaubhŒ if ”…”�”}”(hjah²hh³Nh´Nubjó)�”}”(hŒ**sdev**”h]”hŒsdev”…”�”}”(hj-ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjaubhŒ0 is not removable or not lockable or successful.”…”�”}”(hjah²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:136: ./drivers/scsi/scsi_ioctl.c”h´Kƒhjaubah}”(h]”h ]”h"]”h$]”h&]”uh1jXhjaubjY)�”}”(hŒCnon-``0`` is a SCSI result code if > 0 or kernel error code if < 0.”h]”hì)�”}”(hjNah]”(hŒnon-”…”�”}”(hjPah²hh³Nh´NubjH)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hjWah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjPaubhŒ: is a SCSI result code if > 0 or kernel error code if < 0.”…”�”}”(hjPah²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:136: ./drivers/scsi/scsi_ioctl.c”h´K„hjLaubah}”(h]”h ]”h"]”h$]”h&]”uh1jXhjaubjY)�”}”(hŒ2Sets **sdev->locked** to the new state on success.”h]”hì)�”}”(hjxah]”(hŒSets ”…”�”}”(hjzah²hh³Nh´Nubjó)�”}”(hŒ**sdev->locked**”h]”hŒ sdev->locked”…”�”}”(hj�ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjzaubhŒ to the new state on success.”…”�”}”(hjzah²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:136: ./drivers/scsi/scsi_ioctl.c”h´K…hjvaubah}”(h]”h ]”h"]”h$]”h&]”uh1jXhjaubeh}”(h]”h ]”h"]”h$]”h&]”j©j( uh1jSh³jEah´Kƒhjb`ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj_h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_cmd_allowed (C function)”Œc.scsi_cmd_allowed”hNt”auh1jGhj_h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ?bool scsi_cmd_allowed (unsigned char *cmd, bool open_for_write)”h]”jd)�”}”(hŒ>bool scsi_cmd_allowed(unsigned char *cmd, bool open_for_write)”h]”(j’)�”}”(hj•h]”hŒbool”…”�”}”(hjÆah²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjÂah²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:136: ./drivers/scsi/scsi_ioctl.c”h´Mubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔah²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÂah²hh³jÓah´Mubj�)�”}”(hŒscsi_cmd_allowed”h]”j“)�”}”(hŒscsi_cmd_allowed”h]”hŒscsi_cmd_allowed”…”�”}”(hjæah²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjâaubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjÂah²hh³jÓah´MubjÊ)�”}”(hŒ)(unsigned char *cmd, bool open_for_write)”h]”(jÐ)�”}”(hŒunsigned char *cmd”h]”(j’)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjþaubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjþaubj’)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjþaubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,bh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjþaubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj:bh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjþaubj“)�”}”(hŒcmd”h]”hŒcmd”…”�”}”(hjGbh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjþaubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjúaubjÐ)�”}”(hŒbool open_for_write”h]”(j’)�”}”(hj•h]”hŒbool”…”�”}”(hj`bh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj\bubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjmbh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj\bubj“)�”}”(hŒopen_for_write”h]”hŒopen_for_write”…”�”}”(hj{bh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj\bubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjúaubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjÂah²hh³jÓah´Mubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj¾ah²hh³jÓah´Mubah}”(h]”j¹aah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jÓah´Mhj»ah²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ&Check if the given command is allowed.”h]”hŒ&Check if the given command is allowed.”…”�”}”(hj¥bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:136: ./drivers/scsi/scsi_ioctl.c”h´Mhj¢bh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj»ah²hh³jÓah´Mubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj½bjäj½bjå‰jæ‰jç‰uh1jXh²hhj_h³Nh´Nubjé)�”}”(hXj**Parameters** ``unsigned char *cmd`` SCSI command to check ``bool open_for_write`` is the file / block device opened for writing? **Description** Only a subset of commands are allowed for unprivileged users. Commands used to format the media, update the firmware, etc. are not permitted. **Return** ``true`` if the cmd is allowed, otherwise **false**.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjÇbh]”hŒ Parameters”…”�”}”(hjÉbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÅbubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:136: ./drivers/scsi/scsi_ioctl.c”h´M hjÁbubj7)�”}”(hhh]”(j<)�”}”(hŒ-``unsigned char *cmd`` SCSI command to check ”h]”(jB)�”}”(hŒ``unsigned char *cmd``”h]”jH)�”}”(hjæbh]”hŒunsigned char *cmd”…”�”}”(hjèbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjäbubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:136: ./drivers/scsi/scsi_ioctl.c”h´Mhjàbubj^)�”}”(hhh]”hì)�”}”(hŒSCSI command to check”h]”hŒSCSI command to check”…”�”}”(hjÿbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jûbh´Mhjübubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjàbubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jûbh´MhjÝbubj<)�”}”(hŒG``bool open_for_write`` is the file / block device opened for writing? ”h]”(jB)�”}”(hŒ``bool open_for_write``”h]”jH)�”}”(hjch]”hŒbool open_for_write”…”�”}”(hj!ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjcubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:136: ./drivers/scsi/scsi_ioctl.c”h´Mhjcubj^)�”}”(hhh]”hì)�”}”(hŒ.is the file / block device opened for writing?”h]”hŒ.is the file / block device opened for writing?”…”�”}”(hj8ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j4ch´Mhj5cubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjcubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j4ch´MhjÝbubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjÁbubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjZch]”hŒ Description”…”�”}”(hj\ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjXcubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:136: ./drivers/scsi/scsi_ioctl.c”h´M hjÁbubhì)�”}”(hŒ�Only a subset of commands are allowed for unprivileged users. Commands used to format the media, update the firmware, etc. are not permitted.”h]”hŒ�Only a subset of commands are allowed for unprivileged users. Commands used to format the media, update the firmware, etc. are not permitted.”…”�”}”(hjpch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:136: ./drivers/scsi/scsi_ioctl.c”h´MhjÁbubhì)�”}”(hŒ **Return**”h]”jó)�”}”(hj�ch]”hŒReturn”…”�”}”(hjƒch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjcubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:136: ./drivers/scsi/scsi_ioctl.c”h´M hjÁbubhì)�”}”(hŒ4``true`` if the cmd is allowed, otherwise **false**.”h]”(jH)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hj›ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj—cubhŒ" if the cmd is allowed, otherwise ”…”�”}”(hj—ch²hh³Nh´Nubjó)�”}”(hŒ **false**”h]”hŒfalse”…”�”}”(hj­ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj—cubhŒ.”…”�”}”(hj—ch²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:136: ./drivers/scsi/scsi_ioctl.c”h´M hjÁbubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj_h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_ioctl (C function)”Œ c.scsi_ioctl”hNt”auh1jGhj_h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒYint scsi_ioctl (struct scsi_device *sdev, bool open_for_write, int cmd, void __user *arg)”h]”jd)�”}”(hŒXint scsi_ioctl(struct scsi_device *sdev, bool open_for_write, int cmd, void __user *arg)”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hjæch²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjâch²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:136: ./drivers/scsi/scsi_ioctl.c”h´Mhubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõch²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjâch²hh³jôch´Mhubj�)�”}”(hŒ scsi_ioctl”h]”j“)�”}”(hŒ scsi_ioctl”h]”hŒ scsi_ioctl”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjdubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjâch²hh³jôch´MhubjÊ)�”}”(hŒJ(struct scsi_device *sdev, bool open_for_write, int cmd, void __user *arg)”h]”(jÐ)�”}”(hŒstruct scsi_device *sdev”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj#dh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjdubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0dh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjdubh)�”}”(hhh]”j“)�”}”(hŒ scsi_device”h]”hŒ scsi_device”…”�”}”(hjAdh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj>dubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jCdŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j j dsbŒ c.scsi_ioctl”†”asbuh1hhjdubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjadh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjdubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjodh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjdubj“)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hj|dh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjdubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjdubjÐ)�”}”(hŒbool open_for_write”h]”(j’)�”}”(hj•h]”hŒbool”…”�”}”(hj•dh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj‘dubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢dh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj‘dubj“)�”}”(hŒopen_for_write”h]”hŒopen_for_write”…”�”}”(hj°dh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj‘dubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjdubjÐ)�”}”(hŒint cmd”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hjÉdh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjÅdubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×dh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÅdubj“)�”}”(hŒcmd”h]”hŒcmd”…”�”}”(hjådh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÅdubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjdubjÐ)�”}”(hŒvoid __user *arg”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjþdh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjúdubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj eh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjúdubhŒ__user”…”�”}”(hjúdh²hh³Nh´Nubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjúdubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj,eh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjúdubj“)�”}”(hŒarg”h]”hŒarg”…”�”}”(hj9eh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjúdubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjdubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjâch²hh³jôch´Mhubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjÞch²hh³jôch´Mhubah}”(h]”jÙcah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jôch´MhhjÛch²hubjÁ)�”}”(hhh]”hì)�”}”(hŒDispatch ioctl to scsi device”h]”hŒDispatch ioctl to scsi device”…”�”}”(hjceh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:136: ./drivers/scsi/scsi_ioctl.c”h´Mhhj`eh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjÛch²hh³jôch´Mhubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj{ejäj{ejå‰jæ‰jç‰uh1jXh²hhj_h³Nh´Nubjé)�”}”(hXç**Parameters** ``struct scsi_device *sdev`` scsi device receiving ioctl ``bool open_for_write`` is the file / block device opened for writing? ``int cmd`` which ioctl is it ``void __user *arg`` data associated with ioctl **Description** The scsi_ioctl() function differs from most ioctls in that it does not take a major/minor number as the dev field. Rather, it takes a pointer to a :c:type:`struct scsi_device `. **Return** varies depending on the **cmd**”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj…eh]”hŒ Parameters”…”�”}”(hj‡eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjƒeubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:136: ./drivers/scsi/scsi_ioctl.c”h´Mlhjeubj7)�”}”(hhh]”(j<)�”}”(hŒ9``struct scsi_device *sdev`` scsi device receiving ioctl ”h]”(jB)�”}”(hŒ``struct scsi_device *sdev``”h]”jH)�”}”(hj¤eh]”hŒstruct scsi_device *sdev”…”�”}”(hj¦eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj¢eubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:136: ./drivers/scsi/scsi_ioctl.c”h´Mihjžeubj^)�”}”(hhh]”hì)�”}”(hŒscsi device receiving ioctl”h]”hŒscsi device receiving ioctl”…”�”}”(hj½eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¹eh´Mihjºeubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjžeubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j¹eh´Mihj›eubj<)�”}”(hŒG``bool open_for_write`` is the file / block device opened for writing? ”h]”(jB)�”}”(hŒ``bool open_for_write``”h]”jH)�”}”(hjÝeh]”hŒbool open_for_write”…”�”}”(hjßeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjÛeubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:136: ./drivers/scsi/scsi_ioctl.c”h´Mjhj×eubj^)�”}”(hhh]”hì)�”}”(hŒ.is the file / block device opened for writing?”h]”hŒ.is the file / block device opened for writing?”…”�”}”(hjöeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jòeh´Mjhjóeubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj×eubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jòeh´Mjhj›eubj<)�”}”(hŒ``int cmd`` which ioctl is it ”h]”(jB)�”}”(hŒ ``int cmd``”h]”jH)�”}”(hjfh]”hŒint cmd”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjfubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:136: ./drivers/scsi/scsi_ioctl.c”h´Mkhjfubj^)�”}”(hhh]”hì)�”}”(hŒwhich ioctl is it”h]”hŒwhich ioctl is it”…”�”}”(hj/fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j+fh´Mkhj,fubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjfubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j+fh´Mkhj›eubj<)�”}”(hŒ0``void __user *arg`` data associated with ioctl ”h]”(jB)�”}”(hŒ``void __user *arg``”h]”jH)�”}”(hjOfh]”hŒvoid __user *arg”…”�”}”(hjQfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjMfubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:136: ./drivers/scsi/scsi_ioctl.c”h´MlhjIfubj^)�”}”(hhh]”hì)�”}”(hŒdata associated with ioctl”h]”hŒdata associated with ioctl”…”�”}”(hjhfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jdfh´Mlhjefubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjIfubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jdfh´Mlhj›eubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjeubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjŠfh]”hŒ Description”…”�”}”(hjŒfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjˆfubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:136: ./drivers/scsi/scsi_ioctl.c”h´Mnhjeubhì)�”}”(hŒ¿The scsi_ioctl() function differs from most ioctls in that it does not take a major/minor number as the dev field. Rather, it takes a pointer to a :c:type:`struct scsi_device `.”h]”(hŒ”The scsi_ioctl() function differs from most ioctls in that it does not take a major/minor number as the dev field. Rather, it takes a pointer to a ”…”�”}”(hj fh²hh³Nh´Nubh)�”}”(hŒ*:c:type:`struct scsi_device `”h]”jH)�”}”(hjªfh]”hŒstruct scsi_device”…”�”}”(hj¬fh²hh³Nh´Nubah}”(h]”h ]”(jâjÝŒc-type”eh"]”h$]”h&]”uh1jGhj¨fubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jîŒ refdomain”jÝŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jôjøjüŒ scsi_device”uh1hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:136: ./drivers/scsi/scsi_ioctl.c”h´Mnhj fubhŒ.”…”�”}”(hj fh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÇfh´Mnhjeubhì)�”}”(hŒ **Return**”h]”jó)�”}”(hjÔfh]”hŒReturn”…”�”}”(hjÖfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÒfubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:136: ./drivers/scsi/scsi_ioctl.c”h´Mrhjeubhì)�”}”(hŒvaries depending on the **cmd**”h]”(hŒvaries depending on the ”…”�”}”(hjêfh²hh³Nh´Nubjó)�”}”(hŒ**cmd**”h]”hŒcmd”…”�”}”(hjòfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjêfubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:136: ./drivers/scsi/scsi_ioctl.c”h´Mrhjeubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj_h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ4scsi_ioctl_block_when_processing_errors (C function)”Œ)c.scsi_ioctl_block_when_processing_errors”hNt”auh1jGhj_h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ\int scsi_ioctl_block_when_processing_errors (struct scsi_device *sdev, int cmd, bool ndelay)”h]”jd)�”}”(hŒ[int scsi_ioctl_block_when_processing_errors(struct scsi_device *sdev, int cmd, bool ndelay)”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hj'gh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj#gh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:136: ./drivers/scsi/scsi_ioctl.c”h´MÆubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6gh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj#gh²hh³j5gh´MÆubj�)�”}”(hŒ'scsi_ioctl_block_when_processing_errors”h]”j“)�”}”(hŒ'scsi_ioctl_block_when_processing_errors”h]”hŒ'scsi_ioctl_block_when_processing_errors”…”�”}”(hjHgh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjDgubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj#gh²hh³j5gh´MÆubjÊ)�”}”(hŒ0(struct scsi_device *sdev, int cmd, bool ndelay)”h]”(jÐ)�”}”(hŒstruct scsi_device *sdev”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjdgh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj`gubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqgh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj`gubh)�”}”(hhh]”j“)�”}”(hŒ scsi_device”h]”hŒ scsi_device”…”�”}”(hj‚gh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjgubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j„gŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jJgsbŒ)c.scsi_ioctl_block_when_processing_errors”†”asbuh1hhj`gubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢gh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj`gubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj°gh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj`gubj“)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hj½gh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj`gubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj\gubjÐ)�”}”(hŒint cmd”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hjÖgh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjÒgubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjägh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÒgubj“)�”}”(hŒcmd”h]”hŒcmd”…”�”}”(hjògh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÒgubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj\gubjÐ)�”}”(hŒ bool ndelay”h]”(j’)�”}”(hj•h]”hŒbool”…”�”}”(hj hh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjhubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjhubj“)�”}”(hŒndelay”h]”hŒndelay”…”�”}”(hj&hh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjhubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj\gubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhj#gh²hh³j5gh´MÆubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjgh²hh³j5gh´MÆubah}”(h]”jgah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j5gh´MÆhjgh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ"prevent commands from being queued”h]”hŒ"prevent commands from being queued”…”�”}”(hjPhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:136: ./drivers/scsi/scsi_ioctl.c”h´MÆhjMhh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjgh²hh³j5gh´MÆubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjhhjäjhhjå‰jæ‰jç‰uh1jXh²hhj_h³Nh´Nubjé)�”}”(hX **Parameters** ``struct scsi_device *sdev`` target scsi device ``int cmd`` which ioctl is it ``bool ndelay`` no delay (non-blocking) **Description** We can process a reset even when a device isn't fully operable. **Return** ``0`` on success, <0 error code.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjrhh]”hŒ Parameters”…”�”}”(hjthh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjphubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:136: ./drivers/scsi/scsi_ioctl.c”h´MÊhjlhubj7)�”}”(hhh]”(j<)�”}”(hŒ0``struct scsi_device *sdev`` target scsi device ”h]”(jB)�”}”(hŒ``struct scsi_device *sdev``”h]”jH)�”}”(hj‘hh]”hŒstruct scsi_device *sdev”…”�”}”(hj“hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj�hubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:136: ./drivers/scsi/scsi_ioctl.c”h´MÇhj‹hubj^)�”}”(hhh]”hì)�”}”(hŒtarget scsi device”h]”hŒtarget scsi device”…”�”}”(hjªhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¦hh´MÇhj§hubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj‹hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j¦hh´MÇhjˆhubj<)�”}”(hŒ``int cmd`` which ioctl is it ”h]”(jB)�”}”(hŒ ``int cmd``”h]”jH)�”}”(hjÊhh]”hŒint cmd”…”�”}”(hjÌhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjÈhubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:136: ./drivers/scsi/scsi_ioctl.c”h´MÈhjÄhubj^)�”}”(hhh]”hì)�”}”(hŒwhich ioctl is it”h]”hŒwhich ioctl is it”…”�”}”(hjãhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jßhh´MÈhjàhubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÄhubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jßhh´MÈhjˆhubj<)�”}”(hŒ(``bool ndelay`` no delay (non-blocking) ”h]”(jB)�”}”(hŒ``bool ndelay``”h]”jH)�”}”(hjih]”hŒ bool ndelay”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjiubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:136: ./drivers/scsi/scsi_ioctl.c”h´MÉhjýhubj^)�”}”(hhh]”hì)�”}”(hŒno delay (non-blocking)”h]”hŒno delay (non-blocking)”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jih´MÉhjiubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjýhubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jih´MÉhjˆhubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjlhubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hj>ih]”hŒ Description”…”�”}”(hj@ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj` with specific failure modes set”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjÁjh]”hŒ Parameters”…”�”}”(hjÃjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj¿jubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´KÂhj»jubj7)�”}”(hhh]”j<)�”}”(hŒq``struct scsi_failures *failures`` :c:type:`struct scsi_failures ` with specific failure modes set”h]”(jB)�”}”(hŒ"``struct scsi_failures *failures``”h]”jH)�”}”(hjàjh]”hŒstruct scsi_failures *failures”…”�”}”(hjâjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjÞjubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´KÄhjÚjubj^)�”}”(hhh]”hì)�”}”(hŒN:c:type:`struct scsi_failures ` with specific failure modes set”h]”(h)�”}”(hŒ.:c:type:`struct scsi_failures `”h]”jH)�”}”(hjÿjh]”hŒstruct scsi_failures”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”(jâjÝŒc-type”eh"]”h$]”h&]”uh1jGhjýjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jîŒ refdomain”jÝŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jôjøjüŒ scsi_failures”uh1hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´K¿hjùjubhŒ with specific failure modes set”…”�”}”(hjùjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jkh´K¿hjöjubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÚjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jõjh´KÄhj×jubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj»jubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj§ih²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_execute_cmd (C function)”Œc.scsi_execute_cmd”hNt”auh1jGhj§ih²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ¼int scsi_execute_cmd (struct scsi_device *sdev, const unsigned char *cmd, blk_opf_t opf, void *buffer, unsigned int bufflen, int timeout, int ml_retries, const struct scsi_exec_args *args)”•h]”jd)�”}”(hŒ»int scsi_execute_cmd(struct scsi_device *sdev, const unsigned char *cmd, blk_opf_t opf, void *buffer, unsigned int bufflen, int timeout, int ml_retries, const struct scsi_exec_args *args)”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hjYkh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjUkh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´Mubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhkh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjUkh²hh³jgkh´Mubj�)�”}”(hŒscsi_execute_cmd”h]”j“)�”}”(hŒscsi_execute_cmd”h]”hŒscsi_execute_cmd”…”�”}”(hjzkh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjvkubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjUkh²hh³jgkh´MubjÊ)�”}”(hŒ§(struct scsi_device *sdev, const unsigned char *cmd, blk_opf_t opf, void *buffer, unsigned int bufflen, int timeout, int ml_retries, const struct scsi_exec_args *args)”h]”(jÐ)�”}”(hŒstruct scsi_device *sdev”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj–kh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj’kubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£kh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj’kubh)�”}”(hhh]”j“)�”}”(hŒ scsi_device”h]”hŒ scsi_device”…”�”}”(hj´kh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj±kubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j¶kŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j j|ksbŒc.scsi_execute_cmd”†”asbuh1hhj’kubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔkh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj’kubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjâkh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj’kubj“)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hjïkh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj’kubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjŽkubjÐ)�”}”(hŒconst unsigned char *cmd”h]”(jj)�”}”(hj’Ph]”hŒconst”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjlubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjlubj’)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj#lh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjlubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1lh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjlubj’)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj?lh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjlubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjMlh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjlubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj[lh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjlubj“)�”}”(hŒcmd”h]”hŒcmd”…”�”}”(hjhlh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjlubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjŽkubjÐ)�”}”(hŒ blk_opf_t opf”h]”(h)�”}”(hhh]”j“)�”}”(hŒ blk_opf_t”h]”hŒ blk_opf_t”…”�”}”(hj„lh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj�lubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j†lŒmodname”NŒ classname”Njôj÷)�”}”jú]”jÐkŒc.scsi_execute_cmd”†”asbuh1hhj}lubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢lh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj}lubj“)�”}”(hŒopf”h]”hŒopf”…”�”}”(hj°lh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj}lubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjŽkubjÐ)�”}”(hŒ void *buffer”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÉlh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjÅlubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×lh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÅlubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjålh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjÅlubj“)�”}”(hŒbuffer”h]”hŒbuffer”…”�”}”(hjòlh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÅlubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjŽkubjÐ)�”}”(hŒunsigned int bufflen”h]”(j’)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj mh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjmubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjmubj’)�”}”(hŒint”h]”hŒint”…”�”}”(hj'mh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjmubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5mh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjmubj“)�”}”(hŒbufflen”h]”hŒbufflen”…”�”}”(hjCmh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjmubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjŽkubjÐ)�”}”(hŒ int timeout”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hj\mh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjXmubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjjmh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjXmubj“)�”}”(hŒtimeout”h]”hŒtimeout”…”�”}”(hjxmh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjXmubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjŽkubjÐ)�”}”(hŒint ml_retries”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hj‘mh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj�mubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸmh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj�mubj“)�”}”(hŒ ml_retries”h]”hŒ ml_retries”…”�”}”(hj­mh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj�mubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjŽkubjÐ)�”}”(hŒ!const struct scsi_exec_args *args”h]”(jj)�”}”(hj’Ph]”hŒconst”…”�”}”(hjÆmh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjÂmubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓmh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÂmubjj)�”}”(hjmh]”hŒstruct”…”�”}”(hjámh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjÂmubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîmh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÂmubh)�”}”(hhh]”j“)�”}”(hŒscsi_exec_args”h]”hŒscsi_exec_args”…”�”}”(hjÿmh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjümubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jnŒmodname”NŒ classname”Njôj÷)�”}”jú]”jÐkŒc.scsi_execute_cmd”†”asbuh1hhjÂmubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÂmubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj+nh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjÂmubj“)�”}”(hŒargs”h]”hŒargs”…”�”}”(hj8nh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÂmubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjŽkubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjUkh²hh³jgkh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjQkh²hh³jgkh´Mubah}”(h]”jLkah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jgkh´MhjNkh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ&insert request and wait for the result”h]”hŒ&insert request and wait for the result”…”�”}”(hjbnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´Mhj_nh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjNkh²hh³jgkh´Mubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjznjäjznjå‰jæ‰jç‰uh1jXh²hhj§ih³Nh´Nubjé)�”}”(hXC**Parameters** ``struct scsi_device *sdev`` scsi_device ``const unsigned char *cmd`` scsi command ``blk_opf_t opf`` block layer request cmd_flags ``void *buffer`` data buffer ``unsigned int bufflen`` len of buffer ``int timeout`` request timeout in HZ ``int ml_retries`` number of times SCSI midlayer will retry request ``const struct scsi_exec_args *args`` Optional args. See struct definition for field descriptions **Description** Returns the scsi_cmnd result field if a command was executed, or a negative Linux error code if we didn't get that far.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj„nh]”hŒ Parameters”…”�”}”(hj†nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj‚nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´Mhj~nubj7)�”}”(hhh]”(j<)�”}”(hŒ)``struct scsi_device *sdev`` scsi_device ”h]”(jB)�”}”(hŒ``struct scsi_device *sdev``”h]”jH)�”}”(hj£nh]”hŒstruct scsi_device *sdev”…”�”}”(hj¥nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj¡nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´Mhj�nubj^)�”}”(hhh]”hì)�”}”(hŒ scsi_device”h]”hŒ scsi_device”…”�”}”(hj¼nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¸nh´Mhj¹nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj�nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j¸nh´Mhjšnubj<)�”}”(hŒ*``const unsigned char *cmd`` scsi command ”h]”(jB)�”}”(hŒ``const unsigned char *cmd``”h]”jH)�”}”(hjÜnh]”hŒconst unsigned char *cmd”…”�”}”(hjÞnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjÚnubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MhjÖnubj^)�”}”(hhh]”hì)�”}”(hŒ scsi command”h]”hŒ scsi command”…”�”}”(hjõnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jñnh´Mhjònubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÖnubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jñnh´Mhjšnubj<)�”}”(hŒ0``blk_opf_t opf`` block layer request cmd_flags ”h]”(jB)�”}”(hŒ``blk_opf_t opf``”h]”jH)�”}”(hjoh]”hŒ blk_opf_t opf”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjoubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´Mhjoubj^)�”}”(hhh]”hì)�”}”(hŒblock layer request cmd_flags”h]”hŒblock layer request cmd_flags”…”�”}”(hj.oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j*oh´Mhj+oubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjoubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j*oh´Mhjšnubj<)�”}”(hŒ``void *buffer`` data buffer ”h]”(jB)�”}”(hŒ``void *buffer``”h]”jH)�”}”(hjNoh]”hŒ void *buffer”…”�”}”(hjPoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjLoubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MhjHoubj^)�”}”(hhh]”hì)�”}”(hŒ data buffer”h]”hŒ data buffer”…”�”}”(hjgoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jcoh´Mhjdoubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjHoubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jcoh´Mhjšnubj<)�”}”(hŒ'``unsigned int bufflen`` len of buffer ”h]”(jB)�”}”(hŒ``unsigned int bufflen``”h]”jH)�”}”(hj‡oh]”hŒunsigned int bufflen”…”�”}”(hj‰oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj…oubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M hj�oubj^)�”}”(hhh]”hì)�”}”(hŒ len of buffer”h]”hŒ len of buffer”…”�”}”(hj oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jœoh´M hj�oubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj�oubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jœoh´M hjšnubj<)�”}”(hŒ&``int timeout`` request timeout in HZ ”h]”(jB)�”}”(hŒ``int timeout``”h]”jH)�”}”(hjÀoh]”hŒ int timeout”…”�”}”(hjÂoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj¾oubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M!hjºoubj^)�”}”(hhh]”hì)�”}”(hŒrequest timeout in HZ”h]”hŒrequest timeout in HZ”…”�”}”(hjÙoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÕoh´M!hjÖoubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjºoubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jÕoh´M!hjšnubj<)�”}”(hŒD``int ml_retries`` number of times SCSI midlayer will retry request ”h]”(jB)�”}”(hŒ``int ml_retries``”h]”jH)�”}”(hjùoh]”hŒint ml_retries”…”�”}”(hjûoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj÷oubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M"hjóoubj^)�”}”(hhh]”hì)�”}”(hŒ0number of times SCSI midlayer will retry request”h]”hŒ0number of times SCSI midlayer will retry request”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jph´M"hjpubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjóoubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jph´M"hjšnubj<)�”}”(hŒb``const struct scsi_exec_args *args`` Optional args. See struct definition for field descriptions ”h]”(jB)�”}”(hŒ%``const struct scsi_exec_args *args``”h]”jH)�”}”(hj2ph]”hŒ!const struct scsi_exec_args *args”…”�”}”(hj4ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj0pubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M#hj,pubj^)�”}”(hhh]”hì)�”}”(hŒ;Optional args. See struct definition for field descriptions”h]”hŒ;Optional args. See struct definition for field descriptions”…”�”}”(hjKph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jGph´M#hjHpubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj,pubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jGph´M#hjšnubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hj~nubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjmph]”hŒ Description”…”�”}”(hjoph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjkpubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M%hj~nubhì)�”}”(hŒwReturns the scsi_cmnd result field if a command was executed, or a negative Linux error code if we didn't get that far.”h]”hŒyReturns the scsi_cmnd result field if a command was executed, or a negative Linux error code if we didn’t get that far.”…”�”}”(hjƒph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M$hj~nubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj§ih²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ scsi_alloc_sgtables (C function)”Œc.scsi_alloc_sgtables”hNt”auh1jGhj§ih²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ8blk_status_t scsi_alloc_sgtables (struct scsi_cmnd *cmd)”h]”jd)�”}”(hŒ7blk_status_t scsi_alloc_sgtables(struct scsi_cmnd *cmd)”h]”(h)�”}”(hhh]”j“)�”}”(hŒ blk_status_t”h]”hŒ blk_status_t”…”�”}”(hjµph²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj²pubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j·pŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j Œscsi_alloc_sgtables”sbŒc.scsi_alloc_sgtables”†”asbuh1hhj®ph²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´Mwubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×ph²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj®ph²hh³jÖph´Mwubj�)�”}”(hŒscsi_alloc_sgtables”h]”j“)�”}”(hjÓph]”hŒscsi_alloc_sgtables”…”�”}”(hjéph²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjåpubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj®ph²hh³jÖph´MwubjÊ)�”}”(hŒ(struct scsi_cmnd *cmd)”h]”jÐ)�”}”(hŒstruct scsi_cmnd *cmd”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjqubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjqubh)�”}”(hhh]”j“)�”}”(hŒ scsi_cmnd”h]”hŒ scsi_cmnd”…”�”}”(hj"qh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjqubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j$qŒmodname”NŒ classname”Njôj÷)�”}”jú]”jÑpŒc.scsi_alloc_sgtables”†”asbuh1hhjqubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@qh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjqubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjNqh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjqubj“)�”}”(hŒcmd”h]”hŒcmd”…”�”}”(hj[qh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjqubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjüpubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhj®ph²hh³jÖph´Mwubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjªph²hh³jÖph´Mwubah}”(h]”j¥pah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jÖph´Mwhj§ph²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ7Allocate and initialize data and integrity scatterlists”h]”hŒ7Allocate and initialize data and integrity scatterlists”…”�”}”(hj…qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´Mwhj‚qh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj§ph²hh³jÖph´Mwubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj�qjäj�qjå‰jæ‰jç‰uh1jXh²hhj§ih³Nh´Nubjé)�”}”(hXQ**Parameters** ``struct scsi_cmnd *cmd`` SCSI command data structure to initialize. **Description** Initializes **cmd->sdb** and also **cmd->prot_sdb** if data integrity is enabled for **cmd**. **Return** * BLK_STS_OK - on success * BLK_STS_RESOURCE - if the failure is retryable * BLK_STS_IOERR - if the failure is fatal”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj§qh]”hŒ Parameters”…”�”}”(hj©qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj¥qubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M{hj¡qubj7)�”}”(hhh]”j<)�”}”(hŒE``struct scsi_cmnd *cmd`` SCSI command data structure to initialize. ”h]”(jB)�”}”(hŒ``struct scsi_cmnd *cmd``”h]”jH)�”}”(hjÆqh]”hŒstruct scsi_cmnd *cmd”…”�”}”(hjÈqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjÄqubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MxhjÀqubj^)�”}”(hhh]”hì)�”}”(hŒ*SCSI command data structure to initialize.”h]”hŒ*SCSI command data structure to initialize.”…”�”}”(hjßqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÛqh´MxhjÜqubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÀqubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jÛqh´Mxhj½qubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj¡qubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjrh]”hŒ Description”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÿqubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´Mzhj¡qubhì)�”}”(hŒ]Initializes **cmd->sdb** and also **cmd->prot_sdb** if data integrity is enabled for **cmd**.”h]”(hŒ Initializes ”…”�”}”(hjrh²hh³Nh´Nubjó)�”}”(hŒ **cmd->sdb**”h]”hŒcmd->sdb”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjrubhŒ and also ”…”�”}”(hjrh²hh³Nh´Nubjó)�”}”(hŒ**cmd->prot_sdb**”h]”hŒ cmd->prot_sdb”…”�”}”(hj1rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjrubhŒ" if data integrity is enabled for ”…”�”}”(hjrh²hh³Nh´Nubjó)�”}”(hŒ**cmd**”h]”hŒcmd”…”�”}”(hjCrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjrubhŒ.”…”�”}”(hjrh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´Myhj¡qubhì)�”}”(hŒ **Return**”h]”jó)�”}”(hj^rh]”hŒReturn”…”�”}”(hj`rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj\rubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M|hj¡qubjT)�”}”(hhh]”(jY)�”}”(hŒBLK_STS_OK - on success”h]”hì)�”}”(hjyrh]”hŒBLK_STS_OK - on success”…”�”}”(hj{rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M}hjwrubah}”(h]”h ]”h"]”h$]”h&]”uh1jXhjtrubjY)�”}”(hŒ.BLK_STS_RESOURCE - if the failure is retryable”h]”hì)�”}”(hj‘rh]”hŒ.BLK_STS_RESOURCE - if the failure is retryable”…”�”}”(hj“rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M~hj�rubah}”(h]”h ]”h"]”h$]”h&]”uh1jXhjtrubjY)�”}”(hŒ*BLK_STS_IOERR - if the failure is fatal”h]”hì)�”}”(hj©rh]”hŒ*BLK_STS_IOERR - if the failure is fatal”…”�”}”(hj«rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´Mhj§rubah}”(h]”h ]”h"]”h$]”h&]”uh1jXhjtrubeh}”(h]”h ]”h"]”h$]”h&]”j©j( uh1jSh³jˆrh´M}hj¡qubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj§ih²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_alloc_request (C function)”Œc.scsi_alloc_request”hNt”auh1jGhj§ih²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒfstruct request * scsi_alloc_request (struct request_queue *q, blk_opf_t opf, blk_mq_req_flags_t flags)”h]”jd)�”}”(hŒdstruct request *scsi_alloc_request(struct request_queue *q, blk_opf_t opf, blk_mq_req_flags_t flags)”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjårh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjárh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´Mñubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjórh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjárh²hh³jòrh´Mñubh)�”}”(hhh]”j“)�”}”(hŒrequest”h]”hŒrequest”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjsubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jsŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j Œscsi_alloc_request”sbŒc.scsi_alloc_request”†”asbuh1hhjárh²hh³jòrh´Mñubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%sh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjárh²hh³jòrh´Mñubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj3sh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjárh²hh³jòrh´Mñubj�)�”}”(hŒscsi_alloc_request”h]”j“)�”}”(hj"sh]”hŒscsi_alloc_request”…”�”}”(hjDsh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj@subah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjárh²hh³jòrh´MñubjÊ)�”}”(hŒB(struct request_queue *q, blk_opf_t opf, blk_mq_req_flags_t flags)”h]”(jÐ)�”}”(hŒstruct request_queue *q”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj_sh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj[subj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjlsh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj[subh)�”}”(hhh]”j“)�”}”(hŒ request_queue”h]”hŒ request_queue”…”�”}”(hj}sh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjzsubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jsŒmodname”NŒ classname”Njôj÷)�”}”jú]”j sŒc.scsi_alloc_request”†”asbuh1hhj[subj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›sh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj[subj% )�”}”(hj( h]”hŒ*”…”�”}”(hj©sh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj[subj“)�”}”(hŒq”h]”hŒq”…”�”}”(hj¶sh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj[subeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjWsubjÐ)�”}”(hŒ blk_opf_t opf”h]”(h)�”}”(hhh]”j“)�”}”(hŒ blk_opf_t”h]”hŒ blk_opf_t”…”�”}”(hjÒsh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÏsubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jÔsŒmodname”NŒ classname”Njôj÷)�”}”jú]”j sŒc.scsi_alloc_request”†”asbuh1hhjËsubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjðsh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjËsubj“)�”}”(hŒopf”h]”hŒopf”…”�”}”(hjþsh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjËsubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjWsubjÐ)�”}”(hŒblk_mq_req_flags_t flags”h]”(h)�”}”(hhh]”j“)�”}”(hŒblk_mq_req_flags_t”h]”hŒblk_mq_req_flags_t”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjtubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jtŒmodname”NŒ classname”Njôj÷)�”}”jú]”j sŒc.scsi_alloc_request”†”asbuh1hhjtubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8th²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjtubj“)�”}”(hŒflags”h]”hŒflags”…”�”}”(hjFth²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjtubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjWsubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjárh²hh³jòrh´Mñubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjÝrh²hh³jòrh´Mñubah}”(h]”jØrah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jòrh´MñhjÚrh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒIallocate a block request and partially initialize its :c:type:`scsi_cmnd`”h]”(hŒ6allocate a block request and partially initialize its ”…”�”}”(hjpth²hh³Nh´Nubh)�”}”(hŒ:c:type:`scsi_cmnd`”h]”jH)�”}”(hjzth]”hŒ scsi_cmnd”…”�”}”(hj|th²hh³Nh´Nubah}”(h]”h ]”(jâjÝŒc-type”eh"]”h$]”h&]”uh1jGhjxtubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jîŒ refdomain”jÝŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jôj÷)�”}”jú]”j sŒc.scsi_alloc_request”†”asbjüŒ scsi_cmnd”uh1hh³jíih´K¾hjptubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´Mñhjmth²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjÚrh²hh³jòrh´Mñubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj¬tjäj¬tjå‰jæ‰jç‰uh1jXh²hhj§ih³Nh´Nubjé)�”}”(hX**Parameters** ``struct request_queue *q`` the device's request queue ``blk_opf_t opf`` the request operation code ``blk_mq_req_flags_t flags`` block layer allocation flags **Return** :c:type:`struct request ` pointer on success or ``NULL`` on failure”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj¶th]”hŒ Parameters”…”�”}”(hj¸th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj´tubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´Mõhj°tubj7)�”}”(hhh]”(j<)�”}”(hŒ7``struct request_queue *q`` the device's request queue ”h]”(jB)�”}”(hŒ``struct request_queue *q``”h]”jH)�”}”(hjÕth]”hŒstruct request_queue *q”…”�”}”(hj×th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjÓtubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MóhjÏtubj^)�”}”(hhh]”hì)�”}”(hŒthe device's request queue”h]”hŒthe device’s request queue”…”�”}”(hjîth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jêth´Móhjëtubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÏtubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jêth´MóhjÌtubj<)�”}”(hŒ-``blk_opf_t opf`` the request operation code ”h]”(jB)�”}”(hŒ``blk_opf_t opf``”h]”jH)�”}”(hjuh]”hŒ blk_opf_t opf”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj uubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´Môhjuubj^)�”}”(hhh]”hì)�”}”(hŒthe request operation code”h]”hŒthe request operation code”…”�”}”(hj'uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j#uh´Môhj$uubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjuubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j#uh´MôhjÌtubj<)�”}”(hŒ:``blk_mq_req_flags_t flags`` block layer allocation flags ”h]”(jB)�”}”(hŒ``blk_mq_req_flags_t flags``”h]”jH)�”}”(hjGuh]”hŒblk_mq_req_flags_t flags”…”�”}”(hjIuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjEuubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MõhjAuubj^)�”}”(hhh]”hì)�”}”(hŒblock layer allocation flags”h]”hŒblock layer allocation flags”…”�”}”(hj`uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j\uh´Mõhj]uubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjAuubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j\uh´MõhjÌtubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hj°tubhì)�”}”(hŒ **Return**”h]”jó)�”}”(hj‚uh]”hŒReturn”…”�”}”(hj„uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj€uubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M÷hj°tubhì)�”}”(hŒL:c:type:`struct request ` pointer on success or ``NULL`` on failure”h]”(h)�”}”(hŒ":c:type:`struct request `”h]”jH)�”}”(hjžuh]”hŒstruct request”…”�”}”(hj uh²hh³Nh´Nubah}”(h]”h ]”(jâjÝŒc-type”eh"]”h$]”h&]”uh1jGhjœuubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jîŒ refdomain”jÝŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jôjøjüŒrequest”uh1hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M÷hj˜uubhŒ pointer on success or ”…”�”}”(hj˜uh²hh³Nh´NubjH)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjÀuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj˜uubhŒ on failure”…”�”}”(hj˜uh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j»uh´M÷hj°tubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj§ih²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ"scsi_get_internal_cmd (C function)”Œc.scsi_get_internal_cmd”hNt”auh1jGhj§ih²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ…struct scsi_cmnd * scsi_get_internal_cmd (struct scsi_device *sdev, enum dma_data_direction data_direction, blk_mq_req_flags_t flags)”h]”jd)�”}”(hŒƒstruct scsi_cmnd *scsi_get_internal_cmd(struct scsi_device *sdev, enum dma_data_direction data_direction, blk_mq_req_flags_t flags)”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjøuh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjôuh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M|ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjôuh²hh³jvh´M|ubh)�”}”(hhh]”j“)�”}”(hŒ scsi_cmnd”h]”hŒ scsi_cmnd”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjvubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jvŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j Œscsi_get_internal_cmd”sbŒc.scsi_get_internal_cmd”†”asbuh1hhjôuh²hh³jvh´M|ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8vh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjôuh²hh³jvh´M|ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjFvh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjôuh²hh³jvh´M|ubj�)�”}”(hŒscsi_get_internal_cmd”h]”j“)�”}”(hj5vh]”hŒscsi_get_internal_cmd”…”�”}”(hjWvh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjSvubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjôuh²hh³jvh´M|ubjÊ)�”}”(hŒ\(struct scsi_device *sdev, enum dma_data_direction data_direction, blk_mq_req_flags_t flags)”h]”(jÐ)�”}”(hŒstruct scsi_device *sdev”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjrvh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjnvubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjnvubh)�”}”(hhh]”j“)�”}”(hŒ scsi_device”h]”hŒ scsi_device”…”�”}”(hj�vh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj�vubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j’vŒmodname”NŒ classname”Njôj÷)�”}”jú]”j3vŒc.scsi_get_internal_cmd”†”asbuh1hhjnvubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®vh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjnvubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj¼vh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjnvubj“)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hjÉvh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjnvubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjjvubjÐ)�”}”(hŒ&enum dma_data_direction data_direction”h]”(jj)�”}”(hjf9h]”hŒenum”…”�”}”(hjâvh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjÞvubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïvh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÞvubh)�”}”(hhh]”j“)�”}”(hŒdma_data_direction”h]”hŒdma_data_direction”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjývubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jwŒmodname”NŒ classname”Njôj÷)�”}”jú]”j3vŒc.scsi_get_internal_cmd”†”asbuh1hhjÞvubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÞvubj“)�”}”(hŒdata_direction”h]”hŒdata_direction”…”�”}”(hj,wh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÞvubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjjvubjÐ)�”}”(hŒblk_mq_req_flags_t flags”h]”(h)�”}”(hhh]”j“)�”}”(hŒblk_mq_req_flags_t”h]”hŒblk_mq_req_flags_t”…”�”}”(hjHwh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjEwubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jJwŒmodname”NŒ classname”Njôj÷)�”}”jú]”j3vŒc.scsi_get_internal_cmd”†”asbuh1hhjAwubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfwh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjAwubj“)�”}”(hŒflags”h]”hŒflags”…”�”}”(hjtwh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjAwubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjjvubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjôuh²hh³jvh´M|ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjðuh²hh³jvh´M|ubah}”(h]”jëuah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jvh´M|hjíuh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ"Allocate an internal SCSI command.”h]”hŒ"Allocate an internal SCSI command.”…”�”}”(hjžwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M|hj›wh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjíuh²hh³jvh´M|ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj¶wjäj¶wjå‰jæ‰jç‰uh1jXh²hhj§ih³Nh´Nubjé)�”}”(hXa**Parameters** ``struct scsi_device *sdev`` SCSI device from which to allocate the command ``enum dma_data_direction data_direction`` Data direction for the allocated command ``blk_mq_req_flags_t flags`` request allocation flags, e.g. BLK_MQ_REQ_RESERVED or BLK_MQ_REQ_NOWAIT. **Description** Allocates a SCSI command for internal LLDD use.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjÀwh]”hŒ Parameters”…”�”}”(hjÂwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj¾wubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M€hjºwubj7)�”}”(hhh]”(j<)�”}”(hŒL``struct scsi_device *sdev`` SCSI device from which to allocate the command ”h]”(jB)�”}”(hŒ``struct scsi_device *sdev``”h]”jH)�”}”(hjßwh]”hŒstruct scsi_device *sdev”…”�”}”(hjáwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjÝwubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M}hjÙwubj^)�”}”(hhh]”hì)�”}”(hŒ.SCSI device from which to allocate the command”h]”hŒ.SCSI device from which to allocate the command”…”�”}”(hjøwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jôwh´M}hjõwubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÙwubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jôwh´M}hjÖwubj<)�”}”(hŒT``enum dma_data_direction data_direction`` Data direction for the allocated command ”h]”(jB)�”}”(hŒ*``enum dma_data_direction data_direction``”h]”jH)�”}”(hjxh]”hŒ&enum dma_data_direction data_direction”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjxubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M~hjxubj^)�”}”(hhh]”hì)�”}”(hŒ(Data direction for the allocated command”h]”hŒ(Data direction for the allocated command”…”�”}”(hj1xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j-xh´M~hj.xubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjxubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j-xh´M~hjÖwubj<)�”}”(hŒf``blk_mq_req_flags_t flags`` request allocation flags, e.g. BLK_MQ_REQ_RESERVED or BLK_MQ_REQ_NOWAIT. ”h]”(jB)�”}”(hŒ``blk_mq_req_flags_t flags``”h]”jH)�”}”(hjQxh]”hŒblk_mq_req_flags_t flags”…”�”}”(hjSxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjOxubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M€hjKxubj^)�”}”(hhh]”hì)�”}”(hŒHrequest allocation flags, e.g. BLK_MQ_REQ_RESERVED or BLK_MQ_REQ_NOWAIT.”h]”hŒHrequest allocation flags, e.g. BLK_MQ_REQ_RESERVED or BLK_MQ_REQ_NOWAIT.”…”�”}”(hjjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´Mhjgxubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjKxubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jfxh´M€hjÖwubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjºwubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hj�xh]”hŒ Description”…”�”}”(hj�xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj‹xubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M‚hjºwubhì)�”}”(hŒ/Allocates a SCSI command for internal LLDD use.”h]”hŒ/Allocates a SCSI command for internal LLDD use.”…”�”}”(hj£xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M�hjºwubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj§ih²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ"scsi_put_internal_cmd (C function)”Œc.scsi_put_internal_cmd”hNt”auh1jGhj§ih²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ3void scsi_put_internal_cmd (struct scsi_cmnd *scmd)”h]”jd)�”}”(hŒ2void scsi_put_internal_cmd(struct scsi_cmnd *scmd)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÒxh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjÎxh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M˜ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjáxh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÎxh²hh³jàxh´M˜ubj�)�”}”(hŒscsi_put_internal_cmd”h]”j“)�”}”(hŒscsi_put_internal_cmd”h]”hŒscsi_put_internal_cmd”…”�”}”(hjóxh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjïxubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjÎxh²hh³jàxh´M˜ubjÊ)�”}”(hŒ(struct scsi_cmnd *scmd)”h]”jÐ)�”}”(hŒstruct scsi_cmnd *scmd”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj yubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj yubh)�”}”(hhh]”j“)�”}”(hŒ scsi_cmnd”h]”hŒ scsi_cmnd”…”�”}”(hj-yh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj*yubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j/yŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jõxsbŒc.scsi_put_internal_cmd”†”asbuh1hhj yubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjMyh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj yubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj[yh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj yubj“)�”}”(hŒscmd”h]”hŒscmd”…”�”}”(hjhyh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj yubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjyubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjÎxh²hh³jàxh´M˜ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjÊxh²hh³jàxh´M˜ubah}”(h]”jÅxah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jàxh´M˜hjÇxh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒFree an internal SCSI command.”h]”hŒFree an internal SCSI command.”…”�”}”(hj’yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M˜hj�yh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjÇxh²hh³jàxh´M˜ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjªyjäjªyjå‰jæ‰jç‰uh1jXh²hhj§ih³Nh´Nubjé)�”}”(hŒE**Parameters** ``struct scsi_cmnd *scmd`` SCSI command to be freed”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj´yh]”hŒ Parameters”…”�”}”(hj¶yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj²yubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´Mœhj®yubj7)�”}”(hhh]”j<)�”}”(hŒ3``struct scsi_cmnd *scmd`` SCSI command to be freed”h]”(jB)�”}”(hŒ``struct scsi_cmnd *scmd``”h]”jH)�”}”(hjÓyh]”hŒstruct scsi_cmnd *scmd”…”�”}”(hjÕyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjÑyubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MžhjÍyubj^)�”}”(hhh]”hì)�”}”(hŒSCSI command to be freed”h]”hŒSCSI command to be freed”…”�”}”(hjìyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M™hjéyubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÍyubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jèyh´MžhjÊyubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj®yubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj§ih²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ scsi_block_requests (C function)”Œc.scsi_block_requests”hNt”auh1jGhj§ih²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ2void scsi_block_requests (struct Scsi_Host *shost)”h]”jd)�”}”(hŒ1void scsi_block_requests(struct Scsi_Host *shost)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj-zh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj)zh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M¶ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj+}h²hh³j=}h´MÚubj�)�”}”(hŒscsi_mode_select”h]”j“)�”}”(hŒscsi_mode_select”h]”hŒscsi_mode_select”…”�”}”(hjP}h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjL}ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj+}h²hh³j=}h´MÚubjÊ)�”}”(hŒŸ(struct scsi_device *sdev, int pf, int sp, unsigned char *buffer, int len, int timeout, int retries, struct scsi_mode_data *data, struct scsi_sense_hdr *sshdr)”h]”(jÐ)�”}”(hŒstruct scsi_device *sdev”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjl}h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjh}ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjy}h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjh}ubh)�”}”(hhh]”j“)�”}”(hŒ scsi_device”h]”hŒ scsi_device”…”�”}”(hjŠ}h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj‡}ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jŒ}Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jR}sbŒc.scsi_mode_select”†”asbuh1hhjh}ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjª}h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjh}ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj¸}h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjh}ubj“)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hjÅ}h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjh}ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjd}ubjÐ)�”}”(hŒint pf”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hjÞ}h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjÚ}ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjì}h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÚ}ubj“)�”}”(hŒpf”h]”hŒpf”…”�”}”(hjú}h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÚ}ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjd}ubjÐ)�”}”(hŒint sp”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj~ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!~h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj~ubj“)�”}”(hŒsp”h]”hŒsp”…”�”}”(hj/~h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj~ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjd}ubjÐ)�”}”(hŒunsigned char *buffer”h]”(j’)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjH~h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjD~ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjV~h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjD~ubj’)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjd~h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjD~ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjr~h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjD~ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj€~h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjD~ubj“)�”}”(hŒbuffer”h]”hŒbuffer”…”�”}”(hj�~h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjD~ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjd}ubjÐ)�”}”(hŒint len”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hj¦~h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj¢~ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´~h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj¢~ubj“)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjÂ~h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj¢~ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjd}ubjÐ)�”}”(hŒ int timeout”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hjÛ~h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj×~ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjé~h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj×~ubj“)�”}”(hŒtimeout”h]”hŒtimeout”…”�”}”(hj÷~h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj×~ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjd}ubjÐ)�”}”(hŒ int retries”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj ubj“)�”}”(hŒretries”h]”hŒretries”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjd}ubjÐ)�”}”(hŒstruct scsi_mode_data *data”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjAubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjAubh)�”}”(hhh]”j“)�”}”(hŒscsi_mode_data”h]”hŒscsi_mode_data”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj`ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jeŒmodname”NŒ classname”Njôj÷)�”}”jú]”j¦}Œc.scsi_mode_select”†”asbuh1hhjAubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjAubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjAubj“)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjAubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjd}ubjÐ)�”}”(hŒstruct scsi_sense_hdr *sshdr”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj±ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj±ubh)�”}”(hhh]”j“)�”}”(hŒscsi_sense_hdr”h]”hŒscsi_sense_hdr”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÐubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jÕŒmodname”NŒ classname”Njôj÷)�”}”jú]”j¦}Œc.scsi_mode_select”†”asbuh1hhj±ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj±ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj±ubj“)�”}”(hŒsshdr”h]”hŒsshdr”…”�”}”(hj €h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj±ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjd}ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhj+}h²hh³j=}h´MÚubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj'}h²hh³j=}h´MÚubah}”(h]”j"}ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j=}h´MÚhj$}h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒissue a mode select”h]”hŒissue a mode select”…”�”}”(hj6€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MÚhj3€h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj$}h²hh³j=}h´MÚubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjN€jäjN€jå‰jæ‰jç‰uh1jXh²hhj§ih³Nh´Nubjé)�”}”(hXÝ**Parameters** ``struct scsi_device *sdev`` SCSI device to be queried ``int pf`` Page format bit (1 == standard, 0 == vendor specific) ``int sp`` Save page bit (0 == don't save, 1 == save) ``unsigned char *buffer`` request buffer (may not be smaller than eight bytes) ``int len`` length of request buffer. ``int timeout`` command timeout ``int retries`` number of retries before failing ``struct scsi_mode_data *data`` returns a structure abstracting the mode header data ``struct scsi_sense_hdr *sshdr`` place to put sense data (or NULL if no sense to be collected). must be SCSI_SENSE_BUFFERSIZE big. **Description** Returns zero if successful; negative error number or scsi status on error”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjX€h]”hŒ Parameters”…”�”}”(hjZ€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjV€ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MÞhjR€ubj7)�”}”(hhh]”(j<)�”}”(hŒ7``struct scsi_device *sdev`` SCSI device to be queried ”h]”(jB)�”}”(hŒ``struct scsi_device *sdev``”h]”jH)�”}”(hjw€h]”hŒstruct scsi_device *sdev”…”�”}”(hjy€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhju€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MÛhjq€ubj^)�”}”(hhh]”hì)�”}”(hŒSCSI device to be queried”h]”hŒSCSI device to be queried”…”�”}”(hj�€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jŒ€h´MÛhj�€ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjq€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jŒ€h´MÛhjn€ubj<)�”}”(hŒA``int pf`` Page format bit (1 == standard, 0 == vendor specific) ”h]”(jB)�”}”(hŒ ``int pf``”h]”jH)�”}”(hj°€h]”hŒint pf”…”�”}”(hj²€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj®€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MÜhjª€ubj^)�”}”(hhh]”hì)�”}”(hŒ5Page format bit (1 == standard, 0 == vendor specific)”h]”hŒ5Page format bit (1 == standard, 0 == vendor specific)”…”�”}”(hjÉ€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÅ€h´MÜhjÆ€ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjª€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jÅ€h´MÜhjn€ubj<)�”}”(hŒ6``int sp`` Save page bit (0 == don't save, 1 == save) ”h]”(jB)�”}”(hŒ ``int sp``”h]”jH)�”}”(hjé€h]”hŒint sp”…”�”}”(hjë€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjç€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MÝhjã€ubj^)�”}”(hhh]”hì)�”}”(hŒ*Save page bit (0 == don't save, 1 == save)”h]”hŒ,Save page bit (0 == don’t save, 1 == save)”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jþ€h´MÝhjÿ€ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjã€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jþ€h´MÝhjn€ubj<)�”}”(hŒO``unsigned char *buffer`` request buffer (may not be smaller than eight bytes) ”h]”(jB)�”}”(hŒ``unsigned char *buffer``”h]”jH)�”}”(hj"�h]”hŒunsigned char *buffer”…”�”}”(hj$�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj �ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MÞhj�ubj^)�”}”(hhh]”hì)�”}”(hŒ4request buffer (may not be smaller than eight bytes)”h]”hŒ4request buffer (may not be smaller than eight bytes)”…”�”}”(hj;�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j7�h´MÞhj8�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j7�h´MÞhjn€ubj<)�”}”(hŒ&``int len`` length of request buffer. ”h]”(jB)�”}”(hŒ ``int len``”h]”jH)�”}”(hj[�h]”hŒint len”…”�”}”(hj]�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjY�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MßhjU�ubj^)�”}”(hhh]”hì)�”}”(hŒlength of request buffer.”h]”hŒlength of request buffer.”…”�”}”(hjt�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jp�h´Mßhjq�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjU�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jp�h´Mßhjn€ubj<)�”}”(hŒ ``int timeout`` command timeout ”h]”(jB)�”}”(hŒ``int timeout``”h]”jH)�”}”(hj”�h]”hŒ int timeout”…”�”}”(hj–�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj’�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MàhjŽ�ubj^)�”}”(hhh]”hì)�”}”(hŒcommand timeout”h]”hŒcommand timeout”…”�”}”(hj­�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j©�h´Màhjª�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjŽ�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j©�h´Màhjn€ubj<)�”}”(hŒ1``int retries`` number of retries before failing ”h]”(jB)�”}”(hŒ``int retries``”h]”jH)�”}”(hjÍ�h]”hŒ int retries”…”�”}”(hjÏ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjË�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MáhjÇ�ubj^)�”}”(hhh]”hì)�”}”(hŒ number of retries before failing”h]”hŒ number of retries before failing”…”�”}”(hjæ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jâ�h´Máhjã�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÇ�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jâ�h´Máhjn€ubj<)�”}”(hŒU``struct scsi_mode_data *data`` returns a structure abstracting the mode header data ”h]”(jB)�”}”(hŒ``struct scsi_mode_data *data``”h]”jH)�”}”(hj‚h]”hŒstruct scsi_mode_data *data”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´Mâ•hj‚ubj^)�”}”(hhh]”hì)�”}”(hŒ4returns a structure abstracting the mode header data”h]”hŒ4returns a structure abstracting the mode header data”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j‚h´Mâhj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j‚h´Mâhjn€ubj<)�”}”(hŒƒ``struct scsi_sense_hdr *sshdr`` place to put sense data (or NULL if no sense to be collected). must be SCSI_SENSE_BUFFERSIZE big. ”h]”(jB)�”}”(hŒ ``struct scsi_sense_hdr *sshdr``”h]”jH)�”}”(hj?‚h]”hŒstruct scsi_sense_hdr *sshdr”…”�”}”(hjA‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj=‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´Mähj9‚ubj^)�”}”(hhh]”hì)�”}”(hŒaplace to put sense data (or NULL if no sense to be collected). must be SCSI_SENSE_BUFFERSIZE big.”h]”hŒaplace to put sense data (or NULL if no sense to be collected). must be SCSI_SENSE_BUFFERSIZE big.”…”�”}”(hjX‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MãhjU‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj9‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jT‚h´Mähjn€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjR€ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hj{‚h]”hŒ Description”…”�”}”(hj}‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjy‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MæhjR€ubjt)�”}”(hŒIReturns zero if successful; negative error number or scsi status on error”h]”hì)�”}”(hŒIReturns zero if successful; negative error number or scsi status on error”h]”hŒIReturns zero if successful; negative error number or scsi status on error”…”�”}”(hj•‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´Måhj‘‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jsh³j£‚h´MåhjR€ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj§ih²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_mode_sense (C function)”Œc.scsi_mode_sense”hNt”auh1jGhj§ih²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒÇint scsi_mode_sense (struct scsi_device *sdev, int dbd, int modepage, int subpage, unsigned char *buffer, int len, int timeout, int retries, struct scsi_mode_data *data, struct scsi_sense_hdr *sshdr)”h]”jd)�”}”(hŒÆint scsi_mode_sense(struct scsi_device *sdev, int dbd, int modepage, int subpage, unsigned char *buffer, int len, int timeout, int retries, struct scsi_mode_data *data, struct scsi_sense_hdr *sshdr)”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hjÊ‚h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjÆ‚h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M, ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙ‚h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÆ‚h²hh³jØ‚h´M, ubj�)�”}”(hŒscsi_mode_sense”h]”j“)�”}”(hŒscsi_mode_sense”h]”hŒscsi_mode_sense”…”�”}”(hjë‚h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjç‚ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjÆ‚h²hh³jØ‚h´M, ubjÊ)�”}”(hŒ³(struct scsi_device *sdev, int dbd, int modepage, int subpage, unsigned char *buffer, int len, int timeout, int retries, struct scsi_mode_data *data, struct scsi_sense_hdr *sshdr)”h]”(jÐ)�”}”(hŒstruct scsi_device *sdev”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjƒubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjƒubh)�”}”(hhh]”j“)�”}”(hŒ scsi_device”h]”hŒ scsi_device”…”�”}”(hj%ƒh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj"ƒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j'ƒŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jí‚sbŒc.scsi_mode_sense”†”asbuh1hhjƒubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjEƒh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjƒubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjSƒh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjƒubj“)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hj`ƒh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjƒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjÿ‚ubjÐ)�”}”(hŒint dbd”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hjyƒh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjuƒubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡ƒh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjuƒubj“)�”}”(hŒdbd”h]”hŒdbd”…”�”}”(hj•ƒh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjuƒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjÿ‚ubjÐ)�”}”(hŒ int modepage”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hj®ƒh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjªƒubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼ƒh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjªƒubj“)�”}”(hŒmodepage”h]”hŒmodepage”…”�”}”(hjʃh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjªƒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjÿ‚ubjÐ)�”}”(hŒ int subpage”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hjãƒh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj߃ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñƒh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj߃ubj“)�”}”(hŒsubpage”h]”hŒsubpage”…”�”}”(hjÿƒh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj߃ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjÿ‚ubjÐ)�”}”(hŒunsigned char *buffer”h]”(j’)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj„ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&„h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj„ubj’)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj4„h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj„ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjB„h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj„ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjP„h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj„ubj“)�”}”(hŒbuffer”h]”hŒbuffer”…”�”}”(hj]„h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj„ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjÿ‚ubjÐ)�”}”(hŒint len”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hjv„h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjr„ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„„h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjr„ubj“)�”}”(hŒlen”h]”hŒlen”…”�”}”(hj’„h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjr„ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjÿ‚ubjÐ)�”}”(hŒ int timeout”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hj«„h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj§„ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹„h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj§„ubj“)�”}”(hŒtimeout”h]”hŒtimeout”…”�”}”(hjÇ„h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj§„ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjÿ‚ubjÐ)�”}”(hŒ int retries”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hjà„h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjÜ„ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjî„h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÜ„ubj“)�”}”(hŒretries”h]”hŒretries”…”�”}”(hjü„h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÜ„ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjÿ‚ubjÐ)�”}”(hŒstruct scsi_mode_data *data”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj…ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"…h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj…ubh)�”}”(hhh]”j“)�”}”(hŒscsi_mode_data”h]”hŒscsi_mode_data”…”�”}”(hj3…h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj0…ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j5…Œmodname”NŒ classname”Njôj÷)�”}”jú]”jAƒŒc.scsi_mode_sense”†”asbuh1hhj…ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQ…h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj…ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj_…h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj…ubj“)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjl…h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj…ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjÿ‚ubjÐ)�”}”(hŒstruct scsi_sense_hdr *sshdr”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj……h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj�…ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’…h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj�…ubh)�”}”(hhh]”j“)�”}”(hŒscsi_sense_hdr”h]”hŒscsi_sense_hdr”…”�”}”(hj£…h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj …ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j¥…Œmodname”NŒ classname”Njôj÷)�”}”jú]”jAƒŒc.scsi_mode_sense”†”asbuh1hhj�…ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁ…h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj�…ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjÏ…h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj�…ubj“)�”}”(hŒsshdr”h]”hŒsshdr”…”�”}”(hjÜ…h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj�…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²ˆuh1jcj³j´hj‚h²hh³jØ‚h´M, ubah}”(h]”j½‚ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jØ‚h´M, hj¿‚h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒCissue a mode sense, falling back from 10 to six bytes if necessary.”h]”hŒCissue a mode sense, falling back from 10 to six bytes if necessary.”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M, hj†h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj¿‚h²hh³jØ‚h´M, ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj†jäj†jå‰jæ‰jç‰uh1jXh²hhj§ih³Nh´Nubjé)�”}”(hX**Parameters** ``struct scsi_device *sdev`` SCSI device to be queried ``int dbd`` set to prevent mode sense from returning block descriptors ``int modepage`` mode page being requested ``int subpage`` sub-page of the mode page being requested ``unsigned char *buffer`` request buffer (may not be smaller than eight bytes) ``int len`` length of request buffer. ``int timeout`` command timeout ``int retries`` number of retries before failing ``struct scsi_mode_data *data`` returns a structure abstracting the mode header data ``struct scsi_sense_hdr *sshdr`` place to put sense data (or NULL if no sense to be collected). must be SCSI_SENSE_BUFFERSIZE big. **Description** Returns zero if successful, or a negative error number on failure”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj(†h]”hŒ Parameters”…”�”}”(hj*†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj&†ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M0 hj"†ubj7)�”}”(hhh]”(j<)�”}”(hŒ7``struct scsi_device *sdev`` SCSI device to be queried ”h]”(jB)�”}”(hŒ``struct scsi_device *sdev``”h]”jH)�”}”(hjG†h]”hŒstruct scsi_device *sdev”…”�”}”(hjI†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjE†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M- hjA†ubj^)�”}”(hhh]”hì)�”}”(hŒSCSI device to be queried”h]”hŒSCSI device to be queried”…”�”}”(hj`†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j\†h´M- hj]†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjA†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j\†h´M- hj>†ubj<)�”}”(hŒG``int dbd`` set to prevent mode sense from returning block descriptors ”h]”(jB)�”}”(hŒ ``int dbd``”h]”jH)�”}”(hj€†h]”hŒint dbd”…”�”}”(hj‚†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj~†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M. hjz†ubj^)�”}”(hhh]”hì)�”}”(hŒ:set to prevent mode sense from returning block descriptors”h]”hŒ:set to prevent mode sense from returning block descriptors”…”�”}”(hj™†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j•†h´M. hj–†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjz†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j•†h´M. hj>†ubj<)�”}”(hŒ+``int modepage`` mode page being requested ”h]”(jB)�”}”(hŒ``int modepage``”h]”jH)�”}”(hj¹†h]”hŒ int modepage”…”�”}”(hj»†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj·†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M/ hj³†ubj^)�”}”(hhh]”hì)�”}”(hŒmode page being requested”h]”hŒmode page being requested”…”�”}”(hjÒ†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jΆh´M/ hjφubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj³†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jΆh´M/ hj>†ubj<)�”}”(hŒ:``int subpage`` sub-page of the mode page being requested ”h]”(jB)�”}”(hŒ``int subpage``”h]”jH)�”}”(hjò†h]”hŒ int subpage”…”�”}”(hjô†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjð†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M0 hjì†ubj^)�”}”(hhh]”hì)�”}”(hŒ)sub-page of the mode page being requested”h]”hŒ)sub-page of the mode page being requested”…”�”}”(hj ‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j‡h´M0 hj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjì†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j‡h´M0 hj>†ubj<)�”}”(hŒO``unsigned char *buffer`` request buffer (may not be smaller than eight bytes) ”h]”(jB)�”}”(hŒ``unsigned char *buffer``”h]”jH)�”}”(hj+‡h]”hŒunsigned char *buffer”…”�”}”(hj-‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj)‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M1 hj%‡ubj^)�”}”(hhh]”hì)�”}”(hŒ4request buffer (may not be smaller than eight bytes)”h]”hŒ4request buffer (may not be smaller than eight bytes)”…”�”}”(hjD‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j@‡h´M1 hjA‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj%‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j@‡h´M1 hj>†ubj<)�”}”(hŒ&``int len`` length of request buffer. ”h]”(jB)�”}”(hŒ ``int len``”h]”jH)�”}”(hjd‡h]”hŒint len”…”�”}”(hjf‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjb‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M2 hj^‡ubj^)�”}”(hhh]”hì)�”}”(hŒlength of request buffer.”h]”hŒlength of request buffer.”…”�”}”(hj}‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jy‡h´M2 hjz‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj^‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jy‡h´M2 hj>†ubj<)�”}”(hŒ ``int timeout`` command timeout ”h]”(jB)�”}”(hŒ``int timeout``”h]”jH)�”}”(hj�‡h]”hŒ int timeout”…”�”}”(hjŸ‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj›‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M3 hj—‡ubj^)�”}”(hhh]”hì)�”}”(hŒcommand timeout”h]”hŒcommand timeout”…”�”}”(hj¶‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j²‡h´M3 hj³‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj—‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j²‡h´M3 hj>†ubj<)�”}”(hŒ1``int retries`` number of retries before failing ”h]”(jB)�”}”(hŒ``int retries``”h]”jH)�”}”(hjÖ‡h]”hŒ int retries”…”�”}”(hj؇h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjÔ‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M4 hjЇubj^)�”}”(hhh]”hì)�”}”(hŒ number of retries before failing”h]”hŒ number of retries before failing”…”�”}”(hjï‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jë‡h´M4 hjì‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjЇubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jë‡h´M4 hj>†ubj<)�”}”(hŒU``struct scsi_mode_data *data`` returns a structure abstracting the mode header data ”h]”(jB)�”}”(hŒ``struct scsi_mode_data *data``”h]”jH)�”}”(hjˆh]”hŒstruct scsi_mode_data *data”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M5 hj ˆubj^)�”}”(hhh]”hì)�”}”(hŒ4returns a structure abstracting the mode header data”h]”hŒ4returns a structure abstracting the mode header data”…”�”}”(hj(ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j$ˆh´M5 hj%ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj ˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j$ˆh´M5 hj>†ubj<)�”}”(hŒƒ``struct scsi_sense_hdr *sshdr`` place to put sense data (or NULL if no sense to be collected). must be SCSI_SENSE_BUFFERSIZE big. ”h]”(jB)�”}”(hŒ ``struct scsi_sense_hdr *sshdr``”h]”jH)�”}”(hjHˆh]”hŒstruct scsi_sense_hdr *sshdr”…”�”}”(hjJˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjFˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M7 hjBˆubj^)�”}”(hhh]”hì)�”}”(hŒaplace to put sense data (or NULL if no sense to be collected). must be SCSI_SENSE_BUFFERSIZE big.”h]”hŒaplace to put sense data (or NULL if no sense to be collected). must be SCSI_SENSE_BUFFERSIZE big.”…”�”}”(hjaˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M6 hj^ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjBˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j]ˆh´M7 hj>†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hj"†ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hj„ˆh]”hŒ Description”…”�”}”(hj†ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj‚ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M9 hj"†ubjt)�”}”(hŒAReturns zero if successful, or a negative error number on failure”h]”hì)�”}”(hjœˆh]”hŒAReturns zero if successful, or a negative error number on failure”…”�”}”(hjžˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M8 hjšˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jsh³j«ˆh´M8 hj"†ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj§ih²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ!scsi_test_unit_ready (C function)”Œc.scsi_test_unit_ready”hNt”auh1jGhj§ih²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒkint scsi_test_unit_ready (struct scsi_device *sdev, int timeout, int retries, struct scsi_sense_hdr *sshdr)”h]”jd)�”}”(hŒjint scsi_test_unit_ready(struct scsi_device *sdev, int timeout, int retries, struct scsi_sense_hdr *sshdr)”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hjÒˆh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjΈh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M² ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjáˆh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjΈh²hh³jàˆh´M² ubj�)�”}”(hŒscsi_test_unit_ready”h]”j“)�”}”(hŒscsi_test_unit_ready”h]”hŒscsi_test_unit_ready”…”�”}”(hjóˆh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjïˆubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjΈh²hh³jàˆh´M² ubjÊ)�”}”(hŒR(struct scsi_device *sdev, int timeout, int retries, struct scsi_sense_hdr *sshdr)”h]”(jÐ)�”}”(hŒstruct scsi_device *sdev”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj ‰ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj ‰ubh)�”}”(hhh]”j“)�”}”(hŒ scsi_device”h]”hŒ scsi_device”…”�”}”(hj-‰h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj*‰ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j/‰Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jõˆsbŒc.scsi_test_unit_ready”†”asbuh1hhj ‰ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjM‰h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj ‰ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj[‰h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj ‰ubj“)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hjh‰h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj ‰ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj‰ubjÐ)�”}”(hŒ int timeout”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hj�‰h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj}‰ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�‰h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj}‰ubj“)�”}”(hŒtimeout”h]”hŒtimeout”…”�”}”(hj�‰h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj}‰ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj‰ubjÐ)�”}”(hŒ int retries”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hj¶‰h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj²‰ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjĉh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj²‰ubj“)�”}”(hŒretries”h]”hŒretries”…”�”}”(hjÒ‰h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj²‰ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj‰ubjÐ)�”}”(hŒstruct scsi_sense_hdr *sshdr”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjë‰h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjç‰ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjø‰h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjç‰ubh)�”}”(hhh]”j“)�”}”(hŒscsi_sense_hdr”h]”hŒscsi_sense_hdr”…”�”}”(hj Šh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjŠubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j ŠŒmodname”NŒ classname”Njôj÷)�”}”jú]”jI‰Œc.scsi_test_unit_ready”†”asbuh1hhjç‰ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'Šh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjç‰ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj5Šh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjç‰ubj“)�”}”(hŒsshdr”h]”hŒsshdr”…”�”}”(hjBŠh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjç‰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²ˆuh1jcj³j´hjʈh²hh³jàˆh´M² ubah}”(h]”jňah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jàˆh´M² hjLjh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒtest if unit is ready”h]”hŒtest if unit is ready”…”�”}”(hjlŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M² hjiŠh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjLjh²hh³jàˆh´M² ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj„Šjäj„Šjå‰jæ‰jç‰uh1jXh²hhj§ih³Nh´Nubjé)�”}”(hXˆ**Parameters** ``struct scsi_device *sdev`` scsi device to change the state of. ``int timeout`` command timeout ``int retries`` number of retries before failing ``struct scsi_sense_hdr *sshdr`` outpout pointer for decoded sense information. **Description** Returns zero if successful or an error if TUR failed. For removable media, UNIT_ATTENTION sets ->changed flag.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjŽŠh]”hŒ Parameters”…”�”}”(hj�Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjŒŠubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M¶ hjˆŠubj7)�”}”(hhh]”(j<)�”}”(hŒA``struct scsi_device *sdev`` scsi device to change the state of. ”h]”(jB)�”}”(hŒ``struct scsi_device *sdev``”h]”jH)�”}”(hj­Šh]”hŒstruct scsi_device *sdev”…”�”}”(hj¯Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj«Šubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M³ hj§Šubj^)�”}”(hhh]”hì)�”}”(hŒ#scsi device to change the state of.”h]”hŒ#scsi device to change the state of.”…”�”}”(hjÆŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jŠh´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 timeout`` command timeout ”h]”(jB)�”}”(hŒ``int timeout``”h]”jH)�”}”(hjæŠh]”hŒ int timeout”…”�”}”(hjèŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjäŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M´ hjàŠubj^)�”}”(hhh]”hì)�”}”(hŒcommand timeout”h]”hŒcommand timeout”…”�”}”(hjÿŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jûŠh´M´ hjüŠubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjàŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jûŠh´M´ hj¤Šubj<)�”}”(hŒ1``int retries`` number of retries before failing ”h]”(jB)�”}”(hŒ``int retries``”h]”jH)�”}”(hj‹h]”hŒ int retries”…”�”}”(hj!‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´Mµ hj‹ubj^)�”}”(hhh]”hì)�”}”(hŒ number of retries before failing”h]”hŒ number of retries before failing”…”�”}”(hj8‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j4‹h´Mµ hj5‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j4‹h´Mµ hj¤Šubj<)�”}”(hŒP``struct scsi_sense_hdr *sshdr`` outpout pointer for decoded sense information. ”h]”(jB)�”}”(hŒ ``struct scsi_sense_hdr *sshdr``”h]”jH)�”}”(hjX‹h]”hŒstruct scsi_sense_hdr *sshdr”…”�”}”(hjZ‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjV‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M¶ hjR‹ubj^)�”}”(hhh]”hì)�”}”(hŒ.outpout pointer for decoded sense information.”h]”hŒ.outpout pointer for decoded sense information.”…”�”}”(hjq‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jm‹h´M¶ hjn‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjR‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jm‹h´M¶ hj¤Šubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjˆŠubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hj“‹h]”hŒ Description”…”�”}”(hj•‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj‘‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M¸ hjˆŠubjt)�”}”(hŒoReturns zero if successful or an error if TUR failed. For removable media, UNIT_ATTENTION sets ->changed flag.”h]”hì)�”}”(hŒoReturns zero if successful or an error if TUR failed. For removable media, UNIT_ATTENTION sets ->changed flag.”h]”hŒoReturns zero if successful or an error if TUR failed. For removable media, UNIT_ATTENTION sets ->changed flag.”…”�”}”(hj­‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M· hj©‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jsh³j»‹h´M· hjˆŠubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj§ih²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ"scsi_device_set_state (C function)”Œc.scsi_device_set_state”hNt”auh1jGhj§ih²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒRint scsi_device_set_state (struct scsi_device *sdev, enum scsi_device_state state)”h]”jd)�”}”(hŒQint scsi_device_set_state(struct scsi_device *sdev, enum scsi_device_state state)”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hjâ‹h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjÞ‹h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MÖ ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñ‹h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÞ‹h²hh³jð‹h´MÖ ubj�)�”}”(hŒscsi_device_set_state”h]”j“)�”}”(hŒscsi_device_set_state”h]”hŒscsi_device_set_state”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÿ‹ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjÞ‹h²hh³jð‹h´MÖ ubjÊ)�”}”(hŒ8(struct scsi_device *sdev, enum scsi_device_state state)”h]”(jÐ)�”}”(hŒstruct scsi_device *sdev”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjŒubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,Œh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjŒubh)�”}”(hhh]”j“)�”}”(hŒ scsi_device”h]”hŒ scsi_device”…”�”}”(hj=Œh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj:Œubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j?ŒŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jŒsbŒc.scsi_device_set_state”†”asbuh1hhjŒubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]Œh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjŒubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjkŒh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjŒubj“)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hjxŒh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjŒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjŒubjÐ)�”}”(hŒenum scsi_device_state state”h]”(jj)�”}”(hjf9h]”hŒenum”…”�”}”(hj‘Œh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj�Œubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjžŒh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj�Œubh)�”}”(hhh]”j“)�”}”(hŒscsi_device_state”h]”hŒscsi_device_state”…”�”}”(hj¯Œh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj¬Œubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j±ŒŒmodname”NŒ classname”Njôj÷)�”}”jú]”jYŒŒc.scsi_device_set_state”†”asbuh1hhj�Œubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍŒh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj�Œubj“)�”}”(hŒstate”h]”hŒstate”…”�”}”(hjÛŒh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj�Œ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²ˆuh1jcj³j´hjÚ‹h²hh³jð‹h´MÖ ubah}”(h]”jÕ‹ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jð‹h´MÖ hj׋h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ5Take the given device through the device state model.”h]”hŒ5Take the given device through the device state model.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MÖ hj�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj׋h²hh³jð‹h´MÖ ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj�jäj�jå‰jæ‰jç‰uh1jXh²hhj§ih³Nh´Nubjé)�”}”(hŒõ**Parameters** ``struct scsi_device *sdev`` scsi device to change the state of. ``enum scsi_device_state state`` state to change to. **Description** Returns zero if successful or an error if the requested transition is illegal.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj'�h]”hŒ Parameters”…”�”}”(hj)�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj%�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MÚ hj!�ubj7)�”}”(hhh]”(j<)�”}”(hŒA``struct scsi_device *sdev`` scsi device to change the state of. ”h]”(jB)�”}”(hŒ``struct scsi_device *sdev``”h]”jH)�”}”(hjF�h]”hŒstruct scsi_device *sdev”…”�”}”(hjH�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjD�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M× hj@�ubj^)�”}”(hhh]”hì)�”}”(hŒ#scsi device to change the state of.”h]”hŒ#scsi device to change the state of.”…”�”}”(hj_�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j[�h´M× hj\�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj@�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j[�h´M× hj=�ubj<)�”}”(hŒ5``enum scsi_device_state state`` state to change to. ”h]”(jB)�”}”(hŒ ``enum scsi_device_state state``”h]”jH)�”}”(hj�h]”hŒenum scsi_device_state state”…”�”}”(hj��h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj}�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MØ hjy�ubj^)�”}”(hhh]”hì)�”}”(hŒstate to change to.”h]”hŒstate to change to.”…”�”}”(hj˜�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j”�h´MØ hj•�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjy�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j”�h´MØ hj=�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hj!�ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjº�h]”hŒ Description”…”�”}”(hj¼�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj¸�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MÚ hj!�ubjt)�”}”(hŒNReturns zero if successful or an error if the requested transition is illegal.”h]”hì)�”}”(hŒNReturns zero if successful or an error if the requested transition is illegal.”h]”hŒNReturns zero if successful or an error if the requested transition is illegal.”…”�”}”(hjÔ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MÙ hjÐ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jsh³jâ�h´MÙ hj!�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj§ih²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒsdev_evt_send (C function)”Œc.sdev_evt_send”hNt”auh1jGhj§ih²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒEvoid sdev_evt_send (struct scsi_device *sdev, struct scsi_event *evt)”h]”jd)�”}”(hŒDvoid sdev_evt_send(struct scsi_device *sdev, struct scsi_event *evt)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj Žh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjŽh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M® ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjŽh²hh³jŽh´M® ubj�)�”}”(hŒ sdev_evt_send”h]”j“)�”}”(hŒ sdev_evt_send”h]”hŒ sdev_evt_send”…”�”}”(hj*Žh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj&Žubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjŽh²hh³jŽh´M® ubjÊ)�”}”(hŒ2(struct scsi_device *sdev, struct scsi_event *evt)”h]”(jÐ)�”}”(hŒstruct scsi_device *sdev”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjFŽh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjBŽubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSŽh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjBŽubh)�”}”(hhh]”j“)�”}”(hŒ scsi_device”h]”hŒ scsi_device”…”�”}”(hjdŽh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjaŽubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jfŽŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j j,ŽsbŒc.sdev_evt_send”†”asbuh1hhjBŽubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„Žh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjBŽubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj’Žh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjBŽubj“)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hjŸŽh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjBŽubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj>ŽubjÐ)�”}”(hŒstruct scsi_event *evt”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj¸Žh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj´Žubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅŽh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj´Žubh)�”}”(hhh]”j“)�”}”(hŒ scsi_event”h]”hŒ scsi_event”…”�”}”(hjÖŽh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÓŽubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jØŽŒmodname”NŒ classname”Njôj÷)�”}”jú]”j€ŽŒc.sdev_evt_send”†”asbuh1hhj´Žubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjôŽh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj´Žubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj´Žubj“)�”}”(hŒevt”h]”hŒevt”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj´Ž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²ˆuh1jcj³j´hjŽh²hh³jŽh´M® ubah}”(h]”jü�ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jŽh´M® hjþ�h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ$send asserted event to uevent thread”h]”hŒ$send asserted event to uevent thread”…”�”}”(hj9�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M® hj6�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjþ�h²hh³jŽh´M® ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjQ�jäjQ�jå‰jæ‰jç‰uh1jXh²hhj§ih³Nh´Nubjé)�”}”(hŒ¸**Parameters** ``struct scsi_device *sdev`` scsi_device event occurred on ``struct scsi_event *evt`` event to send **Description** Assert scsi device event asynchronously.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj[�h]”hŒ Parameters”…”�”}”(hj]�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjY�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M² hjU�ubj7)�”}”(hhh]”(j<)�”}”(hŒ;``struct scsi_device *sdev`` scsi_device event occurred on ”h]”(jB)�”}”(hŒ``struct scsi_device *sdev``”h]”jH)�”}”(hjz�h]”hŒstruct scsi_device *sdev”…”�”}”(hj|�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjx�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M¯ hjt�ubj^)�”}”(hhh]”hì)�”}”(hŒscsi_device event occurred on”h]”hŒscsi_device event occurred on”…”�”}”(hj“�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j��h´M¯ hj��ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjt�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j��h´M¯ hjq�ubj<)�”}”(hŒ)``struct scsi_event *evt`` event to send ”h]”(jB)�”}”(hŒ``struct scsi_event *evt``”h]”jH)�”}”(hj³�h]”hŒstruct scsi_event *evt”…”�”}”(hjµ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj±�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M° hj­�ubj^)�”}”(hhh]”hì)�”}”(hŒ event to send”h]”hŒ event to send”…”�”}”(hjÌ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÈ�h´M° hjÉ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj­�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jÈ�h´M° hjq�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjU�ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjî�h]”hŒ Description”…”�”}”(hjð�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjì�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M² hjU�ubjt)�”}”(hŒ(Assert scsi device event asynchronously.”h]”hì)�”}”(hj�h]”hŒ(Assert scsi device event asynchronously.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M± hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jsh³j�h´M± hjU�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj§ih²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒsdev_evt_alloc (C function)”Œc.sdev_evt_alloc”hNt”auh1jGhj§ih²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒTstruct scsi_event * sdev_evt_alloc (enum scsi_device_event evt_type, gfp_t gfpflags)”h]”jd)�”}”(hŒRstruct scsi_event *sdev_evt_alloc(enum scsi_device_event evt_type, gfp_t gfpflags)”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj<�h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj8�h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MÊ ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJ�h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj8�h²hh³jI�h´MÊ ubh)�”}”(hhh]”j“)�”}”(hŒ scsi_event”h]”hŒ scsi_event”…”�”}”(hj[�h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjX�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j]�Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j Œsdev_evt_alloc”sbŒc.sdev_evt_alloc”†”asbuh1hhj8�h²hh³jI�h´MÊ ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|�h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj8�h²hh³jI�h´MÊ ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjŠ�h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj8�h²hh³jI�h´MÊ ubj�)�”}”(hŒsdev_evt_alloc”h]”j“)�”}”(hjy�h]”hŒsdev_evt_alloc”…”�”}”(hj›�h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj—�ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj8�h²hh³jI�h´MÊ ubjÊ)�”}”(hŒ1(enum scsi_device_event evt_type, gfp_t gfpflags)”h]”(jÐ)�”}”(hŒenum scsi_device_event evt_type”h]”(jj)�”}”(hjf9h]”hŒenum”…”�”}”(hj¶�h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj²�ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃ�h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj²�ubh)�”}”(hhh]”j“)�”}”(hŒscsi_device_event”h]”hŒscsi_device_event”…”�”}”(hjÔ�h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÑ�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jÖ�Œmodname”NŒ classname”Njôj÷)�”}”jú]”jw�Œc.sdev_evt_alloc”†”asbuh1hhj²�ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjò�h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj²�ubj“)�”}”(hŒevt_type”h]”hŒevt_type”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj²�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj®�ubjÐ)�”}”(hŒgfp_t gfpflags”h]”(h)�”}”(hhh]”j“)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj‘ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j‘Œmodname”NŒ classname”Njôj÷)�”}”jú]”jw�Œc.sdev_evt_alloc”†”asbuh1hhj‘ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:‘h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj‘ubj“)�”}”(hŒgfpflags”h]”hŒgfpflags”…”�”}”(hjH‘h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj‘ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj®�ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhj8�h²hh³jI�h´MÊ ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj4�h²hh³jI�h´MÊ ubah}”(h]”j/�ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jI�h´MÊ hj1�h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒallocate a new scsi event”h]”hŒallocate a new scsi event”…”�”}”(hjr‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MÊ hjo‘h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj1�h²hh³jI�h´MÊ ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjŠ‘jäjŠ‘jå‰jæ‰jç‰uh1jXh²hhj§ih³Nh´Nubjé)�”}”(hŒ½**Parameters** ``enum scsi_device_event evt_type`` type of event to allocate ``gfp_t gfpflags`` GFP flags for allocation **Description** Allocates and returns a new scsi_event.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj”‘h]”hŒ Parameters”…”�”}”(hj–‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj’‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MÎ hjŽ‘ubj7)�”}”(hhh]”(j<)�”}”(hŒ>``enum scsi_device_event evt_type`` type of event to allocate ”h]”(jB)�”}”(hŒ#``enum scsi_device_event evt_type``”h]”jH)�”}”(hj³‘h]”hŒenum scsi_device_event evt_type”…”�”}”(hjµ‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj±‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MË hj­‘ubj^)�”}”(hhh]”hì)�”}”(hŒtype of event to allocate”h]”hŒtype of event to allocate”…”�”}”(hjÌ‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÈ‘h´MË hjÉ‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj­‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jÈ‘h´MË hjª‘ubj<)�”}”(hŒ,``gfp_t gfpflags`` GFP flags for allocation ”h]”(jB)�”}”(hŒ``gfp_t gfpflags``”h]”jH)�”}”(hjì‘h]”hŒgfp_t gfpflags”…”�”}”(hjî‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjê‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MÌ hjæ‘ubj^)�”}”(hhh]”hì)�”}”(hŒGFP flags for allocation”h]”hŒGFP flags for allocation”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³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&]”uh1j6hjŽ‘ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hj'’h]”hŒ Description”…”�”}”(hj)’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj%’ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MÎ hjŽ‘ubjt)�”}”(hŒ'Allocates and returns a new scsi_event.”h]”hì)�”}”(hj?’h]”hŒ'Allocates and returns a new scsi_event.”…”�”}”(hjA’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MÍ hj=’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jsh³jN’h´MÍ hjŽ‘ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj§ih²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ!sdev_evt_send_simple (C function)”Œc.sdev_evt_send_simple”hNt”auh1jGhj§ih²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒevoid sdev_evt_send_simple (struct scsi_device *sdev, enum scsi_device_event evt_type, gfp_t gfpflags)”h]”jd)�”}”(hŒdvoid sdev_evt_send_simple(struct scsi_device *sdev, enum scsi_device_event evt_type, gfp_t gfpflags)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hju’h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjq’h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´Mî ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„’h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjq’h²hh³jƒ’h´Mî ubj�)�”}”(hŒsdev_evt_send_simple”h]”j“)�”}”(hŒsdev_evt_send_simple”h]”hŒsdev_evt_send_simple”…”�”}”(hj–’h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj’’ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjq’h²hh³jƒ’h´Mî ubjÊ)�”}”(hŒK(struct scsi_device *sdev, enum scsi_device_event evt_type, gfp_t gfpflags)”h]”(jÐ)�”}”(hŒstruct scsi_device *sdev”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj²’h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj®’ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿’h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj®’ubh)�”}”(hhh]”j“)�”}”(hŒ scsi_device”h]”hŒ scsi_device”…”�”}”(hjÐ’h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÍ’ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jÒ’Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j j˜’sbŒc.sdev_evt_send_simple”†”asbuh1hhj®’ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjð’h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj®’ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjþ’h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj®’ubj“)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hj “h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj®’ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjª’ubjÐ)�”}”(hŒenum scsi_device_event evt_type”h]”(jj)�”}”(hjf9h]”hŒenum”…”�”}”(hj$“h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj “ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1“h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj “ubh)�”}”(hhh]”j“)�”}”(hŒscsi_device_event”h]”hŒscsi_device_event”…”�”}”(hjB“h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj?“ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jD“Œmodname”NŒ classname”Njôj÷)�”}”jú]”jì’Œc.sdev_evt_send_simple”†”asbuh1hhj “ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`“h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj “ubj“)�”}”(hŒevt_type”h]”hŒevt_type”…”�”}”(hjn“h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj “ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjª’ubjÐ)�”}”(hŒgfp_t gfpflags”h]”(h)�”}”(hhh]”j“)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hjŠ“h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj‡“ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jŒ“Œmodname”NŒ classname”Njôj÷)�”}”jú]”jì’Œc.sdev_evt_send_simple”†”asbuh1hhjƒ“ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨“h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjƒ“ubj“)�”}”(hŒgfpflags”h]”hŒgfpflags”…”�”}”(hj¶“h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjƒ“ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjª’ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjq’h²hh³jƒ’h´Mî ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjm’h²hh³jƒ’h´Mî ubah}”(h]”jh’ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jƒ’h´Mî hjj’h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ$send asserted event to uevent thread”h]”hŒ$send asserted event to uevent thread”…”�”}”(hjà“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´Mî hjÝ“h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjj’h²hh³jƒ’h´Mî ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjø“jäjø“jå‰jæ‰jç‰uh1jXh²hhj§ih³Nh´Nubjé)�”}”(hX **Parameters** ``struct scsi_device *sdev`` scsi_device event occurred on ``enum scsi_device_event evt_type`` type of event to send ``gfp_t gfpflags`` GFP flags for allocation **Description** Assert scsi device event asynchronously, given an event type.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj”h]”hŒ Parameters”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´Mò hjü“ubj7)�”}”(hhh]”(j<)�”}”(hŒ;``struct scsi_device *sdev`` scsi_device event occurred on ”h]”(jB)�”}”(hŒ``struct scsi_device *sdev``”h]”jH)�”}”(hj!”h]”hŒstruct scsi_device *sdev”…”�”}”(hj#”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´Mï hj”ubj^)�”}”(hhh]”hì)�”}”(hŒscsi_device event occurred on”h]”hŒscsi_device event occurred on”…”�”}”(hj:”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j6”h´Mï hj7”ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j6”h´Mï hj”ubj<)�”}”(hŒ:``enum scsi_device_event evt_type`` type of event to send ”h]”(jB)�”}”(hŒ#``enum scsi_device_event evt_type``”h]”jH)�”}”(hjZ”h]”hŒenum scsi_device_event evt_type”…”�”}”(hj\”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjX”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´Mð hjT”ubj^)�”}”(hhh]”hì)�”}”(hŒtype of event to send”h]”hŒtype of event to send”…”�”}”(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ð hj”ubj<)�”}”(hŒ,``gfp_t gfpflags`` GFP flags for allocation ”h]”(jB)�”}”(hŒ``gfp_t gfpflags``”h]”jH)�”}”(hj“”h]”hŒgfp_t gfpflags”…”�”}”(hj•”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj‘”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´Mñ hj�”ubj^)�”}”(hhh]”hì)�”}”(hŒGFP flags for allocation”h]”hŒGFP flags for allocation”…”�”}”(hj¬”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³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&]”uh1j6hjü“ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjΔh]”hŒ Description”…”�”}”(hjДh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÌ”ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´Mó hjü“ubjt)�”}”(hŒ=Assert scsi device event asynchronously, given an event type.”h]”hì)�”}”(hjæ”h]”hŒ=Assert scsi device event asynchronously, given an event type.”…”�”}”(hjè”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´Mò hjä”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jsh³jõ”h´Mò hjü“ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj§ih²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ scsi_device_quiesce (C function)”Œc.scsi_device_quiesce”hNt”auh1jGhj§ih²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ2int scsi_device_quiesce (struct scsi_device *sdev)”h]”jd)�”}”(hŒ1int scsi_device_quiesce(struct scsi_device *sdev)”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj•h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+•h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj•h²hh³j*•h´M ubj�)�”}”(hŒscsi_device_quiesce”h]”j“)�”}”(hŒscsi_device_quiesce”h]”hŒscsi_device_quiesce”…”�”}”(hj=•h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj9•ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj•h²hh³j*•h´M ubjÊ)�”}”(hŒ(struct scsi_device *sdev)”h]”jÐ)�”}”(hŒstruct scsi_device *sdev”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjY•h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjU•ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjf•h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjU•ubh)�”}”(hhh]”j“)�”}”(hŒ scsi_device”h]”hŒ scsi_device”…”�”}”(hjw•h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjt•ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jy•Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j j?•sbŒc.scsi_device_quiesce”†”asbuh1hhjU•ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—•h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjU•ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj¥•h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjU•ubj“)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hj²•h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjU•ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjQ•ubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhj•h²hh³j*•h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj•h²hh³j*•h´M ubah}”(h]”j•ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j*•h´M hj•h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ+Block all commands except power management.”h]”hŒ+Block all commands except power management.”…”�”}”(hjÜ•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M hjÙ•h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj•h²hh³j*•h´M ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjô•jäjô•jå‰jæ‰jç‰uh1jXh²hhj§ih³Nh´Nubjé)�”}”(hX¦**Parameters** ``struct scsi_device *sdev`` scsi device to quiesce. **Description** This works by trying to transition to the SDEV_QUIESCE state (which must be a legal transition). When the device is in this state, only power management requests will be accepted, all others will be deferred. Must be called with user context, may sleep. Returns zero if successful or an error if not.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjþ•h]”hŒ Parameters”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjü•ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M hjø•ubj7)�”}”(hhh]”j<)�”}”(hŒ5``struct scsi_device *sdev`` scsi device to quiesce. ”h]”(jB)�”}”(hŒ``struct scsi_device *sdev``”h]”jH)�”}”(hj–h]”hŒstruct scsi_device *sdev”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M hj–ubj^)�”}”(hhh]”hì)�”}”(hŒscsi device to quiesce.”h]”hŒscsi device to quiesce.”…”�”}”(hj6–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j2–h´M hj3–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j2–h´M hj–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjø•ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjX–h]”hŒ Description”…”�”}”(hjZ–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjV–ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M hjø•ubjt)�”}”(hX/This works by trying to transition to the SDEV_QUIESCE state (which must be a legal transition). When the device is in this state, only power management requests will be accepted, all others will be deferred. Must be called with user context, may sleep. Returns zero if successful or an error if not.”h]”(hì)�”}”(hŒÑThis works by trying to transition to the SDEV_QUIESCE state (which must be a legal transition). When the device is in this state, only power management requests will be accepted, all others will be deferred.”h]”hŒÑThis works by trying to transition to the SDEV_QUIESCE state (which must be a legal transition). When the device is in this state, only power management requests will be accepted, all others will be deferred.”…”�”}”(hjr–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M hjn–ubhì)�”}”(hŒ,Must be called with user context, may sleep.”h]”hŒ,Must be called with user context, may sleep.”…”�”}”(hj�–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M hjn–ubhì)�”}”(hŒ.Returns zero if successful or an error if not.”h]”hŒ.Returns zero if successful or an error if not.”…”�”}”(hj�–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M hjn–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jsh³j€–h´M hjø•ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj§ih²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_device_resume (C function)”Œc.scsi_device_resume”hNt”auh1jGhj§ih²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ2void scsi_device_resume (struct scsi_device *sdev)”h]”jd)�”}”(hŒ1void scsi_device_resume(struct scsi_device *sdev)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÅ–h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjÁ–h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M: ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔ–h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÁ–h²hh³jÓ–h´M: ubj�)�”}”(hŒscsi_device_resume”h]”j“)�”}”(hŒscsi_device_resume”h]”hŒscsi_device_resume”…”�”}”(hjæ–h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjâ–ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjÁ–h²hh³jÓ–h´M: ubjÊ)�”}”(hŒ(struct scsi_device *sdev)”h]”jÐ)�”}”(hŒstruct scsi_device *sdev”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjþ–ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjþ–ubh)�”}”(hhh]”j“)�”}”(hŒ scsi_device”h]”hŒ scsi_device”…”�”}”(hj —h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj—ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j"—Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jè–sbŒc.scsi_device_resume”†”asbuh1hhjþ–ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@—h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjþ–ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjN—h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjþ–ubj“)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hj[—h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjþ–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²ˆuh1jcj³j´hj½–h²hh³jÓ–h´M: ubah}”(h]”j¸–ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jÓ–h´M: hjº–h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ2Restart user issued commands to a quiesced device.”h]”hŒ2Restart user issued commands to a quiesced device.”…”�”}”(hj…—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M: hj‚—h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjº–h²hh³jÓ–h´M: ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj�—jäj�—jå‰jæ‰jç‰uh1jXh²hhj§ih³Nh´Nubjé)�”}”(hŒÜ**Parameters** ``struct scsi_device *sdev`` scsi device to resume. **Description** Moves the device from quiesced back to running and restarts the queues. Must be called with user context, may sleep.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj§—h]”hŒ Parameters”…”�”}”(hj©—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj¥—ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M> hj¡—ubj7)�”}”(hhh]”j<)�”}”(hŒ4``struct scsi_device *sdev`` scsi device to resume. ”h]”(jB)�”}”(hŒ``struct scsi_device *sdev``”h]”jH)�”}”(hjÆ—h]”hŒstruct scsi_device *sdev”…”�”}”(hjÈ—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjÄ—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M; hjÀ—ubj^)�”}”(hhh]”hì)�”}”(hŒscsi device to resume.”h]”hŒscsi device to resume.”…”�”}”(hjß—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³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&]”uh1j6hj¡—ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hj˜h]”hŒ Description”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÿ—ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M= hj¡—ubjt)�”}”(hŒuMoves the device from quiesced back to running and restarts the queues. Must be called with user context, may sleep.”h]”(hì)�”}”(hŒGMoves the device from quiesced back to running and restarts the queues.”h]”hŒGMoves the device from quiesced back to running and restarts the queues.”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M< hj˜ubhì)�”}”(hŒ,Must be called with user context, may sleep.”h]”hŒ,Must be called with user context, may sleep.”…”�”}”(hj*˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M? hj˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jsh³j)˜h´M< hj¡—ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj§ih²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ.scsi_internal_device_block_nowait (C function)”Œ#c.scsi_internal_device_block_nowait”hNt”auh1jGhj§ih²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ@int scsi_internal_device_block_nowait (struct scsi_device *sdev)”h]”jd)�”}”(hŒ?int scsi_internal_device_block_nowait(struct scsi_device *sdev)”•h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hj_˜h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj[˜h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´Mˆ ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjn˜h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj[˜h²hh³jm˜h´Mˆ ubj�)�”}”(hŒ!scsi_internal_device_block_nowait”h]”j“)�”}”(hŒ!scsi_internal_device_block_nowait”h]”hŒ!scsi_internal_device_block_nowait”…”�”}”(hj€˜h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj|˜ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj[˜h²hh³jm˜h´Mˆ ubjÊ)�”}”(hŒ(struct scsi_device *sdev)”h]”jÐ)�”}”(hŒstruct scsi_device *sdev”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjœ˜h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj˜˜ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©˜h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj˜˜ubh)�”}”(hhh]”j“)�”}”(hŒ scsi_device”h]”hŒ scsi_device”…”�”}”(hjº˜h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj·˜ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j¼˜Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j j‚˜sbŒ#c.scsi_internal_device_block_nowait”†”asbuh1hhj˜˜ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚ˜h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj˜˜ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjè˜h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj˜˜ubj“)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hjõ˜h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj˜˜ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj”˜ubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhj[˜h²hh³jm˜h´Mˆ ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjW˜h²hh³jm˜h´Mˆ ubah}”(h]”jR˜ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jm˜h´Mˆ hjT˜h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ)try to transition to the SDEV_BLOCK state”h]”hŒ)try to transition to the SDEV_BLOCK state”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´Mˆ hj™h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjT˜h²hh³jm˜h´Mˆ ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj7™jäj7™jå‰jæ‰jç‰uh1jXh²hhj§ih³Nh´Nubjé)�”}”(hXã**Parameters** ``struct scsi_device *sdev`` device to block **Description** Pause SCSI command processing on the specified device. Does not sleep. Returns zero if successful or a negative error code upon failure. **Notes** This routine transitions the device to the SDEV_BLOCK state (which must be a legal transition). When the device is in this state, command processing is paused until the device leaves the SDEV_BLOCK state. See also scsi_internal_device_unblock_nowait().”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjA™h]”hŒ Parameters”…”�”}”(hjC™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj?™ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MŒ hj;™ubj7)�”}”(hhh]”j<)�”}”(hŒ-``struct scsi_device *sdev`` device to block ”h]”(jB)�”}”(hŒ``struct scsi_device *sdev``”h]”jH)�”}”(hj`™h]”hŒstruct scsi_device *sdev”…”�”}”(hjb™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj^™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M‰ hjZ™ubj^)�”}”(hhh]”hì)�”}”(hŒdevice to block”h]”hŒdevice to block”…”�”}”(hjy™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ju™h´M‰ hjv™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjZ™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³ju™h´M‰ hjW™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj;™ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hj›™h]”hŒ Description”…”�”}”(hj�™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj™™ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M‹ hj;™ubhì)�”}”(hŒFPause SCSI command processing on the specified device. Does not sleep.”h]”hŒFPause SCSI command processing on the specified device. Does not sleep.”…”�”}”(hj±™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MŠ hj;™ubhì)�”}”(hŒAReturns zero if successful or a negative error code upon failure.”h]”hŒAReturns zero if successful or a negative error code upon failure.”…”�”}”(hjÀ™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MŒ hj;™ubhì)�”}”(hŒ **Notes**”h]”jó)�”}”(hjÑ™h]”hŒNotes”…”�”}”(hjÓ™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÏ™ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MŽ hj;™ubhì)�”}”(hŒüThis routine transitions the device to the SDEV_BLOCK state (which must be a legal transition). When the device is in this state, command processing is paused until the device leaves the SDEV_BLOCK state. See also scsi_internal_device_unblock_nowait().”h]”hŒüThis routine transitions the device to the SDEV_BLOCK state (which must be a legal transition). When the device is in this state, command processing is paused until the device leaves the SDEV_BLOCK state. See also scsi_internal_device_unblock_nowait().”…”�”}”(hjç™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M� hj;™ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj§ih²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ0scsi_internal_device_unblock_nowait (C function)”Œ%c.scsi_internal_device_unblock_nowait”hNt”auh1jGhj§ih²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒdint scsi_internal_device_unblock_nowait (struct scsi_device *sdev, enum scsi_device_state new_state)”h]”jd)�”}”(hŒcint scsi_internal_device_unblock_nowait(struct scsi_device *sdev, enum scsi_device_state new_state)”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjšh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MÊ ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%šh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjšh²hh³j$šh´MÊ ubj�)�”}”(hŒ#scsi_internal_device_unblock_nowait”h]”j“)�”}”(hŒ#scsi_internal_device_unblock_nowait”h]”hŒ#scsi_internal_device_unblock_nowait”…”�”}”(hj7šh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj3šubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjšh²hh³j$šh´MÊ ubjÊ)�”}”(hŒ<(struct scsi_device *sdev, enum scsi_device_state new_state)”h]”(jÐ)�”}”(hŒstruct scsi_device *sdev”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjSšh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjOšubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`šh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjOšubh)�”}”(hhh]”j“)�”}”(hŒ scsi_device”h]”hŒ scsi_device”…”�”}”(hjqšh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjnšubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jsšŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j j9šsbŒ%c.scsi_internal_device_unblock_nowait”†”asbuh1hhjOšubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘šh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjOšubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjŸšh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjOšubj“)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hj¬šh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjOšubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjKšubjÐ)�”}”(hŒ enum scsi_device_state new_state”h]”(jj)�”}”(hjf9h]”hŒenum”…”�”}”(hjÅšh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjÁšubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒšh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÁšubh)�”}”(hhh]”j“)�”}”(hŒscsi_device_state”h]”hŒscsi_device_state”…”�”}”(hjãšh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjàšubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j嚌modname”NŒ classname”Njôj÷)�”}”jú]”j�šŒ%c.scsi_internal_device_unblock_nowait”†”asbuh1hhjÁšubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÁšubj“)�”}”(hŒ new_state”h]”hŒ new_state”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÁšubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjKšubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjšh²hh³j$šh´MÊ ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjšh²hh³j$šh´MÊ ubah}”(h]”j šah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j$šh´MÊ hj šh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ%resume a device after a block request”h]”hŒ%resume a device after a block request”…”�”}”(hj9›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MÊ hj6›h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj šh²hh³j$šh´MÊ ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjQ›jäjQ›jå‰jæ‰jç‰uh1jXh²hhj§ih³Nh´Nubjé)�”}”(hX**Parameters** ``struct scsi_device *sdev`` device to resume ``enum scsi_device_state new_state`` state to set the device to after unblocking **Description** Restart the device queue for a previously suspended SCSI device. Does not sleep. Returns zero if successful or a negative error code upon failure. **Notes** This routine transitions the device to the SDEV_RUNNING state or to one of the offline states (which must be a legal transition) allowing the midlayer to goose the queue for this device.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj[›h]”hŒ Parameters”…”�”}”(hj]›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjY›ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MÎ hjU›ubj7)�”}”(hhh]”(j<)�”}”(hŒ.``struct scsi_device *sdev`` device to resume ”h]”(jB)�”}”(hŒ``struct scsi_device *sdev``”h]”jH)�”}”(hjz›h]”hŒstruct scsi_device *sdev”…”�”}”(hj|›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjx›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MË hjt›ubj^)�”}”(hhh]”hì)�”}”(hŒdevice to resume”h]”hŒdevice to resume”…”�”}”(hj“›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j�›h´MË hj�›ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjt›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j�›h´MË hjq›ubj<)�”}”(hŒQ``enum scsi_device_state new_state`` state to set the device to after unblocking ”h]”(jB)�”}”(hŒ$``enum scsi_device_state new_state``”h]”jH)�”}”(hj³›h]”hŒ enum scsi_device_state new_state”…”�”}”(hjµ›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj±›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MÌ hj­›ubj^)�”}”(hhh]”hì)�”}”(hŒ+state to set the device to after unblocking”h]”hŒ+state to set the device to after unblocking”…”�”}”(hjÌ›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÈ›h´MÌ hjÉ›ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj­›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jÈ›h´MÌ hjq›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjU›ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjî›h]”hŒ Description”…”�”}”(hjð›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjì›ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MÎ hjU›ubhì)�”}”(hŒPRestart the device queue for a previously suspended SCSI device. Does not sleep.”h]”hŒPRestart the device queue for a previously suspended SCSI device. Does not sleep.”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MÍ hjU›ubhì)�”}”(hŒAReturns zero if successful or a negative error code upon failure.”h]”hŒAReturns zero if successful or a negative error code upon failure.”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MÐ hjU›ubhì)�”}”(hŒ **Notes**”h]”jó)�”}”(hj$œh]”hŒNotes”…”�”}”(hj&œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj"œubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MÒ hjU›ubhì)�”}”(hŒºThis routine transitions the device to the SDEV_RUNNING state or to one of the offline states (which must be a legal transition) allowing the midlayer to goose the queue for this device.”h]”hŒºThis routine transitions the device to the SDEV_RUNNING state or to one of the offline states (which must be a legal transition) allowing the midlayer to goose the queue for this device.”…”�”}”(hj:œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MÓ hjU›ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj§ih²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_block_targets (C function)”Œc.scsi_block_targets”hNt”auh1jGhj§ih²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒEvoid scsi_block_targets (struct Scsi_Host *shost, struct device *dev)”h]”jd)�”}”(hŒDvoid scsi_block_targets(struct Scsi_Host *shost, struct device *dev)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjiœh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjeœh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M# ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxœh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjeœh²hh³jwœh´M# ubj�)�”}”(hŒscsi_block_targets”h]”j“)�”}”(hŒscsi_block_targets”h]”hŒscsi_block_targets”…”�”}”(hjŠœh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj†œubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjeœh²hh³jwœh´M# ubjÊ)�”}”(hŒ-(struct Scsi_Host *shost, struct device *dev)”h]”(jÐ)�”}”(hŒstruct Scsi_Host *shost”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj¦œh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj¢œubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³œh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj¢œubh)�”}”(hhh]”j“)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hjÄœh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÁœubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jÆœŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jŒœsbŒc.scsi_block_targets”†”asbuh1hhj¢œubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjäœh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj¢œubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjòœh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj¢œubj“)�”}”(hŒshost”h]”hŒshost”…”�”}”(hjÿœh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj¢œubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjžœubjÐ)�”}”(hŒstruct device *dev”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj�ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%�h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj�ubh)�”}”(hhh]”j“)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj6�h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj3�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j8�Œmodname”NŒ classname”Njôj÷)�”}”jú]”jàœŒc.scsi_block_targets”†”asbuh1hhj�ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjT�h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj�ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjb�h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj�ubj“)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjo�h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjžœubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjeœh²hh³jwœh´M# ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjaœh²hh³jwœh´M# ubah}”(h]”j\œah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jwœh´M# hj^œh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ5transition all SCSI child devices to SDEV_BLOCK state”h]”hŒ5transition all SCSI child devices to SDEV_BLOCK state”…”�”}”(hj™�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M# hj–�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj^œh²hh³jwœh´M# ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj±�jäj±�jå‰jæ‰jç‰uh1jXh²hhj§ih³Nh´Nubjé)�”}”(hX¸**Parameters** ``struct Scsi_Host *shost`` the Scsi_Host to which this device belongs ``struct device *dev`` a parent device of one or more scsi_target devices **Description** Iterate over all children of **dev**, which should be scsi_target devices, and switch all subordinate scsi devices to SDEV_BLOCK state. Wait for ongoing scsi_queue_rq() calls to finish. May sleep. **Note** **dev** must not itself be a scsi_target device.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj»�h]”hŒ Parameters”…”�”}”(hj½�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj¹�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M' hjµ�ubj7)�”}”(hhh]”(j<)�”}”(hŒG``struct Scsi_Host *shost`` the Scsi_Host to which this device belongs ”h]”(jB)�”}”(hŒ``struct Scsi_Host *shost``”h]”jH)�”}”(hjÚ�h]”hŒstruct Scsi_Host *shost”…”�”}”(hjÜ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjØ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M% hjÔ�ubj^)�”}”(hhh]”hì)�”}”(hŒ*the Scsi_Host to which this device belongs”h]”hŒ*the Scsi_Host to which this device belongs”…”�”}”(hjó�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jï�h´M% hjð�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÔ�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jï�h´M% hjÑ�ubj<)�”}”(hŒJ``struct device *dev`` a parent device of one or more scsi_target devices ”h]”(jB)�”}”(hŒ``struct device *dev``”h]”jH)�”}”(hjžh]”hŒstruct device *dev”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjžubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M$ hj žubj^)�”}”(hhh]”hì)�”}”(hŒ2a parent device of one or more scsi_target devices”h]”hŒ2a parent device of one or more scsi_target devices”…”�”}”(hj,žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³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&]”uh1j6hjµ�ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjNžh]”hŒ Description”…”�”}”(hjPžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjLžubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M& hjµ�ubhì)�”}”(hŒÄIterate over all children of **dev**, which should be scsi_target devices, and switch all subordinate scsi devices to SDEV_BLOCK state. Wait for ongoing scsi_queue_rq() calls to finish. May sleep.”h]”(hŒIterate over all children of ”…”�”}”(hjdžh²hh³Nh´Nubjó)�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hjlžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjdžubhŒ , which should be scsi_target devices, and switch all subordinate scsi devices to SDEV_BLOCK state. Wait for ongoing scsi_queue_rq() calls to finish. May sleep.”…”�”}”(hjdžh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M& hjµ�ubhì)�”}”(hŒ**Note**”h]”jó)�”}”(hj‡žh]”hŒNote”…”�”}”(hj‰žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj…žubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M* hjµ�ubhì)�”}”(hŒ0**dev** must not itself be a scsi_target device.”h]”(jó)�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hj¡žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj�žubhŒ) must not itself be a scsi_target device.”…”�”}”(hj�žh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M+ hjµ�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj§ih²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_host_block (C function)”Œc.scsi_host_block”hNt”auh1jGhj§ih²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ-int scsi_host_block (struct Scsi_Host *shost)”h]”jd)�”}”(hŒ,int scsi_host_block(struct Scsi_Host *shost)”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hjÚžh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjÖžh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MR ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjéžh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÖžh²hh³jèžh´MR ubj�)�”}”(hŒscsi_host_block”h]”j“)�”}”(hŒscsi_host_block”h]”hŒscsi_host_block”…”�”}”(hjûžh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj÷žubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjÖžh²hh³jèžh´MR ubjÊ)�”}”(hŒ(struct Scsi_Host *shost)”h]”jÐ)�”}”(hŒstruct Scsi_Host *shost”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjŸubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$Ÿh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjŸubh)�”}”(hhh]”j“)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hj5Ÿh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj2Ÿubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j7ŸŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jýžsbŒc.scsi_host_block”†”asbuh1hhjŸubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUŸh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjŸubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjcŸh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjŸubj“)�”}”(hŒshost”h]”hŒshost”…”�”}”(hjpŸh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjŸ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´MR ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjÒžh²hh³jèžh´MR ubah}”(h]”jÍžah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jèžh´MR hjÏžh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ;Try to transition all logical units to the SDEV_BLOCK state”h]”hŒ;Try to transition all logical units to the SDEV_BLOCK state”…”�”}”(hjšŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MR hj—Ÿh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjÏžh²hh³jèžh´MR ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj²Ÿjäj²Ÿjå‰jæ‰jç‰uh1jXh²hhj§ih³Nh´Nubjé)�”}”(hX **Parameters** ``struct Scsi_Host *shost`` device to block **Description** Pause SCSI command processing for all logical units associated with the SCSI host and wait until pending scsi_queue_rq() calls have finished. Returns zero if successful or a negative error code upon failure.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj¼Ÿh]”hŒ Parameters”…”�”}”(hj¾Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjºŸubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MV hj¶Ÿubj7)�”}”(hhh]”j<)�”}”(hŒ,``struct Scsi_Host *shost`` device to block ”h]”(jB)�”}”(hŒ``struct Scsi_Host *shost``”h]”jH)�”}”(hjÛŸh]”hŒstruct Scsi_Host *shost”…”�”}”(hjÝŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjÙŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MS hjÕŸubj^)�”}”(hhh]”hì)�”}”(hŒdevice to block”h]”hŒdevice to block”…”�”}”(hjôŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jðŸh´MS hjñŸubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÕŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jðŸh´MS hjÒŸubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj¶Ÿubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hj h]”hŒ Description”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MU hj¶Ÿubhì)�”}”(hŒ�Pause SCSI command processing for all logical units associated with the SCSI host and wait until pending scsi_queue_rq() calls have finished.”h]”hŒ�Pause SCSI command processing for all logical units associated with the SCSI host and wait until pending scsi_queue_rq() calls have finished.”…”�”}”(hj, h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MT hj¶Ÿubhì)�”}”(hŒAReturns zero if successful or a negative error code upon failure.”h]”hŒAReturns zero if successful or a negative error code upon failure.”…”�”}”(hj; h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MW hj¶Ÿubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj§ih²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ scsi_kmap_atomic_sg (C function)”Œc.scsi_kmap_atomic_sg”hNt”auh1jGhj§ih²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ_void * scsi_kmap_atomic_sg (struct scatterlist *sgl, int sg_count, size_t *offset, size_t *len)”h]”jd)�”}”(hŒ]void *scsi_kmap_atomic_sg(struct scatterlist *sgl, int sg_count, size_t *offset, size_t *len)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjj h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjf h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M‡ ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjy h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjf h²hh³jx h´M‡ ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj‡ h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjf h²hh³jx h´M‡ ubj�)�”}”(hŒscsi_kmap_atomic_sg”h]”j“)�”}”(hŒscsi_kmap_atomic_sg”h]”hŒscsi_kmap_atomic_sg”…”�”}”(hj˜ h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj” ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjf h²hh³jx h´M‡ ubjÊ)�”}”(hŒD(struct scatterlist *sgl, int sg_count, size_t *offset, size_t *len)”h]”(jÐ)�”}”(hŒstruct scatterlist *sgl”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj´ h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj° ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁ h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj° ubh)�”}”(hhh]”j“)�”}”(hŒ scatterlist”h]”hŒ scatterlist”…”�”}”(hjÒ h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÏ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jÔ Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jš sbŒc.scsi_kmap_atomic_sg”†”asbuh1hhj° ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjò h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj° ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj° ubj“)�”}”(hŒsgl”h]”hŒsgl”…”�”}”(hj ¡h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj° ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj¬ ubjÐ)�”}”(hŒ int sg_count”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hj&¡h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj"¡ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4¡h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj"¡ubj“)�”}”(hŒsg_count”h]”hŒsg_count”…”�”}”(hjB¡h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj"¡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj¬ ubjÐ)�”}”(hŒsize_t *offset”h]”(h)�”}”(hhh]”j“)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj^¡h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj[¡ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j`¡Œmodname”NŒ classname”Njôj÷)�”}”jú]”jî Œc.scsi_kmap_atomic_sg”†”asbuh1hhjW¡ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|¡h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjW¡ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjŠ¡h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjW¡ubj“)�”}”(hŒoffset”h]”hŒoffset”…”�”}”(hj—¡h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjW¡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj¬ ubjÐ)�”}”(hŒ size_t *len”h]”(h)�”}”(hhh]”j“)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj³¡h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj°¡ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jµ¡Œmodname”NŒ classname”Njôj÷)�”}”jú]”jî Œc.scsi_kmap_atomic_sg”†”asbuh1hhj¬¡ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑ¡h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj¬¡ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjß¡h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj¬¡ubj“)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjì¡h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj¬¡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj¬ ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjf h²hh³jx h´M‡ ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjb h²hh³jx h´M‡ ubah}”(h]”j] ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jx h´M‡ hj_ h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ$find and atomically map an sg-elemnt”h]”hŒ$find and atomically map an sg-elemnt”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M‡ hj¢h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj_ h²hh³jx h´M‡ ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj.¢jäj.¢jå‰jæ‰jç‰uh1jXh²hhj§ih³Nh´Nubjé)�”}”(hXO**Parameters** ``struct scatterlist *sgl`` scatter-gather list ``int sg_count`` number of segments in sg ``size_t *offset`` offset in bytes into sg, on return offset into the mapped area ``size_t *len`` bytes to map, on return number of bytes mapped **Description** Returns virtual address of the start of the mapped page”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj8¢h]”hŒ Parameters”…”�”}”(hj:¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj6¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M‹ hj2¢ubj7)�”}”(hhh]”(j<)�”}”(hŒ0``struct scatterlist *sgl`` scatter-gather list ”h]”(jB)�”}”(hŒ``struct scatterlist *sgl``”h]”jH)�”}”(hjW¢h]”hŒstruct scatterlist *sgl”…”�”}”(hjY¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjU¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´Mˆ hjQ¢ubj^)�”}”(hhh]”hì)�”}”(hŒscatter-gather list”h]”hŒscatter-gather list”…”�”}”(hjp¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jl¢h´Mˆ hjm¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjQ¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jl¢h´Mˆ hjN¢ubj<)�”}”(hŒ*``int sg_count`` number of segments in sg ”h]”(jB)�”}”(hŒ``int sg_count``”h]”jH)�”}”(hj�¢h]”hŒ int sg_count”…”�”}”(hj’¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjŽ¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M‰ hjŠ¢ubj^)�”}”(hhh]”hì)�”}”(hŒnumber of segments in sg”h]”hŒnumber of segments in sg”…”�”}”(hj©¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¥¢h´M‰ hj¦¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjŠ¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j¥¢h´M‰ hjN¢ubj<)�”}”(hŒR``size_t *offset`` offset in bytes into sg, on return offset into the mapped area ”h]”(jB)�”}”(hŒ``size_t *offset``”h]”jH)�”}”(hjÉ¢h]”hŒsize_t *offset”…”�”}”(hjË¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjÇ¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MŠ hjâubj^)�”}”(hhh]”hì)�”}”(hŒ>offset in bytes into sg, on return offset into the mapped area”h]”hŒ>offset in bytes into sg, on return offset into the mapped area”…”�”}”(hjâ¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÞ¢h´MŠ hjߢubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjâubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jÞ¢h´MŠ hjN¢ubj<)�”}”(hŒ?``size_t *len`` bytes to map, on return number of bytes mapped ”h]”(jB)�”}”(hŒ``size_t *len``”h]”jH)�”}”(hj£h]”hŒ size_t *len”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M‹ hjü¢ubj^)�”}”(hhh]”hì)�”}”(hŒ.bytes to map, on return number of bytes mapped”h]”hŒ.bytes to map, on return number of bytes mapped”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j£h´M‹ hj£ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjü¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j£h´M‹ hjN¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hj2¢ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hj=£h]”hŒ Description”…”�”}”(hj?£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj;£ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M� hj2¢ubhì)�”}”(hŒ7Returns virtual address of the start of the mapped page”h]”hŒ7Returns virtual address of the start of the mapped page”…”�”}”(hjS£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MŒ hj2¢ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj§ih²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ"scsi_kunmap_atomic_sg (C function)”Œc.scsi_kunmap_atomic_sg”hNt”auh1jGhj§ih²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ'void scsi_kunmap_atomic_sg (void *virt)”h]”jd)�”}”(hŒ&void scsi_kunmap_atomic_sg(void *virt)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj‚£h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj~£h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M¸ ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘£h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj~£h²hh³j�£h´M¸ ubj�)�”}”(hŒscsi_kunmap_atomic_sg”h]”j“)�”}”(hŒscsi_kunmap_atomic_sg”h]”hŒscsi_kunmap_atomic_sg”…”�”}”(hj££h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjŸ£ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj~£h²hh³j�£h´M¸ ubjÊ)�”}”(hŒ (void *virt)”h]”jÐ)�”}”(hŒ void *virt”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¿£h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj»£ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍ£h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj»£ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjÛ£h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj»£ubj“)�”}”(hŒvirt”h]”hŒvirt”…”�”}”(hjè£h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj»£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²ˆuh1jcj³j´hjz£h²hh³j�£h´M¸ ubah}”(h]”ju£ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j�£h´M¸ hjw£h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒNatomically unmap a virtual address, previously mapped with scsi_kmap_atomic_sg”h]”hŒNatomically unmap a virtual address, previously mapped with scsi_kmap_atomic_sg”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M¸ hj¤h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjw£h²hh³j�£h´M¸ ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj*¤jäj*¤jå‰jæ‰jç‰uh1jXh²hhj§ih³Nh´Nubjé)�”}”(hŒ?**Parameters** ``void *virt`` virtual address to be unmapped”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj4¤h]”hŒ Parameters”…”�”}”(hj6¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj2¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M¼ hj.¤ubj7)�”}”(hhh]”j<)�”}”(hŒ-``void *virt`` virtual address to be unmapped”h]”(jB)�”}”(hŒ``void *virt``”h]”jH)�”}”(hjS¤h]”hŒ void *virt”…”�”}”(hjU¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjQ¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M¾ hjM¤ubj^)�”}”(hhh]”hì)�”}”(hŒvirtual address to be unmapped”h]”hŒvirtual address to be unmapped”…”�”}”(hjl¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M¹ hji¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjM¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jh¤h´M¾ hjJ¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj.¤ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj§ih²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_vpd_lun_id (C function)”Œc.scsi_vpd_lun_id”hNt”auh1jGhj§ih²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒGint scsi_vpd_lun_id (struct scsi_device *sdev, char *id, size_t id_len)”h]”jd)�”}”(hŒFint scsi_vpd_lun_id(struct scsi_device *sdev, char *id, size_t id_len)”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hj­¤h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj©¤h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼¤h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj©¤h²hh³j»¤h´M ubj�)�”}”(hŒscsi_vpd_lun_id”h]”j“)�”}”(hŒscsi_vpd_lun_id”h]”hŒscsi_vpd_lun_id”…”�”}”(hjΤh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjʤubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj©¤h²hh³j»¤h´M ubjÊ)�”}”(hŒ3(struct scsi_device *sdev, char *id, size_t id_len)”h]”(jÐ)�”}”(hŒstruct scsi_device *sdev”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjê¤h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjæ¤ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷¤h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjæ¤ubh)�”}”(hhh]”j“)�”}”(hŒ scsi_device”h]”hŒ scsi_device”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj¥ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j ¥Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jФsbŒc.scsi_vpd_lun_id”†”asbuh1hhjæ¤ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(¥h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjæ¤ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj6¥h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjæ¤ubj“)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hjC¥h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjæ¤ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjâ¤ubjÐ)�”}”(hŒchar *id”h]”(j’)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj\¥h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjX¥ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjj¥h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjX¥ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjx¥h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjX¥ubj“)�”}”(hŒid”h]”hŒid”…”�”}”(hj…¥h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjX¥ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjâ¤ubjÐ)�”}”(hŒ size_t id_len”h]”(h)�”}”(hhh]”j“)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj¡¥h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjž¥ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j£¥Œmodname”NŒ classname”Njôj÷)�”}”jú]”j$¥Œc.scsi_vpd_lun_id”†”asbuh1hhjš¥ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿¥h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjš¥ubj“)�”}”(hŒid_len”h]”hŒid_len”…”�”}”(hjÍ¥h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjš¥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²ˆuh1jcj³j´hj¥¤h²hh³j»¤h´M ubah}”(h]”j ¤ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j»¤h´M hj¢¤h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ%return a unique device identification”h]”hŒ%return a unique device identification”…”�”}”(hj÷¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M hjô¥h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj¢¤h²hh³j»¤h´M ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj¦jäj¦jå‰jæ‰jç‰uh1jXh²hhj§ih³Nh´Nubjé)�”}”(hX**Parameters** ``struct scsi_device *sdev`` SCSI device ``char *id`` buffer for the identification ``size_t id_len`` length of the buffer **Description** Copies a unique device identification into **id** based on the information in the VPD page 0x83 of the device. The string will be formatted as a SCSI name string. Returns the length of the identification or error on failure. If the identifier is longer than the supplied buffer the actual identifier length is returned and the buffer is not zero-padded.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj¦h]”hŒ Parameters”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M hj¦ubj7)�”}”(hhh]”(j<)�”}”(hŒ)``struct scsi_device *sdev`` SCSI device ”h]”(jB)�”}”(hŒ``struct scsi_device *sdev``”h]”jH)�”}”(hj8¦h]”hŒstruct scsi_device *sdev”…”�”}”(hj:¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj6¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M hj2¦ubj^)�”}”(hhh]”hì)�”}”(hŒ SCSI device”h]”hŒ SCSI device”…”�”}”(hjQ¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jM¦h´M hjN¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj2¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jM¦h´M hj/¦ubj<)�”}”(hŒ+``char *id`` buffer for the identification ”h]”(jB)�”}”(hŒ ``char *id``”h]”jH)�”}”(hjq¦h]”hŒchar *id”…”�”}”(hjs¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjo¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M hjk¦ubj^)�”}”(hhh]”hì)�”}”(hŒbuffer for the identification”h]”hŒbuffer for the identification”…”�”}”(hjЦh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j†¦h´M hj‡¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjk¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j†¦h´M hj/¦ubj<)�”}”(hŒ'``size_t id_len`` length of the buffer ”h]”(jB)�”}”(hŒ``size_t id_len``”h]”jH)�”}”(hjª¦h]”hŒ size_t id_len”…”�”}”(hj¬¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj¨¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M hj¤¦ubj^)�”}”(hhh]”hì)�”}”(hŒlength of the buffer”h]”hŒlength of the buffer”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¿¦h´M hjÀ¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj¤¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j¿¦h´M hj/¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hj¦ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjå¦h]”hŒ Description”…”�”}”(hjç¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjã¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M hj¦ubhì)�”}”(hŒ¢Copies a unique device identification into **id** based on the information in the VPD page 0x83 of the device. The string will be formatted as a SCSI name string.”h]”(hŒ+Copies a unique device identification into ”…”�”}”(hjû¦h²hh³Nh´Nubjó)�”}”(hŒ**id**”h]”hŒid”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjû¦ubhŒq based on the information in the VPD page 0x83 of the device. The string will be formatted as a SCSI name string.”…”�”}”(hjû¦h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M hj¦ubhì)�”}”(hŒ¾Returns the length of the identification or error on failure. If the identifier is longer than the supplied buffer the actual identifier length is returned and the buffer is not zero-padded.”h]”hŒ¾Returns the length of the identification or error on failure. If the identifier is longer than the supplied buffer the actual identifier length is returned and the buffer is not zero-padded.”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M hj¦ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj§ih²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ scsi_vpd_lun_serial (C function)”Œc.scsi_vpd_lun_serial”hNt”auh1jGhj§ih²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒLint scsi_vpd_lun_serial (struct scsi_device *sdev, char *sn, size_t sn_size)”h]”jd)�”}”(hŒKint scsi_vpd_lun_serial(struct scsi_device *sdev, char *sn, size_t sn_size)”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hjK§h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjG§h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M™ ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZ§h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjG§h²hh³jY§h´M™ ubj�)�”}”(hŒscsi_vpd_lun_serial”h]”j“)�”}”(hŒscsi_vpd_lun_serial”h]”hŒscsi_vpd_lun_serial”…”�”}”(hjl§h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjh§ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjG§h²hh³jY§h´M™ ubjÊ)�”}”(hŒ4(struct scsi_device *sdev, char *sn, size_t sn_size)”h]”(jÐ)�”}”(hŒstruct scsi_device *sdev”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjˆ§h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj„§ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•§h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj„§ubh)�”}”(hhh]”j“)�”}”(hŒ scsi_device”h]”hŒ scsi_device”…”�”}”(hj¦§h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj£§ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j¨§Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jn§sbŒc.scsi_vpd_lun_serial”†”asbuh1hhj„§ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƧh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj„§ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjÔ§h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj„§ubj“)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hjá§h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj„§ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj€§ubjÐ)�”}”(hŒchar *sn”h]”(j’)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjú§h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjö§ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjö§ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjö§ubj“)�”}”(hŒsn”h]”hŒsn”…”�”}”(hj#¨h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjö§ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj€§ubjÐ)�”}”(hŒsize_t sn_size”h]”(h)�”}”(hhh]”j“)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj?¨h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj<¨ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jA¨Œmodname”NŒ classname”Njôj÷)�”}”jú]”j§Œc.scsi_vpd_lun_serial”†”asbuh1hhj8¨ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]¨h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj8¨ubj“)�”}”(hŒsn_size”h]”hŒsn_size”…”�”}”(hjk¨h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj8¨ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj€§ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjG§h²hh³jY§h´M™ ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjC§h²hh³jY§h´M™ ubah}”(h]”j>§ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jY§h´M™ hj@§h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ$return a unique device serial number”h]”hŒ$return a unique device serial number”…”�”}”(hj•¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M™ hj’¨h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj@§h²hh³jY§h´M™ ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj­¨jäj­¨jå‰jæ‰jç‰uh1jXh²hhj§ih³Nh´Nubjé)�”}”(hXŸ**Parameters** ``struct scsi_device *sdev`` SCSI device ``char *sn`` buffer for the serial number ``size_t sn_size`` size of the buffer **Description** Copies the device serial number into **sn** based on the information in the VPD page 0x80 of the device. The string will be null terminated and have leading and trailing whitespace stripped. Returns the length of the serial number or error on failure.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj·¨h]”hŒ Parameters”…”�”}”(hj¹¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjµ¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M� hj±¨ubj7)�”}”(hhh]”(j<)�”}”(hŒ)``struct scsi_device *sdev`` SCSI device ”h]”(jB)�”}”(hŒ``struct scsi_device *sdev``”h]”jH)�”}”(hjÖ¨h]”hŒstruct scsi_device *sdev”…”�”}”(hjبh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjÔ¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´Mš hjШubj^)�”}”(hhh]”hì)�”}”(hŒ SCSI device”h]”hŒ SCSI device”…”�”}”(hjï¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jë¨h´Mš hjì¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjШubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jë¨h´Mš hjͨubj<)�”}”(hŒ*``char *sn`` buffer for the serial number ”h]”(jB)�”}”(hŒ ``char *sn``”h]”jH)�”}”(hj©h]”hŒchar *sn”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj ©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M› hj ©ubj^)�”}”(hhh]”hì)�”}”(hŒbuffer for the serial number”h]”hŒbuffer for the serial number”…”�”}”(hj(©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j$©h´M› hj%©ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj ©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j$©h´M› hjͨubj<)�”}”(hŒ&``size_t sn_size`` size of the buffer ”h]”(jB)�”}”(hŒ``size_t sn_size``”h]”jH)�”}”(hjH©h]”hŒsize_t sn_size”…”�”}”(hjJ©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjF©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´Mœ hjB©ubj^)�”}”(hhh]”hì)�”}”(hŒsize of the buffer”h]”hŒsize of the buffer”…”�”}”(hja©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j]©h´Mœ hj^©ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjB©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j]©h´Mœ hjͨubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hj±¨ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjƒ©h]”hŒ Description”…”�”}”(hj…©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj�©ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´Mž hj±¨ubhì)�”}”(hŒ¾Copies the device serial number into **sn** based on the information in the VPD page 0x80 of the device. The string will be null terminated and have leading and trailing whitespace stripped.”h]”(hŒ%Copies the device serial number into ”…”�”}”(hj™©h²hh³Nh´Nubjó)�”}”(hŒ**sn**”h]”hŒsn”…”�”}”(hj¡©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj™©ubhŒ“ based on the information in the VPD page 0x80 of the device. The string will be null terminated and have leading and trailing whitespace stripped.”…”�”}”(hj™©h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M� hj±¨ubhì)�”}”(hŒ±ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj±h²hh³j/±h´K(ubjÊ)�”}”(hŒ(struct scsi_cmnd *cmd)”h]”jÐ)�”}”(hŒstruct scsi_cmnd *cmd”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj^±h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjZ±ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjk±h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjZ±ubh)�”}”(hhh]”j“)�”}”(hŒ scsi_cmnd”h]”hŒ scsi_cmnd”…”�”}”(hj|±h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjy±ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j~±Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jD±sbŒc.scsi_dma_unmap”†”asbuh1hhjZ±ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœ±h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjZ±ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjª±h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjZ±ubj“)�”}”(hŒcmd”h]”hŒcmd”…”�”}”(hj·±h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjZ±ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjV±ubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhj±h²hh³j/±h´K(ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj±h²hh³j/±h´K(ubah}”(h]”j±ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j/±h´K(hj±h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ/unmap command's sg lists mapped by scsi_dma_map”h]”hŒ1unmap command’s sg lists mapped by scsi_dma_map”…”�”}”(hjá±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:153: ./drivers/scsi/scsi_lib_dma.c”h´K(hjÞ±h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj±h²hh³j/±h´K(ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjù±jäjù±jå‰jæ‰jç‰uh1jXh²hhjh¯h³Nh´Nubjé)�”}”(hŒ8**Parameters** ``struct scsi_cmnd *cmd`` scsi command”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj²h]”hŒ Parameters”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:153: ./drivers/scsi/scsi_lib_dma.c”h´K,hjý±ubj7)�”}”(hhh]”j<)�”}”(hŒ&``struct scsi_cmnd *cmd`` scsi command”h]”(jB)�”}”(hŒ``struct scsi_cmnd *cmd``”h]”jH)�”}”(hj"²h]”hŒstruct scsi_cmnd *cmd”…”�”}”(hj$²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj ²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:153: ./drivers/scsi/scsi_lib_dma.c”h´K.hj²ubj^)�”}”(hhh]”hì)�”}”(hŒ scsi command”h]”hŒ scsi command”…”�”}”(hj;²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:153: ./drivers/scsi/scsi_lib_dma.c”h´K)hj8²ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j7²h´K.hj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjý±ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjh¯h²hh³Nh´Nubeh}”(h]”Œdrivers-scsi-scsi-lib-dma-c”ah ]”h"]”Œdrivers/scsi/scsi_lib_dma.c”ah$]”h&]”uh1hµhj%h²hh³hÊh´K”ubh¶)�”}”(hhh]”(h»)�”}”(hŒdrivers/scsi/scsi_proc.c”h]”hŒdrivers/scsi/scsi_proc.c”…”�”}”(hjn²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjk²h²hh³hÊh´K�ubhì)�”}”(hŒóThe functions in this file provide an interface between the PROC file system and the SCSI device drivers It is mainly used for debugging, statistics and to pass information directly to the lowlevel driver. I.E. plumbing to manage /proc/scsi/\*”h]”hŒóThe functions in this file provide an interface between the PROC file system and the SCSI device drivers It is mainly used for debugging, statistics and to pass information directly to the lowlevel driver. I.E. plumbing to manage /proc/scsi/*”…”�”}”(hj|²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KŸhjk²h²hubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_proc_entry (C struct)”Œc.scsi_proc_entry”hNt”auh1jGhjk²h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒscsi_proc_entry”h]”jd)�”}”(hŒstruct scsi_proc_entry”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj£²h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjŸ²h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´Kubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±²h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjŸ²h²hh³j°²h´Kubj�)�”}”(hŒscsi_proc_entry”h]”j“)�”}”(hj�²h]”hŒscsi_proc_entry”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj¿²ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjŸ²h²hh³j°²h´Kubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj›²h²hh³j°²h´Kubah}”(h]”j–²ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j°²h´Khj˜²h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ*(host template, SCSI proc dir) association”h]”hŒ*(host template, SCSI proc dir) association”…”�”}”(hjå²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´K3hjâ²h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj˜²h²hh³j°²h´Kubeh}”(h]”h ]”(jÝŒstruct”eh"]”h$]”h&]”jâjÝjãjý²jäjý²jå‰jæ‰jç‰uh1jXh²hhjk²h³Nh´Nubjé)�”}”(hXÐ**Definition**:: struct scsi_proc_entry { struct list_head entry; const struct scsi_host_template *sht; struct proc_dir_entry *proc_dir; unsigned int present; }; **Members** ``entry`` entry in scsi_proc_list. ``sht`` SCSI host template associated with the procfs directory. ``proc_dir`` procfs directory associated with the SCSI host template. ``present`` Number of SCSI hosts instantiated for **sht**.”h]”(hì)�”}”(hŒ**Definition**::”h]”(jó)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj ³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj³ubhŒ:”…”�”}”(hj³h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´K7hj³ubj)�”}”(hŒ´struct scsi_proc_entry { struct list_head entry; const struct scsi_host_template *sht; struct proc_dir_entry *proc_dir; unsigned int present; };”h]”hŒ´struct scsi_proc_entry { struct list_head entry; const struct scsi_host_template *sht; struct proc_dir_entry *proc_dir; unsigned int present; };”…”�”}”hj"³sbah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1j h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´K9hj³ubhì)�”}”(hŒ **Members**”h]”jó)�”}”(hj3³h]”hŒMembers”…”�”}”(hj5³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj1³ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´K@hj³ubj7)�”}”(hhh]”(j<)�”}”(hŒ#``entry`` entry in scsi_proc_list. ”h]”(jB)�”}”(hŒ ``entry``”h]”jH)�”}”(hjR³h]”hŒentry”…”�”}”(hjT³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjP³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´K5hjL³ubj^)�”}”(hhh]”hì)�”}”(hŒentry in scsi_proc_list.”h]”hŒentry in scsi_proc_list.”…”�”}”(hjk³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jg³h´K5hjh³ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjL³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jg³h´K5hjI³ubj<)�”}”(hŒA``sht`` SCSI host template associated with the procfs directory. ”h]”(jB)�”}”(hŒ``sht``”h]”jH)�”}”(hj‹³h]”hŒsht”…”�”}”(hj�³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj‰³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´K6hj…³ubj^)�”}”(hhh]”hì)�”}”(hŒ8SCSI host template associated with the procfs directory.”h]”hŒ8SCSI host template associated with the procfs directory.”…”�”}”(hj¤³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j ³h´K6hj¡³ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj…³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j ³h´K6hjI³ubj<)�”}”(hŒF``proc_dir`` procfs directory associated with the SCSI host template. ”h]”(jB)�”}”(hŒ ``proc_dir``”h]”jH)�”}”(hjijh]”hŒproc_dir”…”�”}”(hjƳh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´K7hj¾³ubj^)�”}”(hhh]”hì)�”}”(hŒ8procfs directory associated with the SCSI host template.”h]”hŒ8procfs directory associated with the SCSI host template.”…”�”}”(hjݳh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÙ³h´K7hjÚ³ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj¾³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jÙ³h´K7hjI³ubj<)�”}”(hŒ:``present`` Number of SCSI hosts instantiated for **sht**.”h]”(jB)�”}”(hŒ ``present``”h]”jH)�”}”(hjý³h]”hŒpresent”…”�”}”(hjÿ³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjû³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´K7hj÷³ubj^)�”}”(hhh]”hì)�”}”(hŒ.Number of SCSI hosts instantiated for **sht**.”h]”(hŒ&Number of SCSI hosts instantiated for ”…”�”}”(hj´h²hh³Nh´Nubjó)�”}”(hŒ**sht**”h]”hŒsht”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj´ubhŒ.”…”�”}”(hj´h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´K8hj´ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj÷³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j´h´K7hjI³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hj³ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjk²h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ#scsi_template_proc_dir (C function)”Œc.scsi_template_proc_dir”hNt”auh1jGhjk²h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒUstruct proc_dir_entry * scsi_template_proc_dir (const struct scsi_host_template *sht)”h]”jd)�”}”(hŒSstruct proc_dir_entry *scsi_template_proc_dir(const struct scsi_host_template *sht)”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hji´h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihje´h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´K€ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjw´h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hje´h²hh³jv´h´K€ubh)�”}”(hhh]”j“)�”}”(hŒproc_dir_entry”h]”hŒproc_dir_entry”…”�”}”(hjˆ´h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj…´ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jŠ´Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j Œscsi_template_proc_dir”sbŒc.scsi_template_proc_dir”†”asbuh1hhje´h²hh³jv´h´K€ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©´h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hje´h²hh³jv´h´K€ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj·´h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hje´h²hh³jv´h´K€ubj�)�”}”(hŒscsi_template_proc_dir”h]”j“)�”}”(hj¦´h]”hŒscsi_template_proc_dir”…”�”}”(hjÈ´h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÄ´ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhje´h²hh³jv´h´K€ubjÊ)�”}”(hŒ&(const struct scsi_host_template *sht)”h]”jÐ)�”}”(hŒ$const struct scsi_host_template *sht”h]”(jj)�”}”(hj’Ph]”hŒconst”…”�”}”(hjã´h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjß´ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjð´h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjß´ubjj)�”}”(hjmh]”hŒstruct”…”�”}”(hjþ´h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjß´ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj µh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjß´ubh)�”}”(hhh]”j“)�”}”(hŒscsi_host_template”h]”hŒscsi_host_template”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjµubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jµŒmodname”NŒ classname”Njôj÷)�”}”jú]”j¤´Œc.scsi_template_proc_dir”†”asbuh1hhjß´ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:µh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjß´ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjHµh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjß´ubj“)�”}”(hŒsht”h]”hŒsht”…”�”}”(hjUµh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjß´ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjÛ´ubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhje´h²hh³jv´h´K€ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hja´h²hh³jv´h´K€ubah}”(h]”j\´ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jv´h´K€hj^´h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ/returns the procfs dir for a SCSI host template”h]”hŒ/returns the procfs dir for a SCSI host template”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´K€hj|µh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj^´h²hh³jv´h´K€ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj—µjäj—µjå‰jæ‰jç‰uh1jXh²hhjk²h³Nh´Nubjé)�”}”(hŒV**Parameters** ``const struct scsi_host_template *sht`` SCSI host template pointer.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj¡µh]”hŒ Parameters”…”�”}”(hj£µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjŸµubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´K„hj›µubj7)�”}”(hhh]”j<)�”}”(hŒD``const struct scsi_host_template *sht`` SCSI host template pointer.”h]”(jB)�”}”(hŒ(``const struct scsi_host_template *sht``”h]”jH)�”}”(hjÀµh]”hŒ$const struct scsi_host_template *sht”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj¾µubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´K†hjºµubj^)�”}”(hhh]”hì)�”}”(hŒSCSI host template pointer.”h]”hŒSCSI host template pointer.”…”�”}”(hjÙµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.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&]”uh1j6hj›µubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjk²h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ"scsi_proc_hostdir_add (C function)”Œc.scsi_proc_hostdir_add”hNt”auh1jGhjk²h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ@int scsi_proc_hostdir_add (const struct scsi_host_template *sht)”h]”jd)�”}”(hŒ?int scsi_proc_hostdir_add(const struct scsi_host_template *sht)”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj¶h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´K•ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)¶h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj¶h²hh³j(¶h´K•ubj�)�”}”(hŒscsi_proc_hostdir_add”h]”j“)�”}”(hŒscsi_proc_hostdir_add”h]”hŒscsi_proc_hostdir_add”…”�”}”(hj;¶h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj7¶ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj¶h²hh³j(¶h´K•ubjÊ)�”}”(hŒ&(const struct scsi_host_template *sht)”h]”jÐ)�”}”(hŒ$const struct scsi_host_template *sht”h]”(jj)�”}”(hj’Ph]”hŒconst”…”�”}”(hjW¶h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjS¶ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjd¶h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjS¶ubjj)�”}”(hjmh]”hŒstruct”…”�”}”(hjr¶h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjS¶ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjS¶ubh)�”}”(hhh]”j“)�”}”(hŒscsi_host_template”h]”hŒscsi_host_template”…”�”}”(hj�¶h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj�¶ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j’¶Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j j=¶sbŒc.scsi_proc_hostdir_add”†”asbuh1hhjS¶ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°¶h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjS¶ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj¾¶h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjS¶ubj“)�”}”(hŒsht”h]”hŒsht”…”�”}”(hj˶h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjS¶ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjO¶ubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhj¶h²hh³j(¶h´K•ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj¶h²hh³j(¶h´K•ubah}”(h]”j ¶ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j(¶h´K•hj¶h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ)Create directory in /proc for a scsi host”h]”hŒ)Create directory in /proc for a scsi host”…”�”}”(hjõ¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´K•hjò¶h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj¶h²hh³j(¶h´K•ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj ·jäj ·jå‰jæ‰jç‰uh1jXh²hhjk²h³Nh´Nubjé)�”}”(hŒ�**Parameters** ``const struct scsi_host_template *sht`` owner of this directory **Description** Sets sht->proc_dir to the new directory.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj·h]”hŒ Parameters”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj·ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´K™hj·ubj7)�”}”(hhh]”j<)�”}”(hŒA``const struct scsi_host_template *sht`` owner of this directory ”h]”(jB)�”}”(hŒ(``const struct scsi_host_template *sht``”h]”jH)�”}”(hj6·h]”hŒ$const struct scsi_host_template *sht”…”�”}”(hj8·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj4·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´K–hj0·ubj^)�”}”(hhh]”hì)�”}”(hŒowner of this directory”h]”hŒowner of this directory”…”�”}”(hjO·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jK·h´K–hjL·ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj0·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jK·h´K–hj-·ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj·ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjq·h]”hŒ Description”…”�”}”(hjs·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjo·ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´K˜hj·ubhì)�”}”(hŒ(Sets sht->proc_dir to the new directory.”h]”hŒ(Sets sht->proc_dir to the new directory.”…”�”}”(hj‡·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´K—hj·ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjk²h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ!scsi_proc_hostdir_rm (C function)”Œc.scsi_proc_hostdir_rm”hNt”auh1jGhjk²h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ@void scsi_proc_hostdir_rm (const struct scsi_host_template *sht)”h]”jd)�”}”(hŒ?void scsi_proc_hostdir_rm(const struct scsi_host_template *sht)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¶·h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj²·h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´KÁubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅ·h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj²·h²hh³jÄ·h´KÁubj�)�”}”(hŒscsi_proc_hostdir_rm”h]”j“)�”}”(hŒscsi_proc_hostdir_rm”h]”hŒscsi_proc_hostdir_rm”…”�”}”(hj×·h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÓ·ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj²·h²hh³jÄ·h´KÁubjÊ)�”}”(hŒ&(const struct scsi_host_template *sht)”h]”jÐ)�”}”(hŒ$const struct scsi_host_template *sht”h]”(jj)�”}”(hj’Ph]”hŒconst”…”�”}”(hjó·h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjï·ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjï·ubjj)�”}”(hjmh]”hŒstruct”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjï·ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjï·ubh)�”}”(hhh]”j“)�”}”(hŒscsi_host_template”h]”hŒscsi_host_template”…”�”}”(hj,¸h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj)¸ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j.¸Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jÙ·sbŒc.scsi_proc_hostdir_rm”†”asbuh1hhjï·ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjL¸h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjï·ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjZ¸h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjï·ubj“)�”}”(hŒsht”h]”hŒsht”…”�”}”(hjg¸h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjï·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²ˆuh1jcj³j´hj®·h²hh³jÄ·h´KÁubah}”(h]”j©·ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jÄ·h´KÁhj«·h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ)remove directory in /proc for a scsi host”h]”hŒ)remove directory in /proc for a scsi host”…”�”}”(hj‘¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´KÁhjޏh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj«·h²hh³jÄ·h´KÁubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj©¸jäj©¸jå‰jæ‰jç‰uh1jXh²hhjk²h³Nh´Nubjé)�”}”(hŒM**Parameters** ``const struct scsi_host_template *sht`` owner of directory”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj³¸h]”hŒ Parameters”…”�”}”(hjµ¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj±¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´KÅhj­¸ubj7)�”}”(hhh]”j<)�”}”(hŒ;``const struct scsi_host_template *sht`` owner of directory”h]”(jB)�”}”(hŒ(``const struct scsi_host_template *sht``”h]”jH)�”}”(hjÒ¸h]”hŒ$const struct scsi_host_template *sht”…”�”}”(hjÔ¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjиubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´KÇhj̸ubj^)�”}”(hhh]”hì)�”}”(hŒowner of directory”h]”hŒowner of directory”…”�”}”(hjë¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.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&]”uh1j6hj­¸ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjk²h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_proc_host_add (C function)”Œc.scsi_proc_host_add”hNt”auh1jGhjk²h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ1void scsi_proc_host_add (struct Scsi_Host *shost)”h]”jd)�”}”(hŒ0void scsi_proc_host_add(struct Scsi_Host *shost)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj,¹h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj(¹h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´K×ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;¹h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj(¹h²hh³j:¹h´K×ubj�)�”}”(hŒscsi_proc_host_add”h]”j“)�”}”(hŒscsi_proc_host_add”h]”hŒscsi_proc_host_add”…”�”}”(hjM¹h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjI¹ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj(¹h²hh³j:¹h´K×ubjÊ)�”}”(hŒ(struct Scsi_Host *shost)”h]”jÐ)�”}”(hŒstruct Scsi_Host *shost”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hji¹h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihje¹ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjv¹h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hje¹ubh)�”}”(hhh]”j“)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hj‡¹h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj„¹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j‰¹Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jO¹sbŒc.scsi_proc_host_add”†”asbuh1hhje¹ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§¹h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hje¹ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjµ¹h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hje¹ubj“)�”}”(hŒshost”h]”hŒshost”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hje¹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhja¹ubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhj(¹h²hh³j:¹h´K×ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj$¹h²hh³j:¹h´K×ubah}”(h]”j¹ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j:¹h´K×hj!¹h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ0Add entry for this host to appropriate /proc dir”h]”hŒ0Add entry for this host to appropriate /proc dir”…”�”}”(hjì¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´K×hjé¹h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj!¹h²hh³j:¹h´K×ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjºjäjºjå‰jæ‰jç‰uh1jXh²hhjk²h³Nh´Nubjé)�”}”(hŒ9**Parameters** ``struct Scsi_Host *shost`` host to add”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjºh]”hŒ Parameters”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj ºubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´KÛhjºubj7)�”}”(hhh]”j<)�”}”(hŒ'``struct Scsi_Host *shost`` host to add”h]”(jB)�”}”(hŒ``struct Scsi_Host *shost``”h]”jH)�”}”(hj-ºh]”hŒstruct Scsi_Host *shost”…”�”}”(hj/ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj+ºubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´KÝhj'ºubj^)�”}”(hhh]”hì)�”}”(hŒ host to add”h]”hŒ host to add”…”�”}”(hjFºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´KØhjCºubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj'ºubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jBºh´KÝhj$ºubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjºubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjk²h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_proc_host_rm (C function)”Œc.scsi_proc_host_rm”hNt”auh1jGhjk²h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ0void scsi_proc_host_rm (struct Scsi_Host *shost)”h]”jd)�”}”(hŒ/void scsi_proc_host_rm(struct Scsi_Host *shost)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj‡ºh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjƒºh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´Köubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–ºh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjƒºh²hh³j•ºh´Köubj�)�”}”(hŒscsi_proc_host_rm”h]”j“)�”}”(hŒscsi_proc_host_rm”h]”hŒscsi_proc_host_rm”…”�”}”(hj¨ºh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj¤ºubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjƒºh²hh³j•ºh´KöubjÊ)�”}”(hŒ(struct Scsi_Host *shost)”h]”jÐ)�”}”(hŒstruct Scsi_Host *shost”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjĺh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjÀºubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjѺh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÀºubh)�”}”(hhh]”j“)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hjâºh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjߺubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j二modname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jªºsbŒc.scsi_proc_host_rm”†”asbuh1hhjÀºubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÀºubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjÀºubj“)�”}”(hŒshost”h]”hŒshost”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÀº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²ˆuh1jcj³j´hjºh²hh³j•ºh´Köubah}”(h]”jzºah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j•ºh´Köhj|ºh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ#remove this host's entry from /proc”h]”hŒ%remove this host’s entry from /proc”…”�”}”(hjG»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´KöhjD»h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj|ºh²hh³j•ºh´Köubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj_»jäj_»jå‰jæ‰jç‰uh1jXh²hhjk²h³Nh´Nubjé)�”}”(hŒ8**Parameters** ``struct Scsi_Host *shost`` which host”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hji»h]”hŒ Parameters”…”�”}”(hjk»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjg»ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´Kúhjc»ubj7)�”}”(hhh]”j<)�”}”(hŒ&``struct Scsi_Host *shost`` which host”h]”(jB)�”}”(hŒ``struct Scsi_Host *shost``”h]”jH)�”}”(hjˆ»h]”hŒstruct Scsi_Host *shost”…”�”}”(hjŠ»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj†»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´Kühj‚»ubj^)�”}”(hhh]”hì)�”}”(hŒ which host”h]”hŒ which host”…”�”}”(hj¡»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.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&]”uh1j6hjc»ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjk²h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ"proc_print_scsidevice (C function)”Œc.proc_print_scsidevice”hNt”auh1jGhjk²h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ:int proc_print_scsidevice (struct device *dev, void *data)”h]”jd)�”}”(hŒ9int proc_print_scsidevice(struct device *dev, void *data)”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hjâ»h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjÞ»h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´M ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñ»h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÞ»h²hh³jð»h´M ubj�)�”}”(hŒproc_print_scsidevice”h]”j“)�”}”(hŒproc_print_scsidevice”h]”hŒproc_print_scsidevice”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÿ»ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjÞ»h²hh³jð»h´M ubjÊ)�”}”(hŒ (struct device *dev, void *data)”h]”(jÐ)�”}”(hŒstruct device *dev”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj¼ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,¼h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj¼ubh)�”}”(hhh]”j“)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj=¼h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj:¼ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j?¼Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j j¼sbŒc.proc_print_scsidevice”†”asbuh1hhj¼ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]¼h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj¼ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjk¼h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj¼ubj“)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjx¼h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj¼ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj¼ubjÐ)�”}”(hŒ void *data”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj‘¼h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj�¼ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸ¼h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj�¼ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj­¼h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj�¼ubj“)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjº¼h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj�¼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²ˆuh1jcj³j´hjÚ»h²hh³jð»h´M ubah}”(h]”jÕ»ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jð»h´M hj×»h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒreturn data about this host”h]”hŒreturn data about this host”…”�”}”(hjä¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´M hjá¼h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj×»h²hh³jð»h´M ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjü¼jäjü¼jå‰jæ‰jç‰uh1jXh²hhjk²h³Nh´Nubjé)�”}”(hŒÔ**Parameters** ``struct device *dev`` A scsi device ``void *data`` :c:type:`struct seq_file ` to output to. **Description** prints Host, Channel, Id, Lun, Vendor, Model, Rev, Type, and revision.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj½h]”hŒ Parameters”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj½ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´Mhj½ubj7)�”}”(hhh]”(j<)�”}”(hŒ%``struct device *dev`` A scsi device ”h]”(jB)�”}”(hŒ``struct device *dev``”h]”jH)�”}”(hj%½h]”hŒstruct device *dev”…”�”}”(hj'½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj#½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´M hj½ubj^)�”}”(hhh]”hì)�”}”(hŒ A scsi device”h]”hŒ A scsi device”…”�”}”(hj>½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j:½h´M hj;½ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j:½h´M hj½ubj<)�”}”(hŒB``void *data`` :c:type:`struct seq_file ` to output to. ”h]”(jB)�”}”(hŒ``void *data``”h]”jH)�”}”(hj^½h]”hŒ void *data”…”�”}”(hj`½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj\½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´M hjX½ubj^)�”}”(hhh]”hì)�”}”(hŒ2:c:type:`struct seq_file ` to output to.”h]”(h)�”}”(hŒ$:c:type:`struct seq_file `”h]”jH)�”}”(hj}½h]”hŒstruct seq_file”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”(jâjÝŒc-type”eh"]”h$]”h&]”uh1jGhj{½ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jîŒ refdomain”jÝŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jôjøjüŒseq_file”uh1hh³js½h´M hjw½ubhŒ to output to.”…”�”}”(hjw½h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³js½h´M hjt½ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjX½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³js½h´M hj½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hj½ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hj¸½h]”hŒ Description”…”�”}”(hjº½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj¶½ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´Mhj½ubhì)�”}”(hŒFprints Host, Channel, Id, Lun, Vendor, Model, Rev, Type, and revision.”h]”hŒFprints Host, Channel, Id, Lun, Vendor, Model, Rev, Type, and revision.”…”�”}”(hjνh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´Mhj½ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjk²h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ#scsi_add_single_device (C function)”Œc.scsi_add_single_device”hNt”auh1jGhjk²h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒGint scsi_add_single_device (uint host, uint channel, uint id, uint lun)”h]”jd)�”}”(hŒFint scsi_add_single_device(uint host, uint channel, uint id, uint lun)”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hjý½h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjù½h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´MDubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ¾h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjù½h²hh³j ¾h´MDubj�)�”}”(hŒscsi_add_single_device”h]”j“)�”}”(hŒscsi_add_single_device”h]”hŒscsi_add_single_device”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj¾ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjù½h²hh³j ¾h´MDubjÊ)�”}”(hŒ,(uint host, uint channel, uint id, uint lun)”h]”(jÐ)�”}”(hŒ uint host”h]”(h)�”}”(hhh]”j“)�”}”(hŒuint”h]”hŒuint”…”�”}”(hj=¾h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj:¾ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j?¾Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j j ¾sbŒc.scsi_add_single_device”†”asbuh1hhj6¾ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]¾h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj6¾ubj“)�”}”(hŒhost”h]”hŒhost”…”�”}”(hjk¾h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj6¾ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj2¾ubjÐ)�”}”(hŒ uint channel”h]”(h)�”}”(hhh]”j“)�”}”(hŒuint”h]”hŒuint”…”�”}”(hj‡¾h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj„¾ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j‰¾Œmodname”NŒ classname”Njôj÷)�”}”jú]”jY¾Œc.scsi_add_single_device”†”asbuh1hhj€¾ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥¾h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj€¾ubj“)�”}”(hŒchannel”h]”hŒchannel”…”�”}”(hj³¾h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj€¾ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj2¾ubjÐ)�”}”(hŒuint id”h]”(h)�”}”(hhh]”j“)�”}”(hŒuint”h]”hŒuint”…”�”}”(hjϾh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj̾ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jѾŒmodname”NŒ classname”Njôj÷)�”}”jú]”jY¾Œc.scsi_add_single_device”†”asbuh1hhjȾubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjí¾h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjȾubj“)�”}”(hŒid”h]”hŒid”…”�”}”(hjû¾h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjȾubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj2¾ubjÐ)�”}”(hŒuint lun”h]”(h)�”}”(hhh]”j“)�”}”(hŒuint”h]”hŒuint”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj¿ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j¿Œmodname”NŒ classname”Njôj÷)�”}”jú]”jY¾Œc.scsi_add_single_device”†”asbuh1hhj¿ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5¿h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj¿ubj“)�”}”(hŒlun”h]”hŒlun”…”�”}”(hjC¿h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj¿ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj2¾ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjù½h²hh³j ¾h´MDubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjõ½h²hh³j ¾h´MDubah}”(h]”jð½ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j ¾h´MDhjò½h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ/Respond to user request to probe for/add device”h]”hŒ/Respond to user request to probe for/add device”…”�”}”(hjm¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´MDhjj¿h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjò½h²hh³j ¾h´MDubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj…¿jäj…¿jå‰jæ‰jç‰uh1jXh²hhjk²h³Nh´Nubjé)�”}”(hXØ**Parameters** ``uint host`` user-supplied decimal integer ``uint channel`` user-supplied decimal integer ``uint id`` user-supplied decimal integer ``uint lun`` user-supplied decimal integer **Description** called by writing "scsi add-single-device" to /proc/scsi/scsi. does scsi_host_lookup() and either user_scan() if that transport type supports it, or else scsi_scan_host_selected() **Note** this seems to be aimed exclusively at SCSI parallel busses.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj�¿h]”hŒ Parameters”…”�”}”(hj‘¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj�¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´MHhj‰¿ubj7)�”}”(hhh]”(j<)�”}”(hŒ,``uint host`` user-supplied decimal integer ”h]”(jB)�”}”(hŒ ``uint host``”h]”jH)�”}”(hj®¿h]”hŒ uint host”…”�”}”(hj°¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj¬¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´MEhj¨¿ubj^)�”}”(hhh]”hì)�”}”(hŒuser-supplied decimal integer”h]”hŒuser-supplied decimal integer”…”�”}”(hjÇ¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÿh´MEhjÄ¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj¨¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jÿh´MEhj¥¿ubj<)�”}”(hŒ/``uint channel`` user-supplied decimal integer ”h]”(jB)�”}”(hŒ``uint channel``”h]”jH)�”}”(hjç¿h]”hŒ uint channel”…”�”}”(hjé¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjå¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´MFhjá¿ubj^)�”}”(hhh]”hì)�”}”(hŒuser-supplied decimal integer”h]”hŒuser-supplied decimal integer”…”�”}”(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Œ*``uint id`` user-supplied decimal integer ”h]”(jB)�”}”(hŒ ``uint id``”h]”jH)�”}”(hj Àh]”hŒuint id”…”�”}”(hj"Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´MGhjÀubj^)�”}”(hhh]”hì)�”}”(hŒuser-supplied decimal integer”h]”hŒuser-supplied decimal integer”…”�”}”(hj9Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j5Àh´MGhj6Àubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÀubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j5Àh´MGhj¥¿ubj<)�”}”(hŒ+``uint lun`` user-supplied decimal integer ”h]”(jB)�”}”(hŒ ``uint lun``”h]”jH)�”}”(hjYÀh]”hŒuint lun”…”�”}”(hj[Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjWÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´MHhjSÀubj^)�”}”(hhh]”hì)�”}”(hŒuser-supplied decimal integer”h]”hŒuser-supplied decimal integer”…”�”}”(hjrÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jnÀh´MHhjoÀubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjSÀubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jnÀh´MHhj¥¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hj‰¿ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hj”Àh]”hŒ Description”…”�”}”(hj–Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj’Àubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´MJhj‰¿ubhì)�”}”(hŒ>called by writing "scsi add-single-device" to /proc/scsi/scsi.”h]”hŒBcalled by writing “scsi add-single-deviceâ€� to /proc/scsi/scsi.”…”�”}”(hjªÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´MJhj‰¿ubhì)�”}”(hŒtdoes scsi_host_lookup() and either user_scan() if that transport type supports it, or else scsi_scan_host_selected()”h]”hŒtdoes scsi_host_lookup() and either user_scan() if that transport type supports it, or else scsi_scan_host_selected()”…”�”}”(hj¹Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´MLhj‰¿ubhì)�”}”(hŒ**Note**”h]”jó)�”}”(hjÊÀh]”hŒNote”…”�”}”(hjÌÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÈÀubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´MOhj‰¿ubhì)�”}”(hŒ;this seems to be aimed exclusively at SCSI parallel busses.”h]”hŒ;this seems to be aimed exclusively at SCSI parallel busses.”…”�”}”(hjàÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´MOhj‰¿ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjk²h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ&scsi_remove_single_device (C function)”Œc.scsi_remove_single_device”hNt”auh1jGhjk²h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒJint scsi_remove_single_device (uint host, uint channel, uint id, uint lun)”h]”jd)�”}”(hŒIint scsi_remove_single_device(uint host, uint channel, uint id, uint lun)”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj Áh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´Meubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj Áh²hh³jÁh´Meubj�)�”}”(hŒscsi_remove_single_device”h]”j“)�”}”(hŒscsi_remove_single_device”h]”hŒscsi_remove_single_device”…”�”}”(hj0Áh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj,Áubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj Áh²hh³jÁh´MeubjÊ)�”}”(hŒ,(uint host, uint channel, uint id, uint lun)”h]”(jÐ)�”}”(hŒ uint host”h]”(h)�”}”(hhh]”j“)�”}”(hŒuint”h]”hŒuint”…”�”}”(hjOÁh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjLÁubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jQÁŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j j2ÁsbŒc.scsi_remove_single_device”†”asbuh1hhjHÁubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoÁh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjHÁubj“)�”}”(hŒhost”h]”hŒhost”…”�”}”(hj}Áh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjHÁubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjDÁubjÐ)�”}”(hŒ uint channel”h]”(h)�”}”(hhh]”j“)�”}”(hŒuint”h]”hŒuint”…”�”}”(hj™Áh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj–Áubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j›ÁŒmodname”NŒ classname”Njôj÷)�”}”jú]”jkÁŒc.scsi_remove_single_device”†”asbuh1hhj’Áubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·Áh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj’Áubj“)�”}”(hŒchannel”h]”hŒchannel”…”�”}”(hjÅÁh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj’Áubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjDÁubjÐ)�”}”(hŒuint id”h]”(h)�”}”(hhh]”j“)�”}”(hŒuint”h]”hŒuint”…”�”}”(hjáÁh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÞÁubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jãÁŒmodname”NŒ classname”Njôj÷)�”}”jú]”jkÁŒc.scsi_remove_single_device”†”asbuh1hhjÚÁubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿÁh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÚÁubj“)�”}”(hŒid”h]”hŒid”…”�”}”(hj Âh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÚÁubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjDÁubjÐ)�”}”(hŒuint lun”h]”(h)�”}”(hhh]”j“)�”}”(hŒuint”h]”hŒuint”…”�”}”(hj)Âh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj&Âubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j+ÂŒmodname”NŒ classname”Njôj÷)�”}”jú]”jkÁŒc.scsi_remove_single_device”†”asbuh1hhj"Âubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGÂh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj"Âubj“)�”}”(hŒlun”h]”hŒlun”…”�”}”(hjUÂh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj"Âubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjDÁubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhj Áh²hh³jÁh´Meubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjÁh²hh³jÁh´Meubah}”(h]”jÁah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jÁh´MehjÁh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ*Respond to user request to remove a device”h]”hŒ*Respond to user request to remove a device”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´Mehj|Âh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjÁh²hh³jÁh´Meubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj—Âjäj—Âjå‰jæ‰jç‰uh1jXh²hhjk²h³Nh´Nubjé)�”}”(hXT**Parameters** ``uint host`` user-supplied decimal integer ``uint channel`` user-supplied decimal integer ``uint id`` user-supplied decimal integer ``uint lun`` user-supplied decimal integer **Description** called by writing "scsi remove-single-device" to /proc/scsi/scsi. Does a scsi_device_lookup() and scsi_remove_device()”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj¡Âh]”hŒ Parameters”…”�”}”(hj£Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjŸÂubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´Mihj›Âubj7)�”}”(hhh]”(j<)�”}”(hŒ,``uint host`` user-supplied decimal integer ”h]”(jB)�”}”(hŒ ``uint host``”h]”jH)�”}”(hjÀÂh]”hŒ uint host”…”�”}”(hjÂÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj¾Âubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´MfhjºÂubj^)�”}”(hhh]”hì)�”}”(hŒuser-supplied decimal integer”h]”hŒuser-supplied decimal integer”…”�”}”(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Œ/``uint channel`` user-supplied decimal integer ”h]”(jB)�”}”(hŒ``uint channel``”h]”jH)�”}”(hjùÂh]”hŒ uint channel”…”�”}”(hjûÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj÷Âubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´MghjóÂubj^)�”}”(hhh]”hì)�”}”(hŒuser-supplied decimal integer”h]”hŒuser-supplied decimal integer”…”�”}”(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Œ*``uint id`` user-supplied decimal integer ”h]”(jB)�”}”(hŒ ``uint id``”h]”jH)�”}”(hj2Ãh]”hŒuint id”…”�”}”(hj4Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj0Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´Mhhj,Ãubj^)�”}”(hhh]”hì)�”}”(hŒuser-supplied decimal integer”h]”hŒuser-supplied decimal integer”…”�”}”(hjKÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jGÃh´MhhjHÃubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj,Ãubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jGÃh´Mhhj·Âubj<)�”}”(hŒ+``uint lun`` user-supplied decimal integer ”h]”(jB)�”}”(hŒ ``uint lun``”h]”jH)�”}”(hjkÃh]”hŒuint lun”…”�”}”(hjmÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjiÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´MihjeÃubj^)�”}”(hhh]”hì)�”}”(hŒuser-supplied decimal integer”h]”hŒuser-supplied decimal integer”…”�”}”(hj„Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j€Ãh´Mihj�Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjeÃubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j€Ãh´Mihj·Âubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hj›Âubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hj¦Ãh]”hŒ Description”…”�”}”(hj¨Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj¤Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´Mkhj›Âubhì)�”}”(hŒwcalled by writing "scsi remove-single-device" to /proc/scsi/scsi. Does a scsi_device_lookup() and scsi_remove_device()”h]”hŒ{called by writing “scsi remove-single-deviceâ€� to /proc/scsi/scsi. Does a scsi_device_lookup() and scsi_remove_device()”…”�”}”(hj¼Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´Mkhj›Âubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjk²h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒproc_scsi_write (C function)”Œc.proc_scsi_write”hNt”auh1jGhjk²h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ`ssize_t proc_scsi_write (struct file *file, const char __user *buf, size_t length, loff_t *ppos)”h]”jd)�”}”(hŒ_ssize_t proc_scsi_write(struct file *file, const char __user *buf, size_t length, loff_t *ppos)”h]”(h)�”}”(hhh]”j“)�”}”(hŒssize_t”h]”hŒssize_t”…”�”}”(hjîÃh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjëÃubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jðÃŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j Œproc_scsi_write”sbŒc.proc_scsi_write”†”asbuh1hhjçÃh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´Mƒubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjçÃh²hh³jÄh´Mƒubj�)�”}”(hŒproc_scsi_write”h]”j“)�”}”(hj Äh]”hŒproc_scsi_write”…”�”}”(hj"Äh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÄubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjçÃh²hh³jÄh´MƒubjÊ)�”}”(hŒH(struct file *file, const char __user *buf, size_t length, loff_t *ppos)”h]”(jÐ)�”•}”(hŒstruct file *file”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj=Äh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj9Äubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJÄh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj9Äubh)�”}”(hhh]”j“)�”}”(hŒfile”h]”hŒfile”…”�”}”(hj[Äh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjXÄubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j]ÄŒmodname”NŒ classname”Njôj÷)�”}”jú]”j ÄŒc.proc_scsi_write”†”asbuh1hhj9Äubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyÄh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj9Äubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj‡Äh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj9Äubj“)�”}”(hŒfile”h]”hŒfile”…”�”}”(hj”Äh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj9Äubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj5ÄubjÐ)�”}”(hŒconst char __user *buf”h]”(jj)�”}”(hj’Ph]”hŒconst”…”�”}”(hj­Äh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj©Äubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjºÄh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj©Äubj’)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjÈÄh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj©Äubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖÄh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj©ÄubhŒ__user”…”�”}”(hj©Äh²hh³Nh´Nubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjèÄh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj©Äubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjöÄh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj©Äubj“)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj©Äubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj5ÄubjÐ)�”}”(hŒ size_t length”h]”(h)�”}”(hhh]”j“)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÅubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j!ÅŒmodname”NŒ classname”Njôj÷)�”}”jú]”j ÄŒc.proc_scsi_write”†”asbuh1hhjÅubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=Åh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÅubj“)�”}”(hŒlength”h]”hŒlength”…”�”}”(hjKÅh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÅubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj5ÄubjÐ)�”}”(hŒ loff_t *ppos”h]”(h)�”}”(hhh]”j“)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hjgÅh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjdÅubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jiÅŒmodname”NŒ classname”Njôj÷)�”}”jú]”j ÄŒc.proc_scsi_write”†”asbuh1hhj`Åubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…Åh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj`Åubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj“Åh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj`Åubj“)�”}”(hŒppos”h]”hŒppos”…”�”}”(hj Åh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj`Åubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj5Äubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjçÃh²hh³jÄh´Mƒubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjãÃh²hh³jÄh´Mƒubah}”(h]”jÞÃah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jÄh´MƒhjàÃh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ handle writes to /proc/scsi/scsi”h]”hŒ handle writes to /proc/scsi/scsi”…”�”}”(hjÊÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´MƒhjÇÅh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjàÃh²hh³jÄh´Mƒubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjâÅjäjâÅjå‰jæ‰jç‰uh1jXh²hhjk²h³Nh´Nubjé)�”}”(hXœ**Parameters** ``struct file *file`` not used ``const char __user *buf`` buffer to write ``size_t length`` length of buf, at most PAGE_SIZE ``loff_t *ppos`` not used **Description** this provides a legacy mechanism to add or remove devices by Host, Channel, ID, and Lun. To use, "echo 'scsi add-single-device 0 1 2 3' > /proc/scsi/scsi" or "echo 'scsi remove-single-device 0 1 2 3' > /proc/scsi/scsi" with "0 1 2 3" replaced by the Host, Channel, Id, and Lun. **Note** this seems to be aimed at parallel SCSI. Most modern busses (USB, SATA, Firewire, Fibre Channel, etc) dynamically assign these values to provide a unique identifier and nothing more.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjìÅh]”hŒ Parameters”…”�”}”(hjîÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjêÅubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´M‡hjæÅubj7)�”}”(hhh]”(j<)�”}”(hŒ``struct file *file`` not used ”h]”(jB)�”}”(hŒ``struct file *file``”h]”jH)�”}”(hj Æh]”hŒstruct file *file”…”�”}”(hj Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj Æubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´M„hjÆubj^)�”}”(hhh]”hì)�”}”(hŒnot used”h]”hŒnot used”…”�”}”(hj$Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j Æh´M„hj!Æubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÆubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j Æh´M„hjÆubj<)�”}”(hŒ+``const char __user *buf`` buffer to write ”h]”(jB)�”}”(hŒ``const char __user *buf``”h]”jH)�”}”(hjDÆh]”hŒconst char __user *buf”…”�”}”(hjFÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjBÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´M…hj>Æubj^)�”}”(hhh]”hì)�”}”(hŒbuffer to write”h]”hŒbuffer to write”…”�”}”(hj]Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jYÆh´M…hjZÆubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj>Æubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jYÆh´M…hjÆubj<)�”}”(hŒ3``size_t length`` length of buf, at most PAGE_SIZE ”h]”(jB)�”}”(hŒ``size_t length``”h]”jH)�”}”(hj}Æh]”hŒ size_t length”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj{Æubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´M†hjwÆubj^)�”}”(hhh]”hì)�”}”(hŒ length of buf, at most PAGE_SIZE”h]”hŒ length of buf, at most PAGE_SIZE”…”�”}”(hj–Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j’Æh´M†hj“Æubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjwÆubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j’Æh´M†hjÆubj<)�”}”(hŒ``loff_t *ppos`` not used ”h]”(jB)�”}”(hŒ``loff_t *ppos``”h]”jH)�”}”(hj¶Æh]”hŒ loff_t *ppos”…”�”}”(hj¸Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj´Æubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´M‡hj°Æubj^)�”}”(hhh]”hì)�”}”(hŒnot used”h]”hŒnot used”…”�”}”(hjÏÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³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&]”uh1j6hjæÅubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjñÆh]”hŒ Description”…”�”}”(hjóÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjïÆubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´M‰hjæÅubhì)�”}”(hXthis provides a legacy mechanism to add or remove devices by Host, Channel, ID, and Lun. To use, "echo 'scsi add-single-device 0 1 2 3' > /proc/scsi/scsi" or "echo 'scsi remove-single-device 0 1 2 3' > /proc/scsi/scsi" with "0 1 2 3" replaced by the Host, Channel, Id, and Lun.”h]”hX*this provides a legacy mechanism to add or remove devices by Host, Channel, ID, and Lun. To use, “echo ‘scsi add-single-device 0 1 2 3’ > /proc/scsi/scsiâ€� or “echo ‘scsi remove-single-device 0 1 2 3’ > /proc/scsi/scsiâ€� with “0 1 2 3â€� replaced by the Host, Channel, Id, and Lun.”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´M‰hjæÅubhì)�”}”(hŒ**Note**”h]”jó)�”}”(hjÇh]”hŒNote”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÇubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´M�hjæÅubhì)�”}”(hŒ¶this seems to be aimed at parallel SCSI. Most modern busses (USB, SATA, Firewire, Fibre Channel, etc) dynamically assign these values to provide a unique identifier and nothing more.”h]”hŒ¶this seems to be aimed at parallel SCSI. Most modern busses (USB, SATA, Firewire, Fibre Channel, etc) dynamically assign these values to provide a unique identifier and nothing more.”…”�”}”(hj.Çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´M�hjæÅubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjk²h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒproc_scsi_open (C function)”Œc.proc_scsi_open”hNt”auh1jGhjk²h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ;int proc_scsi_open (struct inode *inode, struct file *file)”h]”jd)�”}”(hŒ:int proc_scsi_open(struct inode *inode, struct file *file)”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hj]Çh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjYÇh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´M ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjlÇh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjYÇh²hh³jkÇh´M ubj�)�”}”(hŒproc_scsi_open”h]”j“)�”}”(hŒproc_scsi_open”h]”hŒproc_scsi_open”…”�”}”(hj~Çh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjzÇubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjYÇh²hh³jkÇh´M ubjÊ)�”}”(hŒ((struct inode *inode, struct file *file)”h]”(jÐ)�”}”(hŒstruct inode *inode”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjšÇh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj–Çubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§Çh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj–Çubh)�”}”(hhh]”j“)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj¸Çh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjµÇubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jºÇŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j j€ÇsbŒc.proc_scsi_open”†”asbuh1hhj–Çubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØÇh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj–Çubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjæÇh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj–Çubj“)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjóÇh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj–Çubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj’ÇubjÐ)�”}”(hŒstruct file *file”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj Èh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjÈubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÈubh)�”}”(hhh]”j“)�”}”(hŒfile”h]”hŒfile”…”�”}”(hj*Èh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj'Èubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j,ÈŒmodname”NŒ classname”Njôj÷)�”}”jú]”jÔÇŒc.proc_scsi_open”†”asbuh1hhjÈubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHÈh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÈubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjVÈh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjÈubj“)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjcÈh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÈubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj’Çubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjYÇh²hh³jkÇh´M ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjUÇh²hh³jkÇh´M ubah}”(h]”jPÇah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jkÇh´M hjRÇh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ glue function”h]”hŒ glue function”…”�”}”(hj�Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´M hjŠÈh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjRÇh²hh³jkÇh´M ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj¥Èjäj¥Èjå‰jæ‰jç‰uh1jXh²hhjk²h³Nh´Nubjé)�”}”(hŒž**Parameters** ``struct inode *inode`` not used ``struct file *file`` passed to single_open() **Description** Associates proc_scsi_show with this file”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj¯Èh]”hŒ Parameters”…”�”}”(hj±Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj­Èubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´Mhj©Èubj7)�”}”(hhh]”(j<)�”}”(hŒ!``struct inode *inode`` not used ”h]”(jB)�”}”(hŒ``struct inode *inode``”h]”jH)�”}”(hjÎÈh]”hŒstruct inode *inode”…”�”}”(hjÐÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjÌÈubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´M hjÈÈubj^)�”}”(hhh]”hì)�”}”(hŒnot used”h]”hŒnot used”…”�”}”(hjçÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jãÈh´M hjäÈubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÈÈubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jãÈh´M hjÅÈubj<)�”}”(hŒ.``struct file *file`` passed to single_open() ”h]”(jB)�”}”(hŒ``struct file *file``”h]”jH)�”}”(hjÉh]”hŒstruct file *file”…”�”}”(hj Éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´M hjÉubj^)�”}”(hhh]”hì)�”}”(hŒpassed to single_open()”h]”hŒpassed to single_open()”…”�”}”(hj Éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÉh´M hjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÉubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jÉh´M hjÅÈubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hj©Èubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjBÉh]”hŒ Description”…”�”}”(hjDÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj@Éubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´Mhj©Èubhì)�”}”(hŒ(Associates proc_scsi_show with this file”h]”hŒ(Associates proc_scsi_show with this file”…”�”}”(hjXÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´Mhj©Èubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjk²h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_init_procfs (C function)”Œc.scsi_init_procfs”hNt”auh1jGhjk²h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒint scsi_init_procfs (void)”h]”jd)�”}”(hŒint scsi_init_procfs(void)”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hj‡Éh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjƒÉh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´M#ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–Éh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjƒÉh²hh³j•Éh´M#ubj�)�”}”(hŒscsi_init_procfs”h]”j“)�”}”(hŒscsi_init_procfs”h]”hŒscsi_init_procfs”…”�”}”(hj¨Éh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj¤Éubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjƒÉh²hh³j•Éh´M#ubjÊ)�”}”(hŒ(void)”h]”jÐ)�”}”(hŒvoid”h]”j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÄÉh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjÀÉubah}”(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²ˆuh1jcj³j´hjÉh²hh³j•Éh´M#ubah}”(h]”jzÉah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j•Éh´M#hj|Éh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ#create scsi and scsi/scsi in procfs”h]”hŒ#create scsi and scsi/scsi in procfs”…”�”}”(hjîÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´M#hjëÉh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj|Éh²hh³j•Éh´M#ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjÊjäjÊjå‰jæ‰jç‰uh1jXh²hhjk²h³Nh´Nubjé)�”}”(hŒ'**Parameters** ``void`` no arguments”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjÊh]”hŒ Parameters”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´M'hj Êubj7)�”}”(hhh]”j<)�”}”(hŒ``void`` no arguments”h]”(jB)�”}”(hŒ``void``”h]”jH)�”}”(hj/Êh]”hŒvoid”…”�”}”(hj1Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj-Êubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´M)hj)Êubj^)�”}”(hhh]”hì)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hjHÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´KhjEÊubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj)Êubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jDÊh´M)hj&Êubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj Êubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjk²h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_exit_procfs (C function)”Œc.scsi_exit_procfs”hNt”auh1jGhjk²h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒvoid scsi_exit_procfs (void)”h]”jd)�”}”(hŒvoid scsi_exit_procfs(void)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj‰Êh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj…Êh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´M:ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜Êh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj…Êh²hh³j—Êh´M:ubj�)�”}”(hŒscsi_exit_procfs”h]”j“)�”}”(hŒscsi_exit_procfs”h]”hŒscsi_exit_procfs”…”�”}”(hjªÊh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj¦Êubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj…Êh²hh³j—Êh´M:ubjÊ)�”}”(hŒ(void)”h]”jÐ)�”}”(hŒvoid”h]”j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÆÊh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjÂÊubah}”(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²ˆuh1jcj³j´hj�Êh²hh³j—Êh´M:ubah}”(h]”j|Êah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j—Êh´M:hj~Êh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ%Remove scsi/scsi and scsi from procfs”h]”hŒ%Remove scsi/scsi and scsi from procfs”…”�”}”(hjðÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´M:hjíÊh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj~Êh²hh³j—Êh´M:ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjËjäjËjå‰jæ‰jç‰uh1jXh²hhjk²h³Nh´Nubjé)�”}”(hŒ'**Parameters** ``void`` no arguments”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjËh]”hŒ Parameters”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjËubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´M>hj Ëubj7)�”}”(hhh]”j<)�”}”(hŒ``void`` no arguments”h]”(jB)�”}”(hŒ``void``”h]”jH)�”}”(hj1Ëh]”hŒvoid”…”�”}”(hj3Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj/Ëubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´M@hj+Ëubj^)�”}”(hhh]”hì)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hjJËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´KhjGËubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj+Ëubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jFËh´M@hj(Ëubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj Ëubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjk²h²hh³Nh´Nubeh}”(h]”Œdrivers-scsi-scsi-proc-c”ah ]”h"]”Œdrivers/scsi/scsi_proc.c”ah$]”h&]”uh1hµhj%h²hh³hÊh´K�ubh¶)�”}”(hhh]”(h»)�”}”(hŒdrivers/scsi/scsi_netlink.c”h]”hŒdrivers/scsi/scsi_netlink.c”…”�”}”(hj}Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjzËh²hh³hÊh´K§ubhì)�”}”(hXInfrastructure to provide async events from transports to userspace via netlink, using a single NETLINK_SCSITRANSPORT protocol for all transports. See `the original patch submission `__ for more details.”h]”(hŒ—Infrastructure to provide async events from transports to userspace via netlink, using a single NETLINK_SCSITRANSPORT protocol for all transports. See ”…”�”}”(hj‹Ëh²hh³Nh´Nubj‚)�”}”(hŒu`the original patch submission `__”h]”hŒthe original patch submission”…”�”}”(hj“Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œthe original patch submission”j“ŒQhttps://lore.kernel.org/linux-scsi/1155070439.6275.5.camel@localhost.localdomain/”uh1j�hj‹ËubhŒ for more details.”…”�”}”(hj‹Ëh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K©hjzËh²hubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_nl_rcv_msg (C function)”Œc.scsi_nl_rcv_msg”hNt”auh1jGhjzËh²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ*void scsi_nl_rcv_msg (struct sk_buff *skb)”h]”jd)�”}”(hŒ)void scsi_nl_rcv_msg(struct sk_buff *skb)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÇËh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjÃËh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:175: ./drivers/scsi/scsi_netlink.c”h´Kubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖËh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÃËh²hh³jÕËh´Kubj�)�”}”(hŒscsi_nl_rcv_msg”h]”j“)�”}”(hŒscsi_nl_rcv_msg”h]”hŒscsi_nl_rcv_msg”…”�”}”(hjèËh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjäËubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjÃËh²hh³jÕËh´KubjÊ)�”}”(hŒ(struct sk_buff *skb)”h]”jÐ)�”}”(hŒstruct sk_buff *skb”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjÌubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÌubh)�”}”(hhh]”j“)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj"Ìh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÌubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j$ÌŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jêËsbŒc.scsi_nl_rcv_msg”†”asbuh1hhjÌubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBÌh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÌubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjPÌh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjÌubj“)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj]Ìh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÌ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´Kubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj¿Ëh²hh³jÕËh´Kubah}”(h]”jºËah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jÕËh´Khj¼Ëh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒReceive message handler.”h]”hŒReceive message handler.”…”�”}”(hj‡Ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:175: ./drivers/scsi/scsi_netlink.c”h´Khj„Ìh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj¼Ëh²hh³jÕËh´Kubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjŸÌjäjŸÌjå‰jæ‰jç‰uh1jXh²hhjzËh³Nh´Nubjé)�”}”(hŒÅ**Parameters** ``struct sk_buff *skb`` socket receive buffer **Description** Extracts message from a receive buffer. Validates message header and calls appropriate transport message handler”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj©Ìh]”hŒ Parameters”…”�”}”(hj«Ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj§Ìubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:175: ./drivers/scsi/scsi_netlink.c”h´Khj£Ìubj7)�”}”(hhh]”j<)�”}”(hŒ.``struct sk_buff *skb`` socket receive buffer ”h]”(jB)�”}”(hŒ``struct sk_buff *skb``”h]”jH)�”}”(hjÈÌh]”hŒstruct sk_buff *skb”…”�”}”(hjÊÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjÆÌubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:175: ./drivers/scsi/scsi_netlink.c”h´KhjÂÌubj^)�”}”(hhh]”hì)�”}”(hŒsocket receive buffer”h]”hŒsocket receive buffer”…”�”}”(hjáÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÝÌh´KhjÞÌubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÂÌubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jÝÌh´Khj¿Ìubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj£Ìubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjÍh]”hŒ Description”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÍubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:175: ./drivers/scsi/scsi_netlink.c”h´Khj£Ìubj7)�”}”(hhh]”j<)�”}”(hŒpExtracts message from a receive buffer. Validates message header and calls appropriate transport message handler”h]”(jB)�”}”(hŒ'Extracts message from a receive buffer.”h]”hŒ'Extracts message from a receive buffer.”…”�”}”(hj Íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:175: ./drivers/scsi/scsi_netlink.c”h´KhjÍubj^)�”}”(hhh]”hì)�”}”(hŒHValidates message header and calls appropriate transport message handler”h]”hŒHValidates message header and calls appropriate transport message handler”…”�”}”(hj2Íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:175: ./drivers/scsi/scsi_netlink.c”h´Khj/Íubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÍubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j.Íh´KhjÍubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj£Ìubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjzËh²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_netlink_init (C function)”Œc.scsi_netlink_init”hNt”auh1jGhjzËh²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒvoid scsi_netlink_init (void)”h]”jd)�”}”(hŒvoid scsi_netlink_init(void)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjsÍh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjoÍh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:175: ./drivers/scsi/scsi_netlink.c”h´Kkubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚Íh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjoÍh²hh³j�Íh´Kkubj�)�”}”(hŒscsi_netlink_init”h]”j“)�”}”(hŒscsi_netlink_init”h]”hŒscsi_netlink_init”…”�”}”(hj”Íh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj�Íubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjoÍh²hh³j�Íh´KkubjÊ)�”}”(hŒ(void)”h]”jÐ)�”}”(hŒvoid”h]”j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj°Íh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj¬Íubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj¨Íubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjoÍh²hh³j�Íh´Kkubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjkÍh²hh³j�Íh´Kkubah}”(h]”jfÍah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j�Íh´KkhjhÍh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒKCalled by SCSI subsystem to initialize the SCSI transport netlink interface”h]”hŒKCalled by SCSI subsystem to initialize the SCSI transport netlink interface”…”�”}”(hjÚÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:175: ./drivers/scsi/scsi_netlink.c”h´Kkhj×Íh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjhÍh²hh³j�Íh´Kkubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjòÍjäjòÍjå‰jæ‰jç‰uh1jXh²hhjzËh³Nh´Nubjé)�”}”(hŒ'**Parameters** ``void`` no arguments”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjüÍh]”hŒ Parameters”…”�”}”(hjþÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjúÍubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:175: ./drivers/scsi/scsi_netlink.c”h´KohjöÍubj7)�”}”(hhh]”j<)�”}”(hŒ``void`` no arguments”h]”(jB)�”}”(hŒ``void``”h]”jH)�”}”(hjÎh]”hŒvoid”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:175: ./drivers/scsi/scsi_netlink.c”h´KqhjÎubj^)�”}”(hhh]”hì)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hj4Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:175: ./drivers/scsi/scsi_netlink.c”h´Khj1Îubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j0Îh´KqhjÎubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjöÍubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjzËh²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_netlink_exit (C function)”Œc.scsi_netlink_exit”hNt”auh1jGhjzËh²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒvoid scsi_netlink_exit (void)”h]”jd)�”}”(hŒvoid scsi_netlink_exit(void)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjuÎh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjqÎh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:175: ./drivers/scsi/scsi_netlink.c”h´K„ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„Îh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjqÎh²hh³jƒÎh´K„ubj�)�”}”(hŒscsi_netlink_exit”h]”j“)�”}”(hŒscsi_netlink_exit”h]”hŒscsi_netlink_exit”…”�”}”(hj–Îh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj’Îubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjqÎh²hh³jƒÎh´K„ubjÊ)�”}”(hŒ(void)”h]”jÐ)�”}”(hŒvoid”h]”j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj²Îh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj®Îubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjªÎubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjqÎh²hh³jƒÎh´K„ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjmÎh²hh³jƒÎh´K„ubah}”(h]”jhÎah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jƒÎh´K„hjjÎh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒHCalled by SCSI subsystem to disable the SCSI transport netlink interface”h]”hŒHCalled by SCSI subsystem to disable the SCSI transport netlink interface”…”�”}”(hjÜÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:175: ./drivers/scsi/scsi_netlink.c”h´K„hjÙÎh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjjÎh²hh³jƒÎh´K„ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjôÎjäjôÎjå‰jæ‰jç‰uh1jXh²hhjzËh³Nh´Nubjé)�”}”(hŒ'**Parameters** ``void`` no arguments”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjþÎh]”hŒ Parameters”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjüÎubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:175: ./drivers/scsi/scsi_netlink.c”h´KˆhjøÎubj7)�”}”(hhh]”j<)�”}”(hŒ``void`` no arguments”h]”(jB)�”}”(hŒ``void``”h]”jH)�”}”(hjÏh]”hŒvoid”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:175: ./drivers/scsi/scsi_netlink.c”h´KŠhjÏubj^)�”}”(hhh]”hì)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hj6Ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:175: ./drivers/scsi/scsi_netlink.c”h´Khj3Ïubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÏubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j2Ïh´KŠhjÏubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjøÎubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjzËh²hh³Nh´Nubeh}”(h]”Œdrivers-scsi-scsi-netlink-c”ah ]”h"]”Œdrivers/scsi/scsi_netlink.c”ah$]”h&]”uh1hµhj%h²hh³hÊh´K§ubh¶)�”}”(hhh]”(h»)�”}”(hŒdrivers/scsi/scsi_scan.c”h]”hŒdrivers/scsi/scsi_scan.c”…”�”}”(hjiÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjfÏh²hh³hÊh´K³ubhì)�”}”(hX5Scan a host to determine which (if any) devices are attached. The general scanning/probing algorithm is as follows, exceptions are made to it depending on device specific flags, compilation options, and global variable (boot or module load time) settings. A specific LUN is scanned via an INQUIRY command; if the LUN has a device attached, a scsi_device is allocated and setup for it. For every id of every channel on the given host, start by scanning LUN 0. Skip hosts that don't respond at all to a scan of LUN 0. Otherwise, if LUN 0 has a device attached, allocate and setup a scsi_device for it. If target is SCSI-3 or up, issue a REPORT LUN, and scan all of the LUNs returned by the REPORT LUN; else, sequentially scan LUNs up until some maximum is reached, or a LUN is seen that cannot have a device attached to it.”h]”hX7Scan a host to determine which (if any) devices are attached. The general scanning/probing algorithm is as follows, exceptions are made to it depending on device specific flags, compilation options, and global variable (boot or module load time) settings. A specific LUN is scanned via an INQUIRY command; if the LUN has a device attached, a scsi_device is allocated and setup for it. For every id of every channel on the given host, start by scanning LUN 0. Skip hosts that don’t respond at all to a scan of LUN 0. Otherwise, if LUN 0 has a device attached, allocate and setup a scsi_device for it. If target is SCSI-3 or up, issue a REPORT LUN, and scan all of the LUNs returned by the REPORT LUN; else, sequentially scan LUNs up until some maximum is reached, or a LUN is seen that cannot have a device attached to it.”…”�”}”(hjwÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KµhjfÏh²hubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ)scsi_sanitize_inquiry_string (C function)”Œc.scsi_sanitize_inquiry_string”hNt”auh1jGhjfÏh²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ=void scsi_sanitize_inquiry_string (unsigned char *s, int len)”h]”jd)�”}”(hŒÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj:Ôubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:194: ./drivers/scsi/scsi_scan.c”h´Mˆhj6Ôubj^)�”}”(hhh]”hì)�”}”(hŒLUN of target device”h]”hŒLUN of target device”…”�”}”(hjUÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jQÔh´MˆhjRÔubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj6Ôubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jQÔh´MˆhjSÓubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hj7Óubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjwÔh]”hŒ Description”…”�”}”(hjyÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjuÔubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:194: ./drivers/scsi/scsi_scan.c”h´MŠhj7Óubhì)�”}”(hŒ-Probe for a specific LUN and add it if found.”h]”hŒ-Probe for a specific LUN and add it if found.”…”�”}”(hj�Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:194: ./drivers/scsi/scsi_scan.c”h´M‰hj7Óubhì)�”}”(hŒ **Notes**”h]”jó)�”}”(hjžÔh]”hŒNotes”…”�”}”(hj Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjœÔubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:194: ./drivers/scsi/scsi_scan.c”h´M‹hj7Óubhì)�”}”(hX@This call is usually performed internally during a SCSI bus scan when an HBA is added (i.e. scsi_scan_host()). So it should only be called if the HBA becomes aware of a new SCSI device (LU) after scsi_scan_host() has completed. If successful this call can lead to sdev_init() and sdev_configure() callbacks into the LLD.”h]”hX@This call is usually performed internally during a SCSI bus scan when an HBA is added (i.e. scsi_scan_host()). So it should only be called if the HBA becomes aware of a new SCSI device (LU) after scsi_scan_host() has completed. If successful this call can lead to sdev_init() and sdev_configure() callbacks into the LLD.”…”�”}”(hj´Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:194: ./drivers/scsi/scsi_scan.c”h´MŒhj7Óubhì)�”}”(hŒ **Return**”h]”jó)�”}”(hjÅÔh]”hŒReturn”…”�”}”(hjÇÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÃÔubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:194: ./drivers/scsi/scsi_scan.c”h´M“hj7Óubhì)�”}”(hŒ2``0`` on success or negative error code on failure”h]”(jH)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hjßÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjÛÔubhŒ- on success or negative error code on failure”…”�”}”(hjÛÔh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:194: ./drivers/scsi/scsi_scan.c”h´M“hj7Óubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjfÏh²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_scan_target (C function)”Œc.scsi_scan_target”hNt”auh1jGhjfÏh²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒyvoid scsi_scan_target (struct device *parent, unsigned int channel, unsigned int id, u64 lun, enum scsi_scan_mode rescan)”h]”jd)�”}”(hŒxvoid scsi_scan_target(struct device *parent, unsigned int channel, unsigned int id, u64 lun, enum scsi_scan_mode rescan)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjÕh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:194: ./drivers/scsi/scsi_scan.c”h´M%ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'Õh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÕh²hh³j&Õh´M%ubj�)�”}”(hŒscsi_scan_target”h]”j“)�”}”(hŒscsi_scan_target”h]”hŒscsi_scan_target”…”�”}”(hj9Õh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj5Õubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjÕh²hh³j&Õh´M%ubjÊ)�”}”(hŒc(struct device *parent, unsigned int channel, unsigned int id, u64 lun, enum scsi_scan_mode rescan)”h]”(jÐ)�”}”(hŒstruct device *parent”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjUÕh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjQÕubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbÕh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjQÕubh)�”}”(hhh]”j“)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjsÕh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjpÕubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”juÕŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j j;ÕsbŒc.scsi_scan_target”†”asbuh1hhjQÕubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“Õh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjQÕubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj¡Õh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjQÕubj“)�”}”(hŒparent”h]”hŒparent”…”�”}”(hj®Õh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjQÕubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjMÕubjÐ)�”}”(hŒunsigned int channel”h]”(j’)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÇÕh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjÃÕubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕÕh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÃÕubj’)�”}”(hŒint”h]”hŒint”…”�”}”(hjãÕh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjÃÕubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñÕh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÃÕubj“)�”}”(hŒchannel”h]”hŒchannel”…”�”}”(hjÿÕh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÃÕubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjMÕubjÐ)�”}”(hŒunsigned int id”h]”(j’)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjÖubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&Öh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÖubj’)�”}”(hŒint”h]”hŒint”…”�”}”(hj4Öh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjÖubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBÖh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÖubj“)�”}”(hŒid”h]”hŒid”…”�”}”(hjPÖh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÖubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjMÕubjÐ)�”}”(hŒu64 lun”h]”(h)�”}”(hhh]”j“)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjlÖh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjiÖubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jnÖŒmodname”NŒ classname”Njôj÷)�”}”jú]”j�ÕŒc.scsi_scan_target”†”asbuh1hhjeÖubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠÖh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjeÖubj“)�”}”(hŒlun”h]”hŒlun”…”�”}”(hj˜Öh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjeÖubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjMÕubjÐ)�”}”(hŒenum scsi_scan_mode rescan”h]”(jj)�”}”(hjf9h]”hŒenum”…”�”}”(hj±Öh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj­Öubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾Öh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj­Öubh)�”}”(hhh]”j“)�”}”(hŒscsi_scan_mode”h]”hŒscsi_scan_mode”…”�”}”(hjÏÖh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÌÖubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jÑÖŒmodname”NŒ classname”Njôj÷)�”}”jú]”j�ÕŒc.scsi_scan_target”†”asbuh1hhj­Öubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjíÖh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj­Öubj“)�”}”(hŒrescan”h]”hŒrescan”…”�”}”(hjûÖh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj­Öubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjMÕubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjÕh²hh³j&Õh´M%ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjÕh²hh³j&Õh´M%ubah}”(h]”j Õah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j&Õh´M%hj Õh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ. Scan at least LUN 0, and possibly all LUNs on the target id.”…”�”}”(hj Øh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:194: ./drivers/scsi/scsi_scan.c”h´M/hjœØubhì)�”}”(hŒmFirst try a REPORT LUN scan, if that does not scan the target, do a sequential scan of LUNs on the target id.”h]”hŒmFirst try a REPORT LUN scan, if that does not scan the target, do a sequential scan of LUNs on the target id.”…”�”}”(hjåØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:194: ./drivers/scsi/scsi_scan.c”h´M2hjœØubeh}”(h]”h ]”h"]”h$]”h&]”uh1jsh³jäØh´M/hjA×ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjfÏh²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_scan_host (C function)”Œc.scsi_scan_host”hNt”auh1jGhjfÏh²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ-void scsi_scan_host (struct Scsi_Host *shost)”h]”jd)�”}”(hŒ,void scsi_scan_host(struct Scsi_Host *shost)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjÙh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:194: ./drivers/scsi/scsi_scan.c”h´Mubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)Ùh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÙh²hh³j(Ùh´Mubj�)�”}”(hŒscsi_scan_host”h]”j“)�”}”(hŒscsi_scan_host”h]”hŒscsi_scan_host”…”�”}”(hj;Ùh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’•hj7Ùubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjÙh²hh³j(Ùh´MubjÊ)�”}”(hŒ(struct Scsi_Host *shost)”h]”jÐ)�”}”(hŒstruct Scsi_Host *shost”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjWÙh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjSÙubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdÙh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjSÙubh)�”}”(hhh]”j“)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hjuÙh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjrÙubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jwÙŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j j=ÙsbŒc.scsi_scan_host”†”asbuh1hhjSÙubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•Ùh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjSÙubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj£Ùh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjSÙubj“)�”}”(hŒshost”h]”hŒshost”…”�”}”(hj°Ùh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjSÙubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjOÙubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjÙh²hh³j(Ùh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjÙh²hh³j(Ùh´Mubah}”(h]”j Ùah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j(Ùh´MhjÙh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒscan the given adapter”h]”hŒscan the given adapter”…”�”}”(hjÚÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:194: ./drivers/scsi/scsi_scan.c”h´Mhj×Ùh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjÙh²hh³j(Ùh´Mubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjòÙjäjòÙjå‰jæ‰jç‰uh1jXh²hhjfÏh³Nh´Nubjé)�”}”(hŒp**Parameters** ``struct Scsi_Host *shost`` adapter to scan **Notes** Should be called after scsi_add_host()”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjüÙh]”hŒ Parameters”…”�”}”(hjþÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjúÙubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:194: ./drivers/scsi/scsi_scan.c”h´MhjöÙubj7)�”}”(hhh]”j<)�”}”(hŒ,``struct Scsi_Host *shost`` adapter to scan ”h]”(jB)�”}”(hŒ``struct Scsi_Host *shost``”h]”jH)�”}”(hjÚh]”hŒstruct Scsi_Host *shost”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:194: ./drivers/scsi/scsi_scan.c”h´MhjÚubj^)�”}”(hhh]”hì)�”}”(hŒadapter to scan”h]”hŒadapter to scan”…”�”}”(hj4Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j0Úh´Mhj1Úubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÚubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j0Úh´MhjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjöÙubhì)�”}”(hŒ **Notes**”h]”jó)�”}”(hjVÚh]”hŒNotes”…”�”}”(hjXÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjTÚubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:194: ./drivers/scsi/scsi_scan.c”h´MhjöÙubhì)�”}”(hŒ&Should be called after scsi_add_host()”h]”hŒ&Should be called after scsi_add_host()”…”�”}”(hjlÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:194: ./drivers/scsi/scsi_scan.c”h´MhjöÙubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjfÏh²hh³Nh´Nubeh}”(h]”Œdrivers-scsi-scsi-scan-c”ah ]”h"]”Œdrivers/scsi/scsi_scan.c”ah$]”h&]”uh1hµhj%h²hh³hÊh´K³ubh¶)�”}”(hhh]”(h»)�”}”(hŒdrivers/scsi/scsi_sysctl.c”h]”hŒdrivers/scsi/scsi_sysctl.c”…”�”}”(hj�Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjŠÚh²hh³hÊh´KÆubhì)�”}”(hŒrSet up the sysctl entry: "/dev/scsi/logging_level" (DEV_SCSI_LOGGING_LEVEL) which sets/returns scsi_logging_level.”h]”hŒvSet up the sysctl entry: “/dev/scsi/logging_levelâ€� (DEV_SCSI_LOGGING_LEVEL) which sets/returns scsi_logging_level.”…”�”}”(hj›Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KÈhjŠÚh²hubeh}”(h]”Œdrivers-scsi-scsi-sysctl-c”ah ]”h"]”Œdrivers/scsi/scsi_sysctl.c”ah$]”h&]”uh1hµhj%h²hh³hÊh´KÆubh¶)�”}”(hhh]”(h»)�”}”(hŒdrivers/scsi/scsi_sysfs.c”h]”hŒdrivers/scsi/scsi_sysfs.c”…”�”}”(hj´Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj±Úh²hh³hÊh´KÌubhì)�”}”(hŒSCSI sysfs interface routines.”h]”hŒSCSI sysfs interface routines.”…”�”}”(hjÂÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KÎhj±Úh²hubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_remove_device (C function)”Œc.scsi_remove_device”hNt”auh1jGhj±Úh²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ2void scsi_remove_device (struct scsi_device *sdev)”h]”jd)�”}”(hŒ1void scsi_remove_device(struct scsi_device *sdev)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjéÚh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjåÚh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:208: ./drivers/scsi/scsi_sysfs.c”h´Mûubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjøÚh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjåÚh²hh³j÷Úh´Mûubj�)�”}”(hŒscsi_remove_device”h]”j“)�”}”(hŒscsi_remove_device”h]”hŒscsi_remove_device”…”�”}”(hj Ûh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÛubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjåÚh²hh³j÷Úh´MûubjÊ)�”}”(hŒ(struct scsi_device *sdev)”h]”jÐ)�”}”(hŒstruct scsi_device *sdev”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj&Ûh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj"Ûubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3Ûh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj"Ûubh)�”}”(hhh]”j“)�”}”(hŒ scsi_device”h]”hŒ scsi_device”…”�”}”(hjDÛh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjAÛubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jFÛŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j j ÛsbŒc.scsi_remove_device”†”asbuh1hhj"Ûubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdÛh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj"Ûubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjrÛh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj"Ûubj“)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj"Û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²ˆuh1jcj³j´hjáÚh²hh³j÷Úh´Mûubah}”(h]”jÜÚah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j÷Úh´MûhjÞÚh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ%unregister a device from the scsi bus”h]”hŒ%unregister a device from the scsi bus”…”�”}”(hj©Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:208: ./drivers/scsi/scsi_sysfs.c”h´Mûhj¦Ûh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjÞÚh²hh³j÷Úh´Mûubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjÁÛjäjÁÛjå‰jæ‰jç‰uh1jXh²hhj±Úh³Nh´Nubjé)�”}”(hŒH**Parameters** ``struct scsi_device *sdev`` scsi_device to unregister”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjËÛh]”hŒ Parameters”…”�”}”(hjÍÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÉÛubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:208: ./drivers/scsi/scsi_sysfs.c”h´MÿhjÅÛubj7)�”}”(hhh]”j<)�”}”(hŒ6``struct scsi_device *sdev`` scsi_device to unregister”h]”(jB)�”}”(hŒ``struct scsi_device *sdev``”h]”jH)�”}”(hjêÛh]”hŒstruct scsi_device *sdev”…”�”}”(hjìÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjèÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:208: ./drivers/scsi/scsi_sysfs.c”h´MhjäÛubj^)�”}”(hhh]”hì)�”}”(hŒscsi_device to unregister”h]”hŒscsi_device to unregister”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:208: ./drivers/scsi/scsi_sysfs.c”h´MühjÜubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjäÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jÿÛh´MhjáÛubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjÅÛubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj±Úh²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_remove_target (C function)”Œc.scsi_remove_target”hNt”auh1jGhj±Úh²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ,void scsi_remove_target (struct device *dev)”h]”jd)�”}”(hŒ+void scsi_remove_target(struct device *dev)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjDÜh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj@Üh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:208: ./drivers/scsi/scsi_sysfs.c”h´M(ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSÜh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj@Üh²hh³jRÜh´M(ubj�)�”}”(hŒscsi_remove_target”h]”j“)�”}”(hŒscsi_remove_target”h]”hŒscsi_remove_target”…”�”}”(hjeÜh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjaÜubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj@Üh²hh³jRÜh´M(ubjÊ)�”}”(hŒ(struct device *dev)”h]”jÐ)�”}”(hŒstruct device *dev”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj�Üh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj}Üubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽÜh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj}Üubh)�”}”(hhh]”j“)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjŸÜh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjœÜubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j¡ÜŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jgÜsbŒc.scsi_remove_target”†”asbuh1hhj}Üubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿Üh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj}Üubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjÍÜh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj}Üubj“)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjÚÜh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj}Üubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjyÜubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhj@Üh²hh³jRÜh´M(ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj<Üh²hh³jRÜh´M(ubah}”(h]”j7Üah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jRÜh´M(hj9Üh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ*try to remove a target and all its devices”h]”hŒ*try to remove a target and all its devices”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:208: ./drivers/scsi/scsi_sysfs.c”h´M(hjÝh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj9Üh²hh³jRÜh´M(ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjÝjäjÝjå‰jæ‰jç‰uh1jXh²hhj±Úh³Nh´Nubjé)�”}”(hŒñ**Parameters** ``struct device *dev`` generic starget or parent of generic stargets to be removed **Note** This is slightly racy. It is possible that if the user requests the addition of another device then the target won't be removed.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj&Ýh]”hŒ Parameters”…”�”}”(hj(Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj$Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:208: ./drivers/scsi/scsi_sysfs.c”h´M,hj Ýubj7)�”}”(hhh]”j<)�”}”(hŒS``struct device *dev`` generic starget or parent of generic stargets to be removed ”h]”(jB)�”}”(hŒ``struct device *dev``”h]”jH)�”}”(hjEÝh]”hŒstruct device *dev”…”�”}”(hjGÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjCÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:208: ./drivers/scsi/scsi_sysfs.c”h´M)hj?Ýubj^)�”}”(hhh]”hì)�”}”(hŒ;generic starget or parent of generic stargets to be removed”h]”hŒ;generic starget or parent of generic stargets to be removed”…”�”}”(hj^Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jZÝh´M)hj[Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj?Ýubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jZÝh´M)hj<Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj Ýubhì)�”}”(hŒ**Note**”h]”jó)�”}”(hj€Ýh]”hŒNote”…”�”}”(hj‚Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj~Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:208: ./drivers/scsi/scsi_sysfs.c”h´M+hj Ýubhì)�”}”(hŒ�This is slightly racy. It is possible that if the user requests the addition of another device then the target won't be removed.”h]”hŒƒThis is slightly racy. It is possible that if the user requests the addition of another device then the target won’t be removed.”…”�”}”(hj–Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:208: ./drivers/scsi/scsi_sysfs.c”h´M+hj Ýubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj±Úh²hh³Nh´Nubeh}”(h]”Œdrivers-scsi-scsi-sysfs-c”ah ]”h"]”Œdrivers/scsi/scsi_sysfs.c”ah$]”h&]”uh1hµhj%h²hh³hÊh´KÌubh¶)�”}”(hhh]”(h»)�”}”(hŒdrivers/scsi/hosts.c”h]”hŒdrivers/scsi/hosts.c”…”�”}”(hj·Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj´Ýh²hh³hÊh´KÔubhì)�”}”(hŒ%mid to lowlevel SCSI driver interface”h]”hŒ%mid to lowlevel SCSI driver interface”…”�”}”(hjÅÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KÖhj´Ýh²hubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_remove_host (C function)”Œc.scsi_remove_host”hNt”auh1jGhj´Ýh²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ/void scsi_remove_host (struct Scsi_Host *shost)”h]”jd)�”}”(hŒ.void scsi_remove_host(struct Scsi_Host *shost)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjìÝh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjèÝh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´K£ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjûÝh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjèÝh²hh³júÝh´K£ubj�)�”}”(hŒscsi_remove_host”h]”j“)�”}”(hŒscsi_remove_host”h]”hŒscsi_remove_host”…”�”}”(hj Þh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj Þubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjèÝh²hh³júÝh´K£ubjÊ)�”}”(hŒ(struct Scsi_Host *shost)”h]”jÐ)�”}”(hŒstruct Scsi_Host *shost”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj)Þh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj%Þubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6Þh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj%Þubh)�”}”(hhh]”j“)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hjGÞh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjDÞubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jIÞŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jÞsbŒc.scsi_remove_host”†”asbuh1hhj%Þubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjgÞh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj%Þubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjuÞh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj%Þubj“)�”}”(hŒshost”h]”hŒshost”…”�”}”(hj‚Þh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj%Þ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²ˆuh1jcj³j´hjäÝh²hh³júÝh´K£ubah}”(h]”jßÝah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³júÝh´K£hjáÝh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒremove a scsi host”h]”hŒremove a scsi host”…”�”}”(hj¬Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´K£hj©Þh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjáÝh²hh³júÝh´K£ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjÄÞjäjÄÞjå‰jæ‰jç‰uh1jXh²hhj´Ýh³Nh´Nubjé)�”}”(hŒP**Parameters** ``struct Scsi_Host *shost`` a pointer to a scsi host to remove”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjÎÞh]”hŒ Parameters”…”�”}”(hjÐÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÌÞubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´K§hjÈÞubj7)�”}”(hhh]”j<)�”}”(hŒ>``struct Scsi_Host *shost`` a pointer to a scsi host to remove”h]”(jB)�”}”(hŒ``struct Scsi_Host *shost``”h]”jH)�”}”(hjíÞh]”hŒstruct Scsi_Host *shost”…”�”}”(hjïÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjëÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´K©hjçÞubj^)�”}”(hhh]”hì)�”}”(hŒ"a pointer to a scsi host to remove”h]”hŒ"a pointer to a scsi host to remove”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.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&]”uh1j6hjÈÞubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj´Ýh²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ#scsi_add_host_with_dma (C function)”Œc.scsi_add_host_with_dma”hNt”auh1jGhj´Ýh²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ`int scsi_add_host_with_dma (struct Scsi_Host *shost, struct device *dev, struct device *dma_dev)”h]”jd)�”}”(hŒ_int scsi_add_host_with_dma(struct Scsi_Host *shost, struct device *dev, struct device *dma_dev)”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hjGßh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjCßh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´KÐubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVßh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjCßh²hh³jUßh´KÐubj�)�”}”(hŒscsi_add_host_with_dma”h]”j“)�”}”(hŒscsi_add_host_with_dma”h]”hŒscsi_add_host_with_dma”…”�”}”(hjhßh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjdßubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjCßh²hh³jUßh´KÐubjÊ)�”}”(hŒE(struct Scsi_Host *shost, struct device *dev, struct device *dma_dev)”h]”(jÐ)�”}”(hŒstruct Scsi_Host *shost”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj„ßh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj€ßubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘ßh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj€ßubh)�”}”(hhh]”j“)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hj¢ßh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjŸßubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j¤ßŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jjßsbŒc.scsi_add_host_with_dma”†”asbuh1hhj€ßubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂßh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj€ßubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjÐßh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj€ßubj“)�”}”(hŒshost”h]”hŒshost”…”�”}”(hjÝßh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj€ßubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj|ßubjÐ)�”}”(hŒstruct device *dev”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjößh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjòßubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjòßubh)�”}”(hhh]”j“)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjàubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jàŒmodname”NŒ classname”Njôj÷)�”}”jú]”j¾ßŒc.scsi_add_host_with_dma”†”asbuh1hhjòßubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2àh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjòßubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj@àh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjòßubj“)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjMàh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjòßubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj|ßubjÐ)�”}”(hŒstruct device *dma_dev”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjfàh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjbàubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjsàh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjbàubh)�”}”(hhh]”j“)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj„àh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj�àubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j†àŒmodname”NŒ classname”Njôj÷)�”}”jú]”j¾ßŒc.scsi_add_host_with_dma”†”asbuh1hhjbàubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢àh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjbàubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj°àh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjbàubj“)�”}”(hŒdma_dev”h]”hŒdma_dev”…”�”}”(hj½àh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjbàubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj|ßubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjCßh²hh³jUßh´KÐubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj?ßh²hh³jUßh´KÐubah}”(h]”j:ßah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jUßh´KÐhj<ßh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒadd a scsi host with dma device”h]”hŒadd a scsi host with dma device”…”�”}”(hjçàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´KÐhjäàh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj<ßh²hh³jUßh´KÐubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjÿàjäjÿàjå‰jæ‰jç‰uh1jXh²hhj´Ýh³Nh´Nubjé)�”}”(hX�**Parameters** ``struct Scsi_Host *shost`` scsi host pointer to add ``struct device *dev`` a struct device of type scsi class ``struct device *dma_dev`` dma device for the host **Note** You rarely need to worry about this unless you're in a virtualised host environments, so use the simpler scsi_add_host() function instead. Return value: 0 on success / != 0 for error”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj áh]”hŒ Parameters”…”�”}”(hj áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjáubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´KÔhjáubj7)�”}”(hhh]”(j<)�”}”(hŒ5``struct Scsi_Host *shost`` scsi host pointer to add ”h]”(jB)�”}”(hŒ``struct Scsi_Host *shost``”h]”jH)�”}”(hj(áh]”hŒstruct Scsi_Host *shost”…”�”}”(hj*áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj&áubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´KÑhj"áubj^)�”}”(hhh]”hì)�”}”(hŒscsi host pointer to add”h]”hŒscsi host pointer to add”…”�”}”(hjAá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 device *dev`` a struct device of type scsi class ”h]”(jB)�”}”(hŒ``struct device *dev``”h]”jH)�”}”(hjaáh]”hŒstruct device *dev”…”�”}”(hjcáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj_áubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´KÒhj[áubj^)�”}”(hhh]”hì)�”}”(hŒ"a struct device of type scsi class”h]”hŒ"a struct device of type scsi class”…”�”}”(hjzáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jváh´KÒhjwáubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj[áubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jváh´KÒhjáubj<)�”}”(hŒ3``struct device *dma_dev`` dma device for the host ”h]”(jB)�”}”(hŒ``struct device *dma_dev``”h]”jH)�”}”(hjšáh]”hŒstruct device *dma_dev”…”�”}”(hjœáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj˜áubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´KÓhj”áubj^)�”}”(hhh]”hì)�”}”(hŒdma device for the host”h]”hŒdma device for the host”…”�”}”(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&]”uh1j6hjáubhì)�”}”(hŒ**Note**”h]”jó)�”}”(hjÕáh]”hŒNote”…”�”}”(hj×áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÓáubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´KÕhjáubhì)�”}”(hŒŠYou rarely need to worry about this unless you're in a virtualised host environments, so use the simpler scsi_add_host() function instead.”h]”hŒŒYou rarely need to worry about this unless you’re in a virtualised host environments, so use the simpler scsi_add_host() function instead.”…”�”}”(hjëáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´KÕhjáubj7)�”}”(hhh]”j<)�”}”(hŒ+Return value: 0 on success / != 0 for error”h]”(jB)�”}”(hŒ Return value:”h]”hŒ Return value:”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´KÙhjýáubj^)�”}”(hhh]”hì)�”}”(hŒ0 on success / != 0 for error”h]”hŒ0 on success / != 0 for error”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.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&]”uh1j6hjáubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj´Ýh²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_host_alloc (C function)”Œc.scsi_host_alloc”hNt”auh1jGhj´Ýh²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒWstruct Scsi_Host * scsi_host_alloc (const struct scsi_host_template *sht, int privsize)”h]”jd)�”}”(hŒUstruct Scsi_Host *scsi_host_alloc(const struct scsi_host_template *sht, int privsize)”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjTâh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjPâh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´MŒubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbâh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjPâh²hh³jaâh´MŒubh)�”}”(hhh]”j“)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hjsâh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjpâubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”juâŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j Œscsi_host_alloc”sbŒc.scsi_host_alloc”†”asbuh1hhjPâh²hh³jaâh´MŒubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”âh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjPâh²hh³jaâh´MŒubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj¢âh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjPâh²hh³jaâh´MŒubj�)�”}”(hŒscsi_host_alloc”h]”j“)�”}”(hj‘âh]”hŒscsi_host_alloc”…”�”}”(hj³âh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj¯âubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjPâh²hh³jaâh´MŒubjÊ)�”}”(hŒ4(const struct scsi_host_template *sht, int privsize)”h]”(jÐ)�”}”(hŒ$const struct scsi_host_template *sht”h]”(jj)�”}”(hj’Ph]”hŒconst”…”�”}”(hjÎâh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjÊâubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛâh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÊâubjj)�”}”(hjmh]”hŒstruct”…”�”}”(hjéâh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjÊâubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjöâh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÊâubh)�”}”(hhh]”j“)�”}”(hŒscsi_host_template”h]”hŒscsi_host_template”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjãubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j ãŒmodname”NŒ classname”Njôj÷)�”}”jú]”j�âŒc.scsi_host_alloc”†”asbuh1hhjÊâubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%ãh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÊâubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj3ãh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjÊâubj“)�”}”(hŒsht”h]”hŒsht”…”�”}”(hj@ãh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÊâubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjÆâubjÐ)�”}”(hŒ int privsize”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hjYãh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjUãubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjgãh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjUãubj“)�”}”(hŒprivsize”h]”hŒprivsize”…”�”}”(hjuãh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjUãubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjÆâubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjPâh²hh³jaâh´MŒubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjLâh²hh³jaâh´MŒubah}”(h]”jGâah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jaâh´MŒhjIâh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ®ister a scsi host adapter instance.”h]”hŒ®ister a scsi host adapter instance.”…”�”}”(hjŸãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´MŒhjœãh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjIâh²hh³jaâh´MŒubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj·ãjäj·ãjå‰jæ‰jç‰uh1jXh²hhj´Ýh³Nh´Nubjé)�”}”(hXa**Parameters** ``const struct scsi_host_template *sht`` pointer to scsi host template ``int privsize`` extra bytes to allocate for driver **Note** Allocate a new Scsi_Host and perform basic initialization. The host is not published to the scsi midlayer until scsi_add_host is called. Return value: Pointer to a new Scsi_Host”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjÁãh]”hŒ Parameters”…”�”}”(hjÃãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj¿ãubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´M�hj»ãubj7)�”}”(hhh]”(j<)�”}”(hŒG``const struct scsi_host_template *sht`` pointer to scsi host template ”h]”(jB)�”}”(hŒ(``const struct scsi_host_template *sht``”h]”jH)�”}”(hjàãh]”hŒ$const struct scsi_host_template *sht”…”�”}”(hjâãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjÞãubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´M�hjÚãubj^)�”}”(hhh]”hì)�”}”(hŒpointer to scsi host template”h]”hŒpointer to scsi host template”…”�”}”(hjùãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jõãh´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``int privsize`` extra bytes to allocate for driver ”h]”(jB)�”}”(hŒ``int privsize``”h]”jH)�”}”(hjäh]”hŒ int privsize”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjäubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´MŽhjäubj^)�”}”(hhh]”hì)�”}”(hŒ"extra bytes to allocate for driver”h]”hŒ"extra bytes to allocate for driver”…”�”}”(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×ãubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hj»ãubhì)�”}”(hŒ**Note**”h]”jó)�”}”(hjTäh]”hŒNote”…”�”}”(hjVäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjRäubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´M�hj»ãubjt)�”}”(hŒ‰Allocate a new Scsi_Host and perform basic initialization. The host is not published to the scsi midlayer until scsi_add_host is called. ”h]”hì)�”}”(hŒˆAllocate a new Scsi_Host and perform basic initialization. The host is not published to the scsi midlayer until scsi_add_host is called.”h]”hŒˆAllocate a new Scsi_Host and perform basic initialization. The host is not published to the scsi midlayer until scsi_add_host is called.”…”�”}”(hjnäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´M�hjjäubah}”(h]”h ]”h"]”h$]”h&]”uh1jsh³j|äh´M�hj»ãubj7)�”}”(hhh]”j<)�”}”(hŒ(Return value: Pointer to a new Scsi_Host”h]”(jB)�”}”(hŒ Return value:”h]”hŒ Return value:”…”�”}”(hjŠäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´M”hj†äubj^)�”}”(hhh]”hì)�”}”(hŒPointer to a new Scsi_Host”h]”hŒPointer to a new Scsi_Host”…”�”}”(hjœäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.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&]”uh1j6hj»ãubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj´Ýh²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_host_lookup (C function)”Œc.scsi_host_lookup”hNt”auh1jGhj´Ýh²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ:struct Scsi_Host * scsi_host_lookup (unsigned int hostnum)”h]”jd)�”}”(hŒ8struct Scsi_Host *scsi_host_lookup(unsigned int hostnum)”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjÝäh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjÙäh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´M?ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëäh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÙäh²hh³jêäh´M?ubh)�”}”(hhh]”j“)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hjüäh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjùäubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jþäŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j Œscsi_host_lookup”sbŒc.scsi_host_lookup”†”asbuh1hhjÙäh²hh³jêäh´M?ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÙäh²hh³jêäh´M?ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj+åh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjÙäh²hh³jêäh´M?ubj�)�”}”(hŒscsi_host_lookup”h]”j“)�”}”(hjåh]”hŒscsi_host_lookup”…”�”}”(hj<åh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj8åubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjÙäh²hh³jêäh´M?ubjÊ)�”}”(hŒ(unsigned int hostnum)”h]”jÐ)�”}”(hŒunsigned int hostnum”h]”(j’)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjWåh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjSåubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeåh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjSåubj’)�”}”(hŒint”h]”hŒint”…”�”}”(hjsåh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjSåubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�åh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjSåubj“)�”}”(hŒhostnum”h]”hŒhostnum”…”�”}”(hj�åh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjSåubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjOåubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjÙäh²hh³jêäh´M?ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjÕäh²hh³jêäh´M?ubah}”(h]”jÐäah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jêäh´M?hjÒäh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ)get a reference to a Scsi_Host by host no”h]”hŒ)get a reference to a Scsi_Host by host no”…”�”}”(hj¹åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´M?hj¶åh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjÒäh²hh³jêäh´M?ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjÑåjäjÑåjå‰jæ‰jç‰uh1jXh²hhj´Ýh³Nh´Nubjé)�”}”(hX:**Parameters** ``unsigned int hostnum`` host number to locate **Description** Return value: A pointer to located Scsi_Host or NULL. The caller must do a scsi_host_put() to drop the reference that scsi_host_get() took. The put_device() below dropped the reference from class_find_device().”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjÛåh]”hŒ Parameters”…”�”}”(hjÝåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÙåubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´MChjÕåubj7)�”}”(hhh]”j<)�”}”(hŒ/``unsigned int hostnum`` host number to locate ”h]”(jB)�”}”(hŒ``unsigned int hostnum``”h]”jH)�”}”(hjúåh]”hŒunsigned int hostnum”…”�”}”(hjüåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjøåubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´M@hjôåubj^)�”}”(hhh]”hì)�”}”(hŒhost number to locate”h]”hŒhost number to locate”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³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&]”uh1j6hjÕåubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hj5æh]”hŒ Description”…”�”}”(hj7æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj3æubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´MBhjÕåubj7)�”}”(hhh]”j<)�”}”(hŒÓReturn value: A pointer to located Scsi_Host or NULL. The caller must do a scsi_host_put() to drop the reference that scsi_host_get() took. The put_device() below dropped the reference from class_find_device().”h]”(jB)�”}”(hŒ Return value:”h]”hŒ Return value:”…”�”}”(hjRæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´MEhjNæubj^)�”}”(hhh]”(hì)�”}”(hŒ'A pointer to located Scsi_Host or NULL.”h]”hŒ'A pointer to located Scsi_Host or NULL.”…”�”}”(hjdæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´MBhjaæubhì)�”}”(hŒœThe caller must do a scsi_host_put() to drop the reference that scsi_host_get() took. The put_device() below dropped the reference from class_find_device().”h]”hŒœThe caller must do a scsi_host_put() to drop the reference that scsi_host_get() took. The put_device() below dropped the reference from class_find_device().”…”�”}”(hjsæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´MDhjaæubeh}”(h]”h ]”h"]”h$]”h&]”uh1j]hjNæubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j`æh´MEhjKæubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjÕåubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj´Ýh²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_host_get (C function)”Œc.scsi_host_get”hNt”auh1jGhj´Ýh²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ:struct Scsi_Host * scsi_host_get (struct Scsi_Host *shost)”h]”jd)�”}”(hŒ8struct Scsi_Host *scsi_host_get(struct Scsi_Host *shost)”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj´æh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj°æh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´MYubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂæh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj°æh²hh³jÁæh´MYubh)�”}”(hhh]”j“)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hjÓæh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÐæubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jÕæŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j Œ scsi_host_get”sbŒc.scsi_host_get”†”asbuh1hhj°æh²hh³jÁæh´MYubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjôæh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj°æh²hh³jÁæh´MYubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj°æh²hh³jÁæh´MYubj�)�”}”(hŒ scsi_host_get”h]”j“)�”}”(hjñæh]”hŒ scsi_host_get”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjçubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj°æh²hh³jÁæh´MYubjÊ)�”}”(hŒ(struct Scsi_Host *shost)”h]”jÐ)�”}”(hŒstruct Scsi_Host *shost”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj.çh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj*çubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;çh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj*çubh)�”}”(hhh]”j“)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hjLçh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjIçubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jNçŒmodname”NŒ classname”Njôj÷)�”}”jú]”jïæŒc.scsi_host_get”†”asbuh1hhj*çubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjjçh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj*çubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjxçh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj*çubj“)�”}”(hŒshost”h]”hŒshost”…”�”}”(hj…çh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj*ç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´MYubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj¬æh²hh³jÁæh´MYubah}”(h]”j§æah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jÁæh´MYhj©æh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒinc a Scsi_Host ref count”h]”hŒinc a Scsi_Host ref count”…”�”}”(hj¯çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´MYhj¬çh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj©æh²hh³jÁæh´MYubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjÇçjäjÇçjå‰jæ‰jç‰uh1jXh²hhj´Ýh³Nh´Nubjé)�”}”(hŒJ**Parameters** ``struct Scsi_Host *shost`` Pointer to Scsi_Host to inc.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjÑçh]”hŒ Parameters”…”�”}”(hjÓçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÏçubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´M]hjËçubj7)�”}”(hhh]”j<)�”}”(hŒ8``struct Scsi_Host *shost`` Pointer to Scsi_Host to inc.”h]”(jB)�”}”(hŒ``struct Scsi_Host *shost``”h]”jH)�”}”(hjðçh]”hŒstruct Scsi_Host *shost”…”�”}”(hjòçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjîçubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´M_hjêçubj^)�”}”(hhh]”hì)�”}”(hŒPointer to Scsi_Host to inc.”h]”hŒPointer to Scsi_Host to inc.”…”�”}”(hj èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´MZhjè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&]”uh1j6hjËçubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj´Ýh²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_host_busy (C function)”Œc.scsi_host_busy”hNt”auh1jGhj´Ýh²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ,int scsi_host_busy (struct Scsi_Host *shost)”h]”jd)�”}”(hŒ+int scsi_host_busy(struct Scsi_Host *shost)”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hjJèh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjFèh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´Mqubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYèh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjFèh²hh³jXèh´Mqubj�)�”}”(hŒscsi_host_busy”h]”j“)�”}”(hŒscsi_host_busy”h]”hŒscsi_host_busy”…”�”}”(hjkèh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjgèubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjFèh²hh³jXèh´MqubjÊ)�”}”(hŒ(struct Scsi_Host *shost)”h]”jÐ)�”}”(hŒstruct Scsi_Host *shost”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj‡èh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjƒèubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”èh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjƒèubh)�”}”(hhh]”j“)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hj¥èh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj¢èubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j§èŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jmèsbŒc.scsi_host_busy”†”asbuh1hhjƒèubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅèh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjƒèubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjÓèh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjƒèubj“)�”}”(hŒshost”h]”hŒshost”…”�”}”(hjàèh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjƒèubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjèubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjFèh²hh³jXèh´Mqubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjBèh²hh³jXèh´Mqubah}”(h]”j=èah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jXèh´Mqhj?èh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ&Return the count of in-flight commands”h]”hŒ&Return the count of in-flight commands”…”�”}”(hj éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´Mqhjéh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj?èh²hh³jXèh´Mqubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj"éjäj"éjå‰jæ‰jç‰uh1jXh²hhj´Ýh³Nh´Nubjé)�”}”(hŒB**Parameters** ``struct Scsi_Host *shost`` Pointer to Scsi_Host”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj,éh]”hŒ Parameters”…”�”}”(hj.éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj*éubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´Muhj&éubj7)�”}”(hhh]”j<)�”}”(hŒ0``struct Scsi_Host *shost`` Pointer to Scsi_Host”h]”(jB)�”}”(hŒ``struct Scsi_Host *shost``”h]”jH)�”}”(hjKéh]”hŒstruct Scsi_Host *shost”…”�”}”(hjMéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjIéubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´MwhjEéubj^)�”}”(hhh]”hì)�”}”(hŒPointer to Scsi_Host”h]”hŒPointer to Scsi_Host”…”�”}”(hjdéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´Mrhjaéubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjEéubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j`éh´MwhjBéubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj&éubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj´Ýh²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_host_put (C function)”Œc.scsi_host_put”hNt”auh1jGhj´Ýh²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ,void scsi_host_put (struct Scsi_Host *shost)”h]”jd)�”}”(hŒ+void scsi_host_put(struct Scsi_Host *shost)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¥éh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj¡éh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´Mubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´éh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj¡éh²hh³j³éh´Mubj�)�”}”(hŒ scsi_host_put”h]”j“)�”}”(hŒ scsi_host_put”h]”hŒ scsi_host_put”…”�”}”(hjÆéh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÂéubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj¡éh²hh³j³éh´MubjÊ)�”}”(hŒ(struct Scsi_Host *shost)”h]”jÐ)�”}”(hŒstruct Scsi_Host *shost”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjâéh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjÞéubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïéh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÞéubh)�”}”(hhh]”j“)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjýéubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jêŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jÈésbŒc.scsi_host_put”†”asbuh1hhjÞéubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj êh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÞéubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj.êh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjÞéubj“)�”}”(hŒshost”h]”hŒshost”…”�”}”(hj;êh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÞé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²ˆuh1jcj³j´hj�éh²hh³j³éh´Mubah}”(h]”j˜éah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j³éh´Mhjšéh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒdec a Scsi_Host ref count”h]”hŒdec a Scsi_Host ref count”…”�”}”(hjeêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´Mhjbêh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjšéh²hh³j³éh´Mubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj}êjäj}êjå‰jæ‰jç‰uh1jXh²hhj´Ýh³Nh´Nubjé)�”}”(hŒJ**Parameters** ``struct Scsi_Host *shost`` Pointer to Scsi_Host to dec.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj‡êh]”hŒ Parameters”…”�”}”(hj‰êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj…êubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´Mƒhj�êubj7)�”}”(hhh]”j<)�”}”(hŒ8``struct Scsi_Host *shost`` Pointer to Scsi_Host to dec.”h]”(jB)�”}”(hŒ``struct Scsi_Host *shost``”h]”jH)�”}”(hj¦êh]”hŒstruct Scsi_Host *shost”…”�”}”(hj¨êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj¤êubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´M…hj êubj^)�”}”(hhh]”hì)�”}”(hŒPointer to Scsi_Host to dec.”h]”hŒPointer to Scsi_Host to dec.”…”�”}”(hj¿êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.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&]”uh1j6hj�êubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj´Ýh²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_queue_work (C function)”Œc.scsi_queue_work”hNt”auh1jGhj´Ýh²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒGint scsi_queue_work (struct Scsi_Host *shost, struct work_struct *work)”h]”jd)�”}”(hŒFint scsi_queue_work(struct Scsi_Host *shost, struct work_struct *work)”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjüêh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´Mšubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjüêh²hh³jëh´Mšubj�)�”}”(hŒscsi_queue_work”h]”j“)�”}”(hŒscsi_queue_work”h]”hŒscsi_queue_work”…”�”}”(hj!ëh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjëubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjüêh²hh³jëh´MšubjÊ)�”}”(hŒ3(struct Scsi_Host *shost, struct work_struct *work)”h]”(jÐ)�”}”(hŒstruct Scsi_Host *shost”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj=ëh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj9ëubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJëh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj9ëubh)�”}”(hhh]”j“)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hj[ëh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjXëubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j]ëŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j j#ësbŒc.scsi_queue_work”†”asbuh1hhj9ëubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{ëh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj9ëubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj‰ëh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj9ëubj“)�”}”(hŒshost”h]”hŒshost”…”�”}”(hj–ëh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj9ëubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj5ëubjÐ)�”}”(hŒstruct work_struct *work”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj¯ëh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj«ëubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼ëh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj«ëubh)�”}”(hhh]”j“)�”}”(hŒ work_struct”h]”hŒ work_struct”…”�”}”(hjÍëh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÊëubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jÏëŒmodname”NŒ classname”Njôj÷)�”}”jú]”jwëŒc.scsi_queue_work”†”asbuh1hhj«ëubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëëh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj«ëubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjùëh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj«ëubj“)�”}”(hŒwork”h]”hŒwork”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj«ëubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj5ëubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjüêh²hh³jëh´Mšubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjøêh²hh³jëh´Mšubah}”(h]”jóêah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jëh´Mšhjõêh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ&Queue work to the Scsi_Host workqueue.”h]”hŒ&Queue work to the Scsi_Host workqueue.”…”�”}”(hj0ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´Mšhj-ìh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjõêh²hh³jëh´Mšubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjHìjäjHìjå‰jæ‰jç‰uh1jXh²hhj´Ýh³Nh´Nubjé)�”}”(hX **Parameters** ``struct Scsi_Host *shost`` Pointer to Scsi_Host. ``struct work_struct *work`` Work to queue for execution. **Description** Return value: 1 - work queued for execution 0 - work is already queued -EINVAL - work queue doesn't exist”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjRìh]”hŒ Parameters”…”�”}”(hjTìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjPìubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´MžhjLìubj7)�”}”(hhh]”(j<)�”}”(hŒ2``struct Scsi_Host *shost`` Pointer to Scsi_Host. ”h]”(jB)�”}”(hŒ``struct Scsi_Host *shost``”h]”jH)�”}”(hjqìh]”hŒstruct Scsi_Host *shost”…”�”}”(hjsìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjoìubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´M›hjkìubj^)�”}”(hhh]”hì)�”}”(hŒPointer to Scsi_Host.”h]”hŒPointer to Scsi_Host.”…”�”}”(hjŠìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j†ìh´M›hj‡ìubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjkìubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j†ìh´M›hjhìubj<)�”}”(hŒ:``struct work_struct *work`` Work to queue for execution. ”h]”(jB)�”}”(hŒ``struct work_struct *work``”h]”jH)�”}”(hjªìh]”hŒstruct work_struct *work”…”�”}”(hj¬ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj¨ìubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´Mœhj¤ìubj^)�”}”(hhh]”hì)�”}”(hŒWork to queue for execution.”h]”hŒWork to queue for execution.”…”�”}”(hjÃìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¿ìh´MœhjÀìubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj¤ìubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j¿ìh´Mœhjhìubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjLìubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjåìh]”hŒ Description”…”�”}”(hjçìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjãìubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´MžhjLìubj7)�”}”(hhh]”j<)�”}”(hŒiReturn value: 1 - work queued for execution 0 - work is already queued -EINVAL - work queue doesn't exist”h]”(jB)�”}”(hŒ Return value:”h]”hŒ Return value:”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´MŸhjþìubj^)�”}”(hhh]”hì)�”}”(hŒ[1 - work queued for execution 0 - work is already queued -EINVAL - work queue doesn't exist”h]”hŒ]1 - work queued for execution 0 - work is already queued -EINVAL - work queue doesn’t exist”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.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&]”uh1j6hjLìubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj´Ýh²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_flush_work (C function)”Œc.scsi_flush_work”hNt”auh1jGhj´Ýh²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ.void scsi_flush_work (struct Scsi_Host *shost)”h]”jd)�”}”(hŒ-void scsi_flush_work(struct Scsi_Host *shost)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjUíh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjQíh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´M³ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdíh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjQíh²hh³jcíh´M³ubj�)�”}”(hŒscsi_flush_work”h]”j“)�”}”(hŒscsi_flush_work”h]”hŒscsi_flush_work”…”�”}”(hjvíh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjríubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjQíh²hh³jcíh´M³ubjÊ)�”}”(hŒ(struct Scsi_Host *shost)”h]”jÐ)�”}”(hŒstruct Scsi_Host *shost”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj’íh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjŽíubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸíh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjŽíubh)�”}”(hhh]”j“)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hj°íh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj­íubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j²íŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jxísbŒc.scsi_flush_work”†”asbuh1hhjŽíubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐíh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjŽíubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjÞíh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjŽíubj“)�”}”(hŒshost”h]”hŒshost”…”�”}”(hjëíh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjŽíubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjŠíubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjQíh²hh³jcíh´M³ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjMíh²hh³jcíh´M³ubah}”(h]”jHíah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jcíh´M³hjJíh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒFlush a Scsi_Host's workqueue.”h]”hŒ Flush a Scsi_Host’s workqueue.”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´M³hjîh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjJíh²hh³jcíh´M³ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj-îjäj-îjå‰jæ‰jç‰uh1jXh²hhj´Ýh³Nh´Nubjé)�”}”(hŒC**Parameters** ``struct Scsi_Host *shost`` Pointer to Scsi_Host.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj7îh]”hŒ Parameters”…”�”}”(hj9îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj5îubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´M·hj1îubj7)�”}”(hhh]”j<)�”}”(hŒ1``struct Scsi_Host *shost`` Pointer to Scsi_Host.”h]”(jB)�”}”(hŒ``struct Scsi_Host *shost``”h]”jH)�”}”(hjVîh]”hŒstruct Scsi_Host *shost”…”�”}”(hjXîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjTîubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´M¹hjPîubj^)�”}”(hhh]”hì)�”}”(hŒPointer to Scsi_Host.”h]”hŒPointer to Scsi_Host.”…”�”}”(hjoîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´M´hjlîubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjPîubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jkîh´M¹hjMîubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj1îubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj´Ýh²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ,scsi_host_complete_all_commands (C function)”Œ!c.scsi_host_complete_all_commands”hNt”auh1jGhj´Ýh²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ\void scsi_host_complete_all_commands (struct Scsi_Host *shost, enum scsi_host_status status)”h]”jd)�”}”(hŒ[void scsi_host_complete_all_commands(struct Scsi_Host *shost, enum scsi_host_status status)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj°îh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj¬îh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´MÑubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿îh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj¬îh²hh³j¾îh´MÑubj�)�”}”(hŒscsi_host_complete_all_commands”h]”j“)�”}”(hŒscsi_host_complete_all_commands”h]”hŒscsi_host_complete_all_commands”…”�”}”(hjÑîh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÍîubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj¬îh²hh³j¾îh´MÑubjÊ)�”}”(hŒ7(struct Scsi_Host *shost, enum scsi_host_status status)”h]”(jÐ)�”}”(hŒstruct Scsi_Host *shost”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjíîh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjéîubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjúîh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjéîubh)�”}”(hhh]”j“)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hj ïh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjïubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j ïŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jÓîsbŒ!c.scsi_host_complete_all_commands”†”asbuh1hhjéîubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+ïh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjéîubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj9ïh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjéîubj“)�”}”(hŒshost”h]”hŒshost”…”�”}”(hjFïh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjéîubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjåîubjÐ)�”}”(hŒenum scsi_host_status status”h]”(jj)�”}”(hjf9h]”hŒenum”…”�”}”(hj_ïh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj[ïubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjlïh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj[ïubh)�”}”(hhh]”j“)�”}”(hŒscsi_host_status”h]”hŒscsi_host_status”…”�”}”(hj}ïh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjzïubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jïŒmodname”NŒ classname”Njôj÷)�”}”jú]”j'ïŒ!c.scsi_host_complete_all_commands”†”asbuh1hhj[ïubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›ïh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj[ïubj“)�”}”(hŒstatus”h]”hŒstatus”…”�”}”(hj©ïh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj[ï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²ˆuh1jcj³j´hj¨îh²hh³j¾îh´MÑubah}”(h]”j£îah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j¾îh´MÑhj¥îh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒTerminate all running commands”h]”hŒTerminate all running commands”…”�”}”(hjÓïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´MÑhjÐïh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj¥îh²hh³j¾îh´MÑubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjëïjäjëïjå‰jæ‰jç‰uh1jXh²•hhj´Ýh³Nh´Nubjé)�”}”(hX�**Parameters** ``struct Scsi_Host *shost`` Scsi Host on which commands should be terminated ``enum scsi_host_status status`` Status to be set for the terminated commands **Description** There is no protection against modification of the number of outstanding commands. It is the responsibility of the caller to ensure that concurrent I/O submission and/or completion is stopped when calling this function.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjõïh]”hŒ Parameters”…”�”}”(hj÷ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjóïubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´MÕhjïïubj7)�”}”(hhh]”(j<)�”}”(hŒM``struct Scsi_Host *shost`` Scsi Host on which commands should be terminated ”h]”(jB)�”}”(hŒ``struct Scsi_Host *shost``”h]”jH)�”}”(hjðh]”hŒstruct Scsi_Host *shost”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjðubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´MÒhjðubj^)�”}”(hhh]”hì)�”}”(hŒ0Scsi Host on which commands should be terminated”h]”hŒ0Scsi Host on which commands should be terminated”…”�”}”(hj-ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j)ðh´MÒhj*ðubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjðubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j)ðh´MÒhj ðubj<)�”}”(hŒN``enum scsi_host_status status`` Status to be set for the terminated commands ”h]”(jB)�”}”(hŒ ``enum scsi_host_status status``”h]”jH)�”}”(hjMðh]”hŒenum scsi_host_status status”…”�”}”(hjOðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjKðubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´MÓhjGðubj^)�”}”(hhh]”hì)�”}”(hŒ,Status to be set for the terminated commands”h]”hŒ,Status to be set for the terminated commands”…”�”}”(hjfðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jbðh´MÓhjcðubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjGðubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jbðh´MÓhj ðubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjïïubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjˆðh]”hŒ Description”…”�”}”(hjŠðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj†ðubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´MÕhjïïubhì)�”}”(hŒÛThere is no protection against modification of the number of outstanding commands. It is the responsibility of the caller to ensure that concurrent I/O submission and/or completion is stopped when calling this function.”h]”hŒÛThere is no protection against modification of the number of outstanding commands. It is the responsibility of the caller to ensure that concurrent I/O submission and/or completion is stopped when calling this function.”…”�”}”(hjžðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´MÔhjïïubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj´Ýh²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ scsi_host_busy_iter (C function)”Œc.scsi_host_busy_iter”hNt”auh1jGhj´Ýh²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒfvoid scsi_host_busy_iter (struct Scsi_Host *shost, bool (*fn)(struct scsi_cmnd *, void *), void *priv)”h]”jd)�”}”(hŒcvoid scsi_host_busy_iter(struct Scsi_Host *shost, bool (*fn)(struct scsi_cmnd*, void*), void *priv)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÍðh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjÉðh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´Mðubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜðh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÉðh²hh³jÛðh´Mðubj�)�”}”(hŒscsi_host_busy_iter”h]”j“)�”}”(hŒscsi_host_busy_iter”h]”hŒscsi_host_busy_iter”…”�”}”(hjîðh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjêðubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjÉðh²hh³jÛðh´MðubjÊ)�”}”(hŒK(struct Scsi_Host *shost, bool (*fn)(struct scsi_cmnd*, void*), void *priv)”h]”(jÐ)�”}”(hŒstruct Scsi_Host *shost”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj ñh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjñubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjñubh)�”}”(hhh]”j“)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hj(ñh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj%ñubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j*ñŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jððsbŒc.scsi_host_busy_iter”†”asbuh1hhjñubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHñh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjñubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjVñh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjñubj“)�”}”(hŒshost”h]”hŒshost”…”�”}”(hjcñh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjñubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjñubjÐ)�”}”(hŒ$bool (*fn)(struct scsi_cmnd*, void*)”h]”(j’)�”}”(hj•h]”hŒbool”…”�”}”(hj|ñh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjxñubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰ñh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjxñubj% )�”}”(hjAh]”hŒ(”…”�”}”(hj—ñh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjxñubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj¤ñh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjxñubj“)�”}”(hŒfn”h]”hŒfn”…”�”}”(hj±ñh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjxñubj% )�”}”(hjjh]”hŒ)”…”�”}”(hj¿ñh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjxñubj% )�”}”(hjAh]”hŒ(”…”�”}”(hjÌñh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjxñubjj)�”}”(hjmh]”hŒstruct”…”�”}”(hjÙñh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjxñubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæñh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjxñubh)�”}”(hhh]”j“)�”}”(hŒ scsi_cmnd”h]”hŒ scsi_cmnd”…”�”}”(hj÷ñh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjôñubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jùñŒmodname”NŒ classname”Njôj÷)�”}”jú]”jDñŒc.scsi_host_busy_iter”†”asbuh1hhjxñubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjxñubj% )�”}”(hjÎh]”hŒ,”…”�”}”(hj"òh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjxñubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/òh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjxñubj’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj=òh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjxñubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjKòh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjxñubj% )�”}”(hjjh]”hŒ)”…”�”}”(hjXòh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjxñubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjñubjÐ)�”}”(hŒ void *priv”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjpòh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjlòubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~òh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjlòubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjŒòh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjlòubj“)�”}”(hŒpriv”h]”hŒpriv”…”�”}”(hj™òh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjlò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²ˆuh1jcj³j´hjÅðh²hh³jÛðh´Mðubah}”(h]”jÀðah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jÛðh´MðhjÂðh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒIterate over all busy commands”h]”hŒIterate over all busy commands”…”�”}”(hjÃòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´MðhjÀòh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjÂðh²hh³jÛðh´Mðubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjÛòjäjÛòjå‰jæ‰jç‰uh1jXh²hhj´Ýh³Nh´Nubjé)�”}”(hX:**Parameters** ``struct Scsi_Host *shost`` Pointer to Scsi_Host. ``bool (*fn)(struct scsi_cmnd *, void *)`` Function to call on each busy command ``void *priv`` Data pointer passed to **fn** **Description** If locking against concurrent command completions is required ithas to be provided by the caller”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjåòh]”hŒ Parameters”…”�”}”(hjçòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjãòubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´Môhjßòubj7)�”}”(hhh]”(j<)�”}”(hŒ2``struct Scsi_Host *shost`` Pointer to Scsi_Host. ”h]”(jB)�”}”(hŒ``struct Scsi_Host *shost``”h]”jH)�”}”(hjóh]”hŒstruct Scsi_Host *shost”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjóubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´Mñhjþòubj^)�”}”(hhh]”hì)�”}”(hŒPointer to Scsi_Host.”h]”hŒPointer to Scsi_Host.”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jóh´Mñhjóubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjþòubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jóh´Mñhjûòubj<)�”}”(hŒQ``bool (*fn)(struct scsi_cmnd *, void *)`` Function to call on each busy command ”h]”(jB)�”}”(hŒ*``bool (*fn)(struct scsi_cmnd *, void *)``”h]”jH)�”}”(hj=óh]”hŒ&bool (*fn)(struct scsi_cmnd *, void *)”…”�”}”(hj?óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj;óubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´Mòhj7óubj^)�”}”(hhh]”hì)�”}”(hŒ%Function to call on each busy command”h]”hŒ%Function to call on each busy command”…”�”}”(hjVóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jRóh´MòhjSóubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj7óubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jRóh´Mòhjûòubj<)�”}”(hŒ-``void *priv`` Data pointer passed to **fn** ”h]”(jB)�”}”(hŒ``void *priv``”h]”jH)�”}”(hjvóh]”hŒ void *priv”…”�”}”(hjxóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjtóubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´Móhjpóubj^)�”}”(hhh]”hì)�”}”(hŒData pointer passed to **fn**”h]”(hŒData pointer passed to ”…”�”}”(hj�óh²hh³Nh´Nubjó)�”}”(hŒ**fn**”h]”hŒfn”…”�”}”(hj—óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj�óubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j‹óh´MóhjŒóubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjpóubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j‹óh´Móhjûòubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjßòubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hj¿óh]”hŒ Description”…”�”}”(hjÁóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj½óubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´Mõhjßòubhì)�”}”(hŒ`If locking against concurrent command completions is required ithas to be provided by the caller”h]”hŒ`If locking against concurrent command completions is required ithas to be provided by the caller”…”�”}”(hjÕóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´Môhjßòubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj´Ýh²hh³Nh´Nubeh}”(h]”Œdrivers-scsi-hosts-c”ah ]”h"]”Œdrivers/scsi/hosts.c”ah$]”h&]”uh1hµhj%h²hh³hÊh´KÔubh¶)�”}”(hhh]”(h»)�”}”(hŒdrivers/scsi/scsi_common.c”h]”hŒdrivers/scsi/scsi_common.c”…”�”}”(hjöóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjóóh²hh³hÊh´KÜubhì)�”}”(hŒgeneral support functions”h]”hŒgeneral support functions”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KÞhjóóh²hubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_device_type (C function)”Œc.scsi_device_type”hNt”auh1jGhjóóh²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ-const char * scsi_device_type (unsigned type)”h]”jd)�”}”(hŒ+const char *scsi_device_type(unsigned type)”h]”(jj)�”}”(hj’Ph]”hŒconst”…”�”}”(hj+ôh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj'ôh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´K5ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9ôh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj'ôh²hh³j8ôh´K5ubj’)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjGôh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj'ôh²hh³j8ôh´K5ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUôh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj'ôh²hh³j8ôh´K5ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjcôh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj'ôh²hh³j8ôh´K5ubj�)�”}”(hŒscsi_device_type”h]”j“)�”}”(hŒscsi_device_type”h]”hŒscsi_device_type”…”�”}”(hjtôh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjpôubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj'ôh²hh³j8ôh´K5ubjÊ)�”}”(hŒ(unsigned type)”h]”jÐ)�”}”(hŒ unsigned type”h]”(j’)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj�ôh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjŒôubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjžôh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjŒôubj“)�”}”(hŒtype”h]”hŒtype”…”�”}”(hj¬ôh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjŒôubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjˆôubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhj'ôh²hh³j8ôh´K5ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj#ôh²hh³j8ôh´K5ubah}”(h]”jôah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j8ôh´K5hj ôh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ-Return 17-char string indicating device type.”h]”hŒ-Return 17-char string indicating device type.”…”�”}”(hjÖôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´K5hjÓôh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj ôh²hh³j8ôh´K5ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjîôjäjîôjå‰jæ‰jç‰uh1jXh²hhjóóh³Nh´Nubjé)�”}”(hŒ:**Parameters** ``unsigned type`` type number to look up”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjøôh]”hŒ Parameters”…”�”}”(hjúôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjöôubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´K9hjòôubj7)�”}”(hhh]”j<)�”}”(hŒ(``unsigned type`` type number to look up”h]”(jB)�”}”(hŒ``unsigned type``”h]”jH)�”}”(hjõh]”hŒ unsigned type”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjõubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´K;hjõubj^)�”}”(hhh]”hì)�”}”(hŒtype number to look up”h]”hŒtype number to look up”…”�”}”(hj0õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´K6hj-õ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&]”uh1j6hjòôubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjóóh²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsilun_to_int (C function)”Œc.scsilun_to_int”hNt”auh1jGhjóóh²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ-u64 scsilun_to_int (struct scsi_lun *scsilun)”h]”jd)�”}”(hŒ,u64 scsilun_to_int(struct scsi_lun *scsilun)”h]”(h)�”}”(hhh]”j“)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjtõh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjqõubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jvõŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j Œscsilun_to_int”sbŒc.scsilun_to_int”†”asbuh1hhjmõh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´Koubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–õh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjmõh²hh³j•õh´Koubj�)�”}”(hŒscsilun_to_int”h]”j“)�”}”(hj’õh]”hŒscsilun_to_int”…”�”}”(hj¨õh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj¤õubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjmõh²hh³j•õh´KoubjÊ)�”}”(hŒ(struct scsi_lun *scsilun)”h]”jÐ)�”}”(hŒstruct scsi_lun *scsilun”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjÃõh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj¿õubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐõh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj¿õubh)�”}”(hhh]”j“)�”}”(hŒscsi_lun”h]”hŒscsi_lun”…”�”}”(hjáõh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÞõubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jãõŒmodname”NŒ classname”Njôj÷)�”}”jú]”j�õŒc.scsilun_to_int”†”asbuh1hhj¿õubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿõh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj¿õubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj öh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj¿õubj“)�”}”(hŒscsilun”h]”hŒscsilun”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj¿õubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj»õubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjmõh²hh³j•õh´Koubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjiõh²hh³j•õh´Koubah}”(h]”jdõah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j•õh´Kohjfõh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒconvert a scsi_lun to an int”h]”hŒconvert a scsi_lun to an int”…”�”}”(hjDöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´KohjAöh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjfõh²hh³j•õh´Koubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj\öjäj\öjå‰jæ‰jç‰uh1jXh²hhjóóh³Nh´Nubjé)�”}”(hX½**Parameters** ``struct scsi_lun *scsilun`` struct scsi_lun to be converted. **Description** Convert **scsilun** from a struct scsi_lun to a four-byte host byte-ordered integer, and return the result. The caller must check for truncation before using this function. **Notes** For a description of the LUN format, post SCSI-3 see the SCSI Architecture Model, for SCSI-3 see the SCSI Controller Commands. Given a struct scsi_lun of: d2 04 0b 03 00 00 00 00, this function returns the integer: 0x0b03d204 This encoding will return a standard integer LUN for LUNs smaller than 256, which typically use a single level LUN structure with addressing method 0.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjföh]”hŒ Parameters”…”�”}”(hjhöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjdöubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´Kshj`öubj7)�”}”(hhh]”j<)�”}”(hŒ>``struct scsi_lun *scsilun`` struct scsi_lun to be converted. ”h]”(jB)�”}”(hŒ``struct scsi_lun *scsilun``”h]”jH)�”}”(hj…öh]”hŒstruct scsi_lun *scsilun”…”�”}”(hj‡öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjƒöubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´Kphjöubj^)�”}”(hhh]”hì)�”}”(hŒ struct scsi_lun to be converted.”h]”hŒ struct scsi_lun to be converted.”…”�”}”(hjžö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|öubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj`öubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjÀöh]”hŒ Description”…”�”}”(hjÂöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj¾öubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´Krhj`öubjt)�”}”(hŒ­Convert **scsilun** from a struct scsi_lun to a four-byte host byte-ordered integer, and return the result. The caller must check for truncation before using this function. ”h]”hì)�”}”(hŒ¬Convert **scsilun** from a struct scsi_lun to a four-byte host byte-ordered integer, and return the result. The caller must check for truncation before using this function.”h]”(hŒConvert ”…”�”}”(hjÚöh²hh³Nh´Nubjó)�”}”(hŒ **scsilun**”h]”hŒscsilun”…”�”}”(hjâöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÚöubhŒ™ from a struct scsi_lun to a four-byte host byte-ordered integer, and return the result. The caller must check for truncation before using this function.”…”�”}”(hjÚöh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´KrhjÖöubah}”(h]”h ]”h"]”h$]”h&]”uh1jsh³júöh´Krhj`öubhì)�”}”(hŒ **Notes**”h]”jó)�”}”(hj÷h]”hŒNotes”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´Kvhj`öubjt)�”}”(hXzFor a description of the LUN format, post SCSI-3 see the SCSI Architecture Model, for SCSI-3 see the SCSI Controller Commands. Given a struct scsi_lun of: d2 04 0b 03 00 00 00 00, this function returns the integer: 0x0b03d204 This encoding will return a standard integer LUN for LUNs smaller than 256, which typically use a single level LUN structure with addressing method 0.”h]”(hì)�”}”(hŒ~For a description of the LUN format, post SCSI-3 see the SCSI Architecture Model, for SCSI-3 see the SCSI Controller Commands.”h]”hŒ~For a description of the LUN format, post SCSI-3 see the SCSI Architecture Model, for SCSI-3 see the SCSI Controller Commands.”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´Kwhj÷ubhì)�”}”(hŒbGiven a struct scsi_lun of: d2 04 0b 03 00 00 00 00, this function returns the integer: 0x0b03d204”h]”hŒbGiven a struct scsi_lun of: d2 04 0b 03 00 00 00 00, this function returns the integer: 0x0b03d204”…”�”}”(hj,÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´Kzhj÷ubhì)�”}”(hŒ–This encoding will return a standard integer LUN for LUNs smaller than 256, which typically use a single level LUN structure with addressing method 0.”h]”hŒ–This encoding will return a standard integer LUN for LUNs smaller than 256, which typically use a single level LUN structure with addressing method 0.”…”�”}”(hj;÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´K}hj÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jsh³j+÷h´Kwhj`öubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjóóh²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒint_to_scsilun (C function)”Œc.int_to_scsilun”hNt”auh1jGhjóóh²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ7void int_to_scsilun (u64 lun, struct scsi_lun *scsilun)”h]”jd)�”}”(hŒ6void int_to_scsilun(u64 lun, struct scsi_lun *scsilun)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjp÷h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjl÷h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´K�ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjl÷h²hh³j~÷h´K�ubj�)�”}”(hŒint_to_scsilun”h]”j“)�”}”(hŒint_to_scsilun”h]”hŒint_to_scsilun”…”�”}”(hj‘÷h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj�÷ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjl÷h²hh³j~÷h´K�ubjÊ)�”}”(hŒ#(u64 lun, struct scsi_lun *scsilun)”h]”(jÐ)�”}”(hŒu64 lun”h]”(h)�”}”(hhh]”j“)�”}”(hŒu64”h]”hŒu64”…”�”}”(hj°÷h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj­÷ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j²÷Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j j“÷sbŒc.int_to_scsilun”†”asbuh1hhj©÷ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐ÷h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj©÷ubj“)�”}”(hŒlun”h]”hŒlun”…”�”}”(hjÞ÷h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj©÷ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj¥÷ubjÐ)�”}”(hŒstruct scsi_lun *scsilun”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj÷÷h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjó÷ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjó÷ubh)�”}”(hhh]”j“)�”}”(hŒscsi_lun”h]”hŒscsi_lun”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjøubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jøŒmodname”NŒ classname”Njôj÷)�”}”jú]”jÌ÷Œc.int_to_scsilun”†”asbuh1hhjó÷ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3øh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjó÷ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjAøh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjó÷ubj“)�”}”(hŒscsilun”h]”hŒscsilun”…”�”}”(hjNøh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjó÷ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj¥÷ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjl÷h²hh³j~÷h´K�ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjh÷h²hh³j~÷h´K�ubah}”(h]”jc÷ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j~÷h´K�hje÷h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒreverts an int into a scsi_lun”h]”hŒreverts an int into a scsi_lun”…”�”}”(hjxøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´K�hjuøh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhje÷h²hh³j~÷h´K�ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj�øjäj�øjå‰jæ‰jç‰uh1jXh²hhjóóh³Nh´Nubjé)�”}”(hX™**Parameters** ``u64 lun`` integer to be reverted ``struct scsi_lun *scsilun`` struct scsi_lun to be set. **Description** Reverts the functionality of the scsilun_to_int, which packed an 8-byte lun value into an int. This routine unpacks the int back into the lun value. **Notes** Given an integer : 0x0b03d204, this function returns a struct scsi_lun of: d2 04 0b 03 00 00 00 00”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjšøh]”hŒ Parameters”…”�”}”(hjœøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj˜øubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´K”hj”øubj7)�”}”(hhh]”(j<)�”}”(hŒ#``u64 lun`` integer to be reverted ”h]”(jB)�”}”(hŒ ``u64 lun``”h]”jH)�”}”(hj¹øh]”hŒu64 lun”…”�”}”(hj»øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj·øubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´K‘hj³øubj^)�”}”(hhh]”hì)�”}”(hŒinteger to be reverted”h]”hŒinteger to be reverted”…”�”}”(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Œ8``struct scsi_lun *scsilun`` struct scsi_lun to be set. ”h]”(jB)�”}”(hŒ``struct scsi_lun *scsilun``”h]”jH)�”}”(hjòøh]”hŒstruct scsi_lun *scsilun”…”�”}”(hjôøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjðøubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´K’hjìøubj^)�”}”(hhh]”hì)�”}”(hŒstruct scsi_lun to be set.”h]”hŒstruct scsi_lun to be set.”…”�”}”(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&]”uh1j6hj”øubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hj-ùh]”hŒ Description”…”�”}”(hj/ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj+ùubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´K”hj”øubjt)�”}”(hŒ•Reverts the functionality of the scsilun_to_int, which packed an 8-byte lun value into an int. This routine unpacks the int back into the lun value. ”h]”hì)�”}”(hŒ”Reverts the functionality of the scsilun_to_int, which packed an 8-byte lun value into an int. This routine unpacks the int back into the lun value.”h]”hŒ”Reverts the functionality of the scsilun_to_int, which packed an 8-byte lun value into an int. This routine unpacks the int back into the lun value.”…”�”}”(hjGùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´K”hjCùubah}”(h]”h ]”h"]”h$]”h&]”uh1jsh³jUùh´K”hj”øubhì)�”}”(hŒ **Notes**”h]”jó)�”}”(hj^ùh]”hŒNotes”…”�”}”(hj`ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj\ùubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´K˜hj”øubjt)�”}”(hŒbGiven an integer : 0x0b03d204, this function returns a struct scsi_lun of: d2 04 0b 03 00 00 00 00”h]”hì)�”}”(hŒbGiven an integer : 0x0b03d204, this function returns a struct scsi_lun of: d2 04 0b 03 00 00 00 00”h]”hŒbGiven an integer : 0x0b03d204, this function returns a struct scsi_lun of: d2 04 0b 03 00 00 00 00”…”�”}”(hjxùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´K™hjtùubah}”(h]”h ]”h"]”h$]”h&]”uh1jsh³j†ùh´K™hj”øubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjóóh²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ!scsi_normalize_sense (C function)”Œc.scsi_normalize_sense”hNt”auh1jGhjóóh²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ\bool scsi_normalize_sense (const u8 *sense_buffer, int sb_len, struct scsi_sense_hdr *sshdr)”h]”jd)�”}”(hŒ[bool scsi_normalize_sense(const u8 *sense_buffer, int sb_len, struct scsi_sense_hdr *sshdr)”h]”(j’)�”}”(hj•h]”hŒbool”…”�”}”(hj­ùh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj©ùh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´K­ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»ùh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj©ùh²hh³jºùh´K­ubj�)�”}”(hŒscsi_normalize_sense”h]”j“)�”}”(hŒscsi_normalize_sense”h]”hŒscsi_normalize_sense”…”�”}”(hjÍùh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÉùubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj©ùh²hh³jºùh´K­ubjÊ)�”}”(hŒB(const u8 *sense_buffer, int sb_len, struct scsi_sense_hdr *sshdr)”h]”(jÐ)�”}”(hŒconst u8 *sense_buffer”h]”(jj)�”}”(hj’Ph]”hŒconst”…”�”}”(hjéùh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjåùubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjöùh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjåùubh)�”}”(hhh]”j“)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjúubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j úŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jÏùsbŒc.scsi_normalize_sense”†”asbuh1hhjåùubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'úh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjåùubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj5úh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjåùubj“)�”}”(hŒ sense_buffer”h]”hŒ sense_buffer”…”�”}”(hjBúh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjåùubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjáùubjÐ)�”}”(hŒ int sb_len”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hj[úh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjWúubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjiúh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjWúubj“)�”}”(hŒsb_len”h]”hŒsb_len”…”�”}”(hjwúh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjWúubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjáùubjÐ)�”}”(hŒstruct scsi_sense_hdr *sshdr”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj�úh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjŒúubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�úh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjŒúubh)�”}”(hhh]”j“)�”}”(hŒscsi_sense_hdr”h]”hŒscsi_sense_hdr”…”�”}”(hj®úh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj«úubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j°úŒmodname”NŒ classname”Njôj÷)�”}”jú]”j#úŒc.scsi_normalize_sense”†”asbuh1hhjŒúubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌúh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjŒúubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjÚúh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjŒúubj“)�”}”(hŒsshdr”h]”hŒsshdr”…”�”}”(hjçúh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjŒú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²ˆuh1jcj³j´hj¥ùh²hh³jºùh´K­ubah}”(h]”j ùah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jºùh´K­hj¢ùh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ_normalize main elements from either fixed or descriptor sense data format into a common format.”h]”hŒ_normalize main elements from either fixed or descriptor sense data format into a common format.”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´K­hjûh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj¢ùh²hh³jºùh´K­ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj)ûjäj)ûjå‰jæ‰jç‰uh1jXh²hhjóóh³Nh´Nubjé)�”}”(hXh**Parameters** ``const u8 *sense_buffer`` byte array containing sense data returned by device ``int sb_len`` number of valid bytes in sense_buffer ``struct scsi_sense_hdr *sshdr`` pointer to instance of structure that common elements are written to. **Notes** The "main elements" from sense data are: response_code, sense_key, asc, ascq and additional_length (only for descriptor format). Typically this function can be called after a device has responded to a SCSI command with the CHECK_CONDITION status. Return value: true if valid sense data information found, else false;”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj3ûh]”hŒ Parameters”…”�”}”(hj5ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj1ûubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´K±hj-ûubj7)�”}”(hhh]”(j<)�”}”(hŒO``const u8 *sense_buffer`` byte array containing sense data returned by device ”h]”(jB)�”}”(hŒ``const u8 *sense_buffer``”h]”jH)�”}”(hjRûh]”hŒconst u8 *sense_buffer”…”�”}”(hjTûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjPûubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´K°hjLûubj^)�”}”(hhh]”hì)�”}”(hŒ3byte array containing sense data returned by device”h]”hŒ3byte array containing sense data returned by device”…”�”}”(hjkûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jgûh´K°hjhûubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjLûubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jgûh´K°hjIûubj<)�”}”(hŒ5``int sb_len`` number of valid bytes in sense_buffer ”h]”(jB)�”}”(hŒ``int sb_len``”h]”jH)�”}”(hj‹ûh]”hŒ int sb_len”…”�”}”(hj�ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj‰ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´K±hj…ûubj^)�”}”(hhh]”hì)�”}”(hŒ%number of valid bytes in sense_buffer”h]”hŒ%number of valid bytes in sense_buffer”…”�”}”(hj¤ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j ûh´K±hj¡ûubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj…ûubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j ûh´K±hjIûubj<)�”}”(hŒg``struct scsi_sense_hdr *sshdr`` pointer to instance of structure that common elements are written to. ”h]”(jB)�”}”(hŒ ``struct scsi_sense_hdr *sshdr``”h]”jH)�”}”(hjÄûh]”hŒstruct scsi_sense_hdr *sshdr”…”�”}”(hjÆûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjÂûubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´K³hj¾ûubj^)�”}”(hhh]”hì)�”}”(hŒEpointer to instance of structure that common elements are written to.”h]”hŒEpointer to instance of structure that common elements are written to.”…”�”}”(hjÝûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´K²hjÚûubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj¾ûubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jÙûh´K³hjIûubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hj-ûubhì)�”}”(hŒ **Notes**”h]”jó)�”}”(hjüh]”hŒNotes”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjþûubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´Kµhj-ûubjt)�”}”(hŒøThe "main elements" from sense data are: response_code, sense_key, asc, ascq and additional_length (only for descriptor format). Typically this function can be called after a device has responded to a SCSI command with the CHECK_CONDITION status. ”h]”(hì)�”}”(hŒ€The "main elements" from sense data are: response_code, sense_key, asc, ascq and additional_length (only for descriptor format).”h]”hŒ„The “main elementsâ€� from sense data are: response_code, sense_key, asc, ascq and additional_length (only for descriptor format).”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´Kµhjüubhì)�”}”(hŒuTypically this function can be called after a device has responded to a SCSI command with the CHECK_CONDITION status.”h]”hŒuTypically this function can be called after a device has responded to a SCSI command with the CHECK_CONDITION status.”…”�”}”(hj)üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´K¸hjüubeh}”(h]”h ]”h"]”h$]”h&]”uh1jsh³j(üh´Kµhj-ûubj7)�”}”(hhh]”j<)�”}”(hŒEReturn value: true if valid sense data information found, else false;”h]”(jB)�”}”(hŒ Return value:”h]”hŒ Return value:”…”�”}”(hjEüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´K»hjAüubj^)�”}”(hhh]”hì)�”}”(hŒ7true if valid sense data information found, else false;”h]”hŒ7true if valid sense data information found, else false;”…”�”}”(hjWüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´K¼hjTüubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjAüubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jSüh´K»hj>üubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj-ûubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjóóh²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ!scsi_sense_desc_find (C function)”Œc.scsi_sense_desc_find”hNt”auh1jGhjóóh²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒTconst u8 * scsi_sense_desc_find (const u8 * sense_buffer, int sb_len, int desc_type)”h]”jd)�”}”(hŒQconst u8 *scsi_sense_desc_find(const u8 *sense_buffer, int sb_len, int desc_type)”h]”(jj)�”}”(hj’Ph]”hŒconst”…”�”}”(hj˜üh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj”üh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´Kìubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦üh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj”üh²hh³j¥üh´Kìubh)�”}”(hhh]”j“)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj·üh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj´üubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j¹üŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j Œscsi_sense_desc_find”sbŒc.scsi_sense_desc_find”†”asbuh1hhj”üh²hh³j¥üh´Kìubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØüh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj”üh²hh³j¥üh´Kìubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjæüh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj”üh²hh³j¥üh´Kìubj�)�”}”(hŒscsi_sense_desc_find”h]”j“)�”}”(hjÕüh]”hŒscsi_sense_desc_find”…”�”}”(hj÷üh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjóüubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj”üh²hh³j¥üh´KìubjÊ)�”}”(hŒ3(const u8 *sense_buffer, int sb_len, int desc_type)”h]”(jÐ)�”}”(hŒconst u8 *sense_buffer”h]”(jj)�”}”(hj’Ph]”hŒconst”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjýubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjýubh)�”}”(hhh]”j“)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj0ýh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj-ýubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j2ýŒmodname”NŒ classname”Njôj÷)�”}”jú]”jÓüŒc.scsi_sense_desc_find”†”asbuh1hhjýubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNýh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjýubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj\ýh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjýubj“)�”}”(hŒ sense_buffer”h]”hŒ sense_buffer”…”�”}”(hjiýh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjýubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj ýubjÐ)�”}”(hŒ int sb_len”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hj‚ýh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj~ýubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�ýh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj~ýubj“)�”}”(hŒsb_len”h]”hŒsb_len”…”�”}”(hjžýh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj~ýubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj ýubjÐ)�”}”(hŒ int desc_type”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hj·ýh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj³ýubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅýh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj³ýubj“)�”}”(hŒ desc_type”h]”hŒ desc_type”…”�”}”(hjÓýh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj³ý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²ˆuh1jcj³j´hj�üh²hh³j¥üh´Kìubah}”(h]”j‹üah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j¥üh´Kìhj�üh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒCsearch for a given descriptor type in descriptor sense data format.”h]”hŒCsearch for a given descriptor type in descriptor sense data format.”…”�”}”(hjýýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´Kìhjúýh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj�üh²hh³j¥üh´Kìubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjþjäjþjå‰jæ‰jç‰uh1jXh²hhjóóh³Nh´Nubjé)�”}”(hXr**Parameters** ``const u8 * sense_buffer`` byte array of descriptor format sense data ``int sb_len`` number of valid bytes in sense_buffer ``int desc_type`` value of descriptor type to find (e.g. 0 -> information) **Notes** only valid when sense data is in descriptor format Return value: pointer to start of (first) descriptor if found else NULL”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjþh]”hŒ Parameters”…”�”}”(hj!þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjþubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´Kðhjþubj7)�”}”(hhh]”(j<)�”}”(hŒG``const u8 * sense_buffer`` byte array of descriptor format sense data ”h]”(jB)�”}”(hŒ``const u8 * sense_buffer``”h]”jH)�”}”(hj>þh]”hŒconst u8 * sense_buffer”…”�”}”(hj@þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj<þubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´Kíhj8þubj^)�”}”(hhh]”hì)�”}”(hŒ*byte array of descriptor format sense data”h]”hŒ*byte array of descriptor format sense data”…”�”}”(hjWþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jSþh´KíhjTþubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj8þubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jSþh´Kíhj5þubj<)�”}”(hŒ5``int sb_len`` number of valid bytes in sense_buffer ”h]”(jB)�”}”(hŒ``int sb_len``”h]”jH)�”}”(hjwþh]”hŒ int sb_len”…”�”}”(hjyþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjuþubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´Kîhjqþubj^)�”}”(hhh]”hì)�”}”(hŒ%number of valid bytes in sense_buffer”h]”hŒ%number of valid bytes in sense_buffer”…”�”}”(hj�þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jŒþh´Kîhj�þubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjqþubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jŒþh´Kîhj5þubj<)�”}”(hŒK``int desc_type`` value of descriptor type to find (e.g. 0 -> information) ”h]”(jB)�”}”(hŒ``int desc_type``”h]”jH)�”}”(hj°þh]”hŒ int desc_type”…”�”}”(hj²þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj®þubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´Kðhjªþubj^)�”}”(hhh]”hì)�”}”(hŒ8value of descriptor type to find (e.g. 0 -> information)”h]”hŒ8value of descriptor type to find (e.g. 0 -> information)”…”�”}”(hjÉþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´KïhjÆþubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjªþubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jÅþh´Kðhj5þubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjþubhì)�”}”(hŒ **Notes**”h]”jó)�”}”(hjìþh]”hŒNotes”…”�”}”(hjîþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjêþubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´Kòhjþubjt)�”}”(hŒ3only valid when sense data is in descriptor format ”h]”hì)�”}”(hŒ2only valid when sense data is in descriptor format”h]”hŒ2only valid when sense data is in descriptor format”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´Kòhjÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jsh³jÿh´Kòhjþubj7)�”}”(hhh]”j<)�”}”(hŒGReturn value: pointer to start of (first) descriptor if found else NULL”h]”(jB)�”}”(hŒ Return value:”h]”hŒ Return value:”…”�”}”(hj"ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´Kôhjÿubj^)�”}”(hhh]”hì)�”}”(hŒ9pointer to start of (first) descriptor if found else NULL”h]”hŒ9pointer to start of (first) descriptor if found else NULL”…”�”}”(hj4ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´Kõhj1ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j0ÿh´Kôhjÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjþubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjóóh²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ$scsi_build_sense_buffer (C function)”Œc.scsi_build_sense_buffer”hNt”auh1jGhjóóh²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒIvoid scsi_build_sense_buffer (int desc, u8 *buf, u8 key, u8 asc, u8 ascq)”h]”jd)�”}”(hŒHvoid scsi_build_sense_buffer(int desc, u8 *buf, u8 key, u8 asc, u8 ascq)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjuÿh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjqÿh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´Mubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„ÿh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjqÿh²hh³jƒÿh´Mubj�)�”}”(hŒscsi_build_sense_buffer”h]”j“)�”}”(hŒscsi_build_sense_buffer”h]”hŒscsi_build_sense_buffer”…”�”}”(hj–ÿh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj’ÿubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjqÿh²hh³jƒÿh´MubjÊ)�”}”(hŒ,(int desc, u8 *buf, u8 key, u8 asc, u8 ascq)”h]”(jÐ)�”}”(hŒint desc”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hj²ÿh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj®ÿubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀÿh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj®ÿubj“)�”}”(hŒdesc”h]”hŒdesc”…”�”}”(hjÎÿh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj®ÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjªÿubjÐ)�”}”(hŒu8 *buf”h]”(h)�”}”(hhh]”j“)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjêÿh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjçÿubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jìÿŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j j˜ÿsbŒc.scsi_build_sense_buffer”†”asbuh1hhjãÿubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjãÿubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjãÿubj“)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjãÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjªÿubjÐ)�”}”(hŒu8 key”h]”(h)�”}”(hhh]”j“)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj>ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jCŒmodname”NŒ classname”Njôj÷)�”}”jú]”jŒc.scsi_build_sense_buffer”†”asbuh1hhj:ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj:ubj“)�”}”(hŒkey”h]”hŒkey”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjªÿubjÐ)�”}”(hŒu8 asc”h]”(h)�”}”(hhh]”j“)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj†ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j‹Œmodname”NŒ classname”Njôj÷)�”}”jú]”jŒc.scsi_build_sense_buffer”†”asbuh1hhj‚ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj‚ubj“)�”}”(hŒasc”h]”hŒasc”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj‚ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjªÿubjÐ)�”}”(hŒu8 ascq”h]”(h)�”}”(hhh]”j“)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÎubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jÓŒmodname”NŒ classname”Njôj÷)�”}”jú]”jŒc.scsi_build_sense_buffer”†”asbuh1hhjÊubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÊubj“)�”}”(hŒascq”h]”hŒascq”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÊubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjªÿubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjqÿh²hh³jƒÿh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjmÿh²hh³jƒÿh´Mubah}”(h]”jhÿah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jƒÿh´Mhjjÿh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒbuild sense data in a buffer”h]”hŒbuild sense data in a buffer”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´Mhj$h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjjÿh²hh³jƒÿh´Mubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj?jäj?jå‰jæ‰jç‰uh1jXh²hhjóóh³Nh´Nubjé)�”}”(hŒô**Parameters** ``int desc`` Sense format (non-zero == descriptor format, 0 == fixed format) ``u8 *buf`` Where to build sense data ``u8 key`` Sense key ``u8 asc`` Additional sense code ``u8 ascq`` Additional sense code qualifier”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjIh]”hŒ Parameters”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjGubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´MhjCubj7)�”}”(hhh]”(j<)�”}”(hŒM``int desc`` Sense format (non-zero == descriptor format, 0 == fixed format) ”h]”(jB)�”}”(hŒ ``int desc``”h]”jH)�”}”(hjhh]”hŒint desc”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjfubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´Mhjbubj^)�”}”(hhh]”hì)�”}”(hŒ?Sense format (non-zero == descriptor format, 0 == fixed format)”h]”hŒ?Sense format (non-zero == descriptor format, 0 == fixed format)”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´Mhj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjbubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j}h´Mhj_ubj<)�”}”(hŒ&``u8 *buf`` Where to build sense data ”h]”(jB)�”}”(hŒ ``u8 *buf``”h]”jH)�”}”(hj¢h]”hŒu8 *buf”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´Mhjœubj^)�”}”(hhh]”hì)�”}”(hŒWhere to build sense data”h]”hŒWhere to build sense data”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j·h´Mhj¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjœubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j·h´Mhj_ubj<)�”}”(hŒ``u8 key`` Sense key ”h]”(jB)�”}”(hŒ ``u8 key``”h]”jH)�”}”(hjÛh]”hŒu8 key”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´MhjÕubj^)�”}”(hhh]”hì)�”}”(hŒ Sense key”h]”hŒ Sense key”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jðh´Mhjñubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÕubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jðh´Mhj_ubj<)�”}”(hŒ!``u8 asc`` Additional sense code ”h]”(jB)�”}”(hŒ ``u8 asc``”h]”jH)�”}”(hjh]”hŒu8 asc”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´Mhjubj^)�”}”(hhh]”hì)�”}”(hŒAdditional sense code”h]”hŒAdditional sense code”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j)h´Mhj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j)h´Mhj_ubj<)�”}”(hŒ+``u8 ascq`` Additional sense code qualifier”h]”(jB)�”}”(hŒ ``u8 ascq``”h]”jH)�”}”(hjMh]”hŒu8 ascq”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjKubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´MhjGubj^)�”}”(hhh]”hì)�”}”(hŒAdditional sense code qualifier”h]”hŒAdditional sense code qualifier”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´Mhjcubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjGubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jbh´Mhj_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjCubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjóóh²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ'scsi_set_sense_information (C function)”Œc.scsi_set_sense_information”hNt”auh1jGhjóóh²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ?int scsi_set_sense_information (u8 *buf, int buf_len, u64 info)”h]”jd)�”}”(hŒ>int scsi_set_sense_information(u8 *buf, int buf_len, u64 info)”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj£h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´M/ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj£h²hh³jµh´M/ubj�)�”}”(hŒscsi_set_sense_information”h]”j“)�”}”(hŒscsi_set_sense_information”h]”hŒscsi_set_sense_information”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÄubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj£h²hh³jµh´M/ubjÊ)�”}”(hŒ (u8 *buf, int buf_len, u64 info)”h]”(jÐ)�”}”(hŒu8 *buf”h]”(h)�”}”(hhh]”j“)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjäubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jéŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jÊsbŒc.scsi_set_sense_information”†”asbuh1hhjàubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjàubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjàubj“)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjàubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjÜubjÐ)�”}”(hŒ int buf_len”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj7ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj7ubj“)�”}”(hŒbuf_len”h]”hŒbuf_len”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjÜubjÐ)�”}”(hŒu64 info”h]”(h)�”}”(hhh]”j“)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjpubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”juŒmodname”NŒ classname”Njôj÷)�”}”jú]”jŒc.scsi_set_sense_information”†”asbuh1hhjlubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjlubj“)�”}”(hŒinfo”h]”hŒinfo”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjlubeh}”(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²ˆuh1jcj³j´hjŸh²hh³jµh´M/ubah}”(h]”jšah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jµh´M/hjœh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ:set the information field in a formatted sense data buffer”h]”hŒ:set the information field in a formatted sense data buffer”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´M/hjÆh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjœh²hh³jµh´M/ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjájäjájå‰jæ‰jç‰uh1jXh²hhjóóh³Nh´Nubjé)�”}”(hŒè**Parameters** ``u8 *buf`` Where to build sense data ``int buf_len`` buffer length ``u64 info`` 64-bit information value to be set **Description** Return value: 0 on success or -EINVAL for invalid sense buffer length”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjëh]”hŒ Parameters”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjéubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´M3hjåubj7)�”}”(hhh]”(j<)�”}”(hŒ&``u8 *buf`` Where to build sense data ”h]”(jB)�”}”(hŒ ``u8 *buf``”h]”jH)�”}”(hj h]”hŒu8 *buf”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´M1hjubj^)�”}”(hhh]”hì)�”}”(hŒWhere to build sense data”h]”hŒWhere to build sense data”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jh´M1hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jh´M1hjubj<)�”}”(hŒ``int buf_len`` buffer length ”h]”(jB)�”}”(hŒ``int buf_len``”h]”jH)�”}”(hjCh]”hŒ int buf_len”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjAubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´M2hj=ubj^)�”}”(hhh]”hì)�”}”(hŒ buffer length”h]”hŒ buffer length”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jXh´M2hjYubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jXh´M2hjubj<)�”}”(hŒ0``u64 info`` 64-bit information value to be set ”h]”(jB)�”}”(hŒ ``u64 info``”h]”jH)�”}”(hj|h]”hŒu64 info”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjzubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´M3hjvubj^)�”}”(hhh]”hì)�”}”(hŒ"64-bit information value to be set”h]”hŒ"64-bit information value to be set”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j‘h´M3hj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjvubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j‘h´M3hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjåubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hj·h]”hŒ Description”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjµubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´M5hjåubj7)�”}”(hhh]”j<)�”}”(hŒEReturn value: 0 on success or -EINVAL for invalid sense buffer length”h]”(jB)�”}”(hŒ Return value:”h]”hŒ Return value:”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´M4hjÐubj^)�”}”(hhh]”hì)�”}”(hŒ70 on success or -EINVAL for invalid sense buffer length”h]”hŒ70 on success or -EINVAL for invalid sense buffer length”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´M5hjãubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÐubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jâh´M4hjÍubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjåubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjóóh²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ)scsi_set_sense_field_pointer (C function)”Œc.scsi_set_sense_field_pointer”hNt”auh1jGhjóóh²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒOint scsi_set_sense_field_pointer (u8 *buf, int buf_len, u16 fp, u8 bp, bool cd)”h]”jd)�”}”(hŒNint scsi_set_sense_field_pointer(u8 *buf, int buf_len, u16 fp, u8 bp, bool cd)”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj#h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´M_ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj#h²hh³j5h´M_ubj�)�”}”(hŒscsi_set_sense_field_pointer”h]”j“)�”}”(hŒscsi_set_sense_field_pointer”h]”hŒscsi_set_sense_field_pointer”…”�”•¥}”(hjHh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjDubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj#h²hh³j5h´M_ubjÊ)�”}”(hŒ.(u8 *buf, int buf_len, u16 fp, u8 bp, bool cd)”h]”(jÐ)�”}”(hŒu8 *buf”h]”(h)�”}”(hhh]”j“)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjdubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jiŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jJsbŒc.scsi_set_sense_field_pointer”†”asbuh1hhj`ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj`ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj`ubj“)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj`ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj\ubjÐ)�”}”(hŒ int buf_len”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj·ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj·ubj“)�”}”(hŒbuf_len”h]”hŒbuf_len”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj·ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj\ubjÐ)�”}”(hŒu16 fp”h]”(h)�”}”(hhh]”j“)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjðubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jõŒmodname”NŒ classname”Njôj÷)�”}”jú]”jƒŒc.scsi_set_sense_field_pointer”†”asbuh1hhjìubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjìubj“)�”}”(hŒfp”h]”hŒfp”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjìubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj\ubjÐ)�”}”(hŒu8 bp”h]”(h)�”}”(hhh]”j“)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j=Œmodname”NŒ classname”Njôj÷)�”}”jú]”jƒŒc.scsi_set_sense_field_pointer”†”asbuh1hhj4ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj4ubj“)�”}”(hŒbp”h]”hŒbp”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj4ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj\ubjÐ)�”}”(hŒbool cd”h]”(j’)�”}”(hj•h]”hŒbool”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj|ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj|ubj“)�”}”(hŒcd”h]”hŒcd”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj|ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj\ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhj#h²hh³j5h´M_ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjh²hh³j5h´M_ubah}”(h]”jah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j5h´M_hjh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒUset the field pointer sense key specific information in a formatted sense data buffer”h]”hŒUset the field pointer sense key specific information in a formatted sense data buffer”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´M_hjÂh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjh²hh³j5h´M_ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjÝjäjÝjå‰jæ‰jç‰uh1jXh²hhjóóh³Nh´Nubjé)�”}”(hX**Parameters** ``u8 *buf`` Where to build sense data ``int buf_len`` buffer length ``u16 fp`` field pointer to be set ``u8 bp`` bit pointer to be set ``bool cd`` command/data bit **Description** Return value: 0 on success or -EINVAL for invalid sense buffer length”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjçh]”hŒ Parameters”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjåubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´Mchjáubj7)�”}”(hhh]”(j<)�”}”(hŒ&``u8 *buf`` Where to build sense data ”h]”(jB)�”}”(hŒ ``u8 *buf``”h]”jH)�”}”(hjh]”hŒu8 *buf”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´Mahjubj^)�”}”(hhh]”hì)�”}”(hŒWhere to build sense data”h]”hŒWhere to build sense data”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jh´Mahjubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jh´Mahjýubj<)�”}”(hŒ``int buf_len`` buffer length ”h]”(jB)�”}”(hŒ``int buf_len``”h]”jH)�”}”(hj?h]”hŒ int buf_len”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´Mbhj9ubj^)�”}”(hhh]”hì)�”}”(hŒ buffer length”h]”hŒ buffer length”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jTh´MbhjUubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jTh´Mbhjýubj<)�”}”(hŒ#``u16 fp`` field pointer to be set ”h]”(jB)�”}”(hŒ ``u16 fp``”h]”jH)�”}”(hjxh]”hŒu16 fp”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjvubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´Mchjrubj^)�”}”(hhh]”hì)�”}”(hŒfield pointer to be set”h]”hŒfield pointer to be set”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j�h´MchjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjrubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j�h´Mchjýubj<)�”}”(hŒ ``u8 bp`` bit pointer to be set ”h]”(jB)�”}”(hŒ ``u8 bp``”h]”jH)�”}”(hj±h]”hŒu8 bp”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´Mdhj«ubj^)�”}”(hhh]”hì)�”}”(hŒbit pointer to be set”h]”hŒbit pointer to be set”…”�”}”(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Œ``bool cd`` command/data bit ”h]”(jB)�”}”(hŒ ``bool cd``”h]”jH)�”}”(hjêh]”hŒbool cd”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjèubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´Mehjäubj^)�”}”(hhh]”hì)�”}”(hŒcommand/data bit”h]”hŒcommand/data bit”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÿh´Mehjubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjäubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jÿh´Mehjýubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjáubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hj%h]”hŒ Description”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´Mghjáubj7)�”}”(hhh]”j<)�”}”(hŒEReturn value: 0 on success or -EINVAL for invalid sense buffer length”h]”(jB)�”}”(hŒ Return value:”h]”hŒ Return value:”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´Mfhj>ubj^)�”}”(hhh]”hì)�”}”(hŒ70 on success or -EINVAL for invalid sense buffer length”h]”hŒ70 on success or -EINVAL for invalid sense buffer length”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´MghjQubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jPh´Mfhj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjáubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjóóh²hh³Nh´Nubeh}”(h]”Œdrivers-scsi-scsi-common-c”ah ]”h"]”Œdrivers/scsi/scsi_common.c”ah$]”h&]”uh1hµhj%h²hh³hÊh´KÜubeh}”(h]”Œscsi-midlayer-implementation”ah ]”h"]”Œscsi midlayer implementation”ah$]”h&]”uh1hµhjh²hh³hÊh´KXubh¶)�”}”(hhh]”(h»)�”}”(hŒTransport classes”h]”hŒTransport classes”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjŒh²hh³hÊh´Käubhì)�”}”(hŒxTransport classes are service libraries for drivers in the SCSI lower layer, which expose transport attributes in sysfs.”h]”hŒxTransport classes are service libraries for drivers in the SCSI lower layer, which expose transport attributes in sysfs.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KæhjŒh²hubh¶)�”}”(hhh]”(h»)�”}”(hŒFibre Channel transport”h]”hŒFibre Channel transport”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj«h²hh³hÊh´Kêubhì)�”}”(hŒYThe file drivers/scsi/scsi_transport_fc.c defines transport attributes for Fibre Channel.”h]”hŒYThe file drivers/scsi/scsi_transport_fc.c defines transport attributes for Fibre Channel.”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Kìhj«h²hubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ fc_get_event_number (C function)”Œc.fc_get_event_number”hNt”auh1jGhj«h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒu32 fc_get_event_number (void)”h]”jd)�”}”(hŒu32 fc_get_event_number(void)”h]”(h)�”}”(hhh]”j“)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjãubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jèŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j Œfc_get_event_number”sbŒc.fc_get_event_number”†”asbuh1hhjßh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´Mõubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjßh²hh³j h´Mõubj�)�”}”(hŒfc_get_event_number”h]”j“)�”}”(hj h]”hŒfc_get_event_number”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjßh²hh³j h´MõubjÊ)�”}”(hŒ(void)”h]”jÐ)�”}”(hŒvoid”h]”j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj5 h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj1 ubah}”(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²ˆuh1jcj³j´hjÛh²hh³j h´Mõubah}”(h]”jÖah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j h´MõhjØh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ*Obtain the next sequential FC event number”h]”hŒ*Obtain the next sequential FC event number”…”�”}”(hj_ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´Mõhj\ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjØh²hh³j h´Mõubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjw jäjw jå‰jæ‰jç‰uh1jXh²hhj«h³Nh´Nubjé)�”}”(hŒØ**Parameters** ``void`` no arguments **Notes** We could have inlined this, but it would have required fc_event_seq to be exposed. For now, live with the subroutine call. Atomic used to avoid lock/unlock...”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj� h]”hŒ Parameters”…”�”}”(hjƒ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´Mùhj{ ubj7)�”}”(hhh]”j<)�”}”(hŒ``void`` no arguments ”h]”(jB)�”}”(hŒ``void``”h]”jH)�”}”(hj  h]”hŒvoid”…”�”}”(hj¢ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjž ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´Khjš ubj^)�”}”(hhh]”hì)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hj¹ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jµ h´Khj¶ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjš ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jµ h´Khj— ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj{ ubhì)�”}”(hŒ **Notes**”h]”jó)�”}”(hjÛ h]”hŒNotes”…”�”}”(hjÝ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÙ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´Khj{ ubjt)�”}”(hŒžWe could have inlined this, but it would have required fc_event_seq to be exposed. For now, live with the subroutine call. Atomic used to avoid lock/unlock...”h]”hì)�”}”(hŒžWe could have inlined this, but it would have required fc_event_seq to be exposed. For now, live with the subroutine call. Atomic used to avoid lock/unlock...”h]”hŒžWe could have inlined this, but it would have required fc_event_seq to be exposed. For now, live with the subroutine call. Atomic used to avoid lock/unlock...”…”�”}”(hjõ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´M÷hjñ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jsh³j h´M÷hj{ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj«h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ"fc_host_post_fc_event (C function)”Œc.fc_host_post_fc_event”hNt”auh1jGhj«h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ—void fc_host_post_fc_event (struct Scsi_Host *shost, u32 event_number, enum fc_host_event_code event_code, u32 data_len, char *data_buf, u64 vendor_id)”h]”jd)�”}”(hŒ–void fc_host_post_fc_event(struct Scsi_Host *shost, u32 event_number, enum fc_host_event_code event_code, u32 data_len, char *data_buf, u64 vendor_id)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj* h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj& h²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´Mubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9 h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj& h²hh³j8 h´Mubj�)�”}”(hŒfc_host_post_fc_event”h]”j“)�”}”(hŒfc_host_post_fc_event”h]”hŒfc_host_post_fc_event”…”�”}”(hjK h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjG ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj& h²hh³j8 h´MubjÊ)�”}”(hŒ|(struct Scsi_Host *shost, u32 event_number, enum fc_host_event_code event_code, u32 data_len, char *data_buf, u64 vendor_id)”h]”(jÐ)�”}”(hŒstruct Scsi_Host *shost”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjg h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjc ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjt h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjc ubh)�”}”(hhh]”j“)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hj… h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj‚ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j‡ Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jM sbŒc.fc_host_post_fc_event”†”asbuh1hhjc ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥ h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjc ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj³ h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjc ubj“)�”}”(hŒshost”h]”hŒshost”…”�”}”(hjÀ h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjc ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj_ ubjÐ)�”}”(hŒu32 event_number”h]”(h)�”}”(hhh]”j“)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjÜ h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÙ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jÞ Œmodname”NŒ classname”Njôj÷)�”}”jú]”j¡ Œc.fc_host_post_fc_event”†”asbuh1hhjÕ ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjú h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÕ ubj“)�”}”(hŒ event_number”h]”hŒ event_number”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÕ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj_ ubjÐ)�”}”(hŒ"enum fc_host_event_code event_code”h]”(jj)�”}”(hjf9h]”hŒenum”…”�”}”(hj! h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj. h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj ubh)�”}”(hhh]”j“)�”}”(hŒfc_host_event_code”h]”hŒfc_host_event_code”…”�”}”(hj? h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj< ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jA Œmodname”NŒ classname”Njôj÷)�”}”jú]”j¡ Œc.fc_host_post_fc_event”†”asbuh1hhj ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj] h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj ubj“)�”}”(hŒ event_code”h]”hŒ event_code”…”�”}”(hjk h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj_ ubjÐ)�”}”(hŒ u32 data_len”h]”(h)�”}”(hhh]”j“)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj‡ h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj„ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j‰ Œmodname”NŒ classname”Njôj÷)�”}”jú]”j¡ Œc.fc_host_post_fc_event”†”asbuh1hhj€ ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥ h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj€ ubj“)�”}”(hŒdata_len”h]”hŒdata_len”…”�”}”(hj³ h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj€ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj_ ubjÐ)�”}”(hŒchar *data_buf”h]”(j’)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjÌ h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjÈ ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚ h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÈ ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjè h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjÈ ubj“)�”}”(hŒdata_buf”h]”hŒdata_buf”…”�”}”(hjõ h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÈ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj_ ubjÐ)�”}”(hŒ u64 vendor_id”h]”(h)�”}”(hhh]”j“)�”}”(hŒu64”h]”hŒu64”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j Œmodname”NŒ classname”Njôj÷)�”}”jú]”j¡ Œc.fc_host_post_fc_event”†”asbuh1hhj ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/ h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj ubj“)�”}”(hŒ vendor_id”h]”hŒ vendor_id”…”�”}”(hj= h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj_ ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhj& h²hh³j8 h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj" h²hh³j8 h´Mubah}”(h]”j ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j8 h´Mhj h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ9routine to do the work of posting an event on an fc_host.”h]”hŒ9routine to do the work of posting an event on an fc_host.”…”�”}”(hjg h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´Mhjd h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj h²hh³j8 h´Mubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj jäj jå‰jæ‰jç‰uh1jXh²hhj«h³Nh´Nubjé)�”}”(hX¤**Parameters** ``struct Scsi_Host *shost`` host the event occurred on ``u32 event_number`` fc event number obtained from get_fc_event_number() ``enum fc_host_event_code event_code`` fc_host event being posted ``u32 data_len`` amount, in bytes, of event data ``char *data_buf`` pointer to event data ``u64 vendor_id`` value for Vendor id **Notes** This routine assumes no locks are held on entry.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj‰ h]”hŒ Parameters”…”�”}”(hj‹ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj‡ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´Mhjƒ ubj7)�”}”(hhh]”(j<)�”}”(hŒ7``struct Scsi_Host *shost`` host the event occurred on ”h]”(jB)�”}”(hŒ``struct Scsi_Host *shost``”h]”jH)�”}”(hj¨ h]”hŒstruct Scsi_Host *shost”…”�”}”(hjª h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj¦ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´Mhj¢ ubj^)�”}”(hhh]”hì)�”}”(hŒhost the event occurred on”h]”hŒhost the event occurred on”…”�”}”(hjÁ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j½ h´Mhj¾ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj¢ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j½ h´MhjŸ ubj<)�”}”(hŒI``u32 event_number`` fc event number obtained from get_fc_event_number() ”h]”(jB)�”}”(hŒ``u32 event_number``”h]”jH)�”}”(hjá h]”hŒu32 event_number”…”�”}”(hjã h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjß ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´MhjÛ ubj^)�”}”(hhh]”hì)�”}”(hŒ3fc event number obtained from get_fc_event_number()”h]”hŒ3fc event number obtained from get_fc_event_number()”…”�”}”(hjú h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jö h´Mhj÷ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÛ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jö h´MhjŸ ubj<)�”}”(hŒB``enum fc_host_event_code event_code`` fc_host event being posted ”h]”(jB)�”}”(hŒ&``enum fc_host_event_code event_code``”h]”jH)�”}”(hj h]”hŒ"enum fc_host_event_code event_code”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´Mhj ubj^)�”}”(hhh]”hì)�”}”(hŒfc_host event being posted”h]”hŒfc_host event being posted”…”�”}”(hj3 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j/ h´Mhj0 ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j/ h´MhjŸ ubj<)�”}”(hŒ1``u32 data_len`` amount, in bytes, of event data ”h]”(jB)�”}”(hŒ``u32 data_len``”h]”jH)�”}”(hjS h]”hŒ u32 data_len”…”�”}”(hjU h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjQ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´M hjM ubj^)�”}”(hhh]”hì)�”}”(hŒamount, in bytes, of event data”h]”hŒamount, in bytes, of event data”…”�”}”(hjl h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jh h´M hji ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjM ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jh h´M hjŸ ubj<)�”}”(hŒ)``char *data_buf`` pointer to event data ”h]”(jB)�”}”(hŒ``char *data_buf``”h]”jH)�”}”(hjŒ h]”hŒchar *data_buf”…”�”}”(hjŽ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjŠ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´M hj† ubj^)�”}”(hhh]”hì)�”}”(hŒpointer to event data”h]”hŒpointer to event data”…”�”}”(hj¥ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¡ h´M hj¢ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj† ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j¡ h´M hjŸ ubj<)�”}”(hŒ&``u64 vendor_id`` value for Vendor id ”h]”(jB)�”}”(hŒ``u64 vendor_id``”h]”jH)�”}”(hjÅ h]”hŒ u64 vendor_id”…”�”}”(hjÇ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjà ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´M hj¿ ubj^)�”}”(hhh]”hì)�”}”(hŒvalue for Vendor id”h]”hŒvalue for Vendor id”…”�”}”(hjÞ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÚ h´M hjÛ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj¿ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jÚ h´M hjŸ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjƒ ubhì)�”}”(hŒ **Notes**”h]”jó)�”}”(hjh]”hŒNotes”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjþ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´M hjƒ ubjt)�”}”(hŒ0This routine assumes no locks are held on entry.”h]”hì)�”}”(hjh]”hŒ0This routine assumes no locks are held on entry.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´M hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jsh³j'h´M hjƒ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj«h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒfc_host_post_event (C function)”Œc.fc_host_post_event”hNt”auh1jGhj«h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒwvoid fc_host_post_event (struct Scsi_Host *shost, u32 event_number, enum fc_host_event_code event_code, u32 event_data)”h]”jd)�”}”(hŒvvoid fc_host_post_event(struct Scsi_Host *shost, u32 event_number, enum fc_host_event_code event_code, u32 event_data)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjJh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´MRubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjJh²hh³j\h´MRubj�)�”}”(hŒfc_host_post_event”h]”j“)�”}”(hŒfc_host_post_event”h]”hŒfc_host_post_event”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjkubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjJh²hh³j\h´MRubjÊ)�”}”(hŒ_(struct Scsi_Host *shost, u32 event_number, enum fc_host_event_code event_code, u32 event_data)”h]”(jÐ)�”}”(hŒstruct Scsi_Host *shost”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj‡ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj‡ubh)�”}”(hhh]”j“)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj¦ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j«Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jqsbŒc.fc_host_post_event”†”asbuh1hhj‡ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj‡ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj‡ubj“)�”}”(hŒshost”h]”hŒshost”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj‡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjƒubjÐ)�”}”(hŒu32 event_number”h]”(h)�”}”(hhh]”j“)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjýubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jŒmodname”NŒ classname”Njôj÷)�”}”jú]”jÅŒc.fc_host_post_event”†”asbuh1hhjùubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjùubj“)�”}”(hŒ event_number”h]”hŒ event_number”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjùubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjƒubjÐ)�”}”(hŒ"enum fc_host_event_code event_code”h]”(jj)�”}”(hjf9h]”hŒenum”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjAubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjAubh)�”}”(hhh]”j“)�”}”(hŒfc_host_event_code”h]”hŒfc_host_event_code”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj`ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jeŒmodname”NŒ classname”Njôj÷)�”}”jú]”jÅŒc.fc_host_post_event”†”asbuh1hhjAubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjAubj“)�”}”(hŒ event_code”h]”hŒ event_code”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjAubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjƒubjÐ)�”}”(hŒu32 event_data”h]”(h)�”}”(hhh]”j“)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj¨ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j­Œmodname”NŒ classname”Njôj÷)�”}”jú]”jÅŒc.fc_host_post_event”†”asbuh1hhj¤ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj¤ubj“)�”}”(hŒ event_data”h]”hŒ event_data”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj¤ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjƒubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjJh²hh³j\h´MRubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjFh²hh³j\h´MRubah}”(h]”jAah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j\h´MRhjCh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ%called to post an even on an fc_host.”h]”hŒ%called to post an even on an fc_host.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´MRhjþh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjCh²hh³j\h´MRubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjjäjjå‰jæ‰jç‰uh1jXh²hhj«h³Nh´Nubjé)�”}”(hX[**Parameters** ``struct Scsi_Host *shost`` host the event occurred on ``u32 event_number`` fc event number obtained from get_fc_event_number() ``enum fc_host_event_code event_code`` fc_host event being posted ``u32 event_data`` 32bits of data for the event being posted **Notes** This routine assumes no locks are held on entry.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj#h]”hŒ Parameters”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´MVhjubj7)�”}”(hhh]”(j<)�”}”(hŒ7``struct Scsi_Host *shost`` host the event occurred on ”h]”(jB)�”}”(hŒ``struct Scsi_Host *shost``”h]”jH)�”}”(hjBh]”hŒstruct Scsi_Host *shost”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´MShj<ubj^)�”}”(hhh]”hì)�”}”(hŒhost the event occurred on”h]”hŒhost the event occurred on”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jWh´MShjXubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jWh´MShj9ubj<)�”}”(hŒI``u32 event_number`` fc event number obtained from get_fc_event_number() ”h]”(jB)�”}”(hŒ``u32 event_number``”h]”jH)�”}”(hj{h]”hŒu32 event_number”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjyubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´MThjuubj^)�”}”(hhh]”hì)�”}”(hŒ3fc event number obtained from get_fc_event_number()”h]”hŒ3fc event number obtained from get_fc_event_number()”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j�h´MThj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjuubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j�h´MThj9ubj<)�”}”(hŒB``enum fc_host_event_code event_code`` fc_host event being posted ”h]”(jB)�”}”(hŒ&``enum fc_host_event_code event_code``”h]”jH)�”}”(hj´h]”hŒ"enum fc_host_event_code event_code”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´MUhj®ubj^)�”}”(hhh]”hì)�”}”(hŒfc_host event being posted”h]”hŒfc_host event being posted”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÉh´MUhjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jÉh´MUhj9ubj<)�”}”(hŒ=``u32 event_data`` 32bits of data for the event being posted ”h]”(jB)�”}”(hŒ``u32 event_data``”h]”jH)�”}”(hjíh]”hŒu32 event_data”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjëubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´MVhjçubj^)�”}”(hhh]”hì)�”}”(hŒ)32bits of data for the event being posted”h]”hŒ)32bits of data for the event being posted”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jh´MVhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjçubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jh´MVhj9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjubhì)�”}”(hŒ **Notes**”h]”jó)�”}”(hj(h]”hŒNotes”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´MXhjubjt)�”}”(hŒ0This routine assumes no locks are held on entry.”h]”hì)�”}”(hj@h]”hŒ0This routine assumes no locks are held on entry.”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´MXhj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jsh³jOh´MXhjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj«h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ&fc_host_post_vendor_event (C function)”Œc.fc_host_post_vendor_event”hNt”auh1jGhj«h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒxvoid fc_host_post_vendor_event (struct Scsi_Host *shost, u32 event_number, u32 data_len, char * data_buf, u64 vendor_id)”h]”jd)�”}”(hŒvvoid fc_host_post_vendor_event(struct Scsi_Host *shost, u32 event_number, u32 data_len, char *data_buf, u64 vendor_id)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjrh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´Mfubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjrh²hh³j„h´Mfubj�)�”}”(hŒfc_host_post_vendor_event”h]”j“)�”}”(hŒfc_host_post_vendor_event”h]”hŒfc_host_post_vendor_event”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj“ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjrh²hh³j„h´MfubjÊ)�”}”(hŒX(struct Scsi_Host *shost, u32 event_number, u32 data_len, char *data_buf, u64 vendor_id)”h]”(jÐ)�”}”(hŒstruct Scsi_Host *shost”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj¯ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj¯ubh)�”}”(hhh]”j“)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÎubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jÓŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j j™sbŒc.fc_host_post_vendor_event”†”asbuh1hhj¯ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj¯ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj¯ubj“)�”}”(hŒshost”h]”hŒshost”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj¯ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj«ubjÐ)�”}”(hŒu32 event_number”h]”(h)�”}”(hhh]”j“)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj%ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j*Œmodname”NŒ classname”Njôj÷)�”}”jú]”jíŒc.fc_host_post_vendor_event”†”asbuh1hhj!ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj!ubj“)�”}”(hŒ event_number”h]”hŒ event_number”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj!ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj«ubjÐ)�”}”(hŒ u32 data_len”h]”(h)�”}”(hhh]”j“)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjmubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jrŒmodname”NŒ classname”Njôj÷)�”}”jú]”jíŒc.fc_host_post_vendor_event”†”asbuh1hhjiubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjiubj“)�”}”(hŒdata_len”h]”hŒdata_len”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjiubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj«ubjÐ)�”}”(hŒchar *data_buf”h]”(j’)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj±ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj±ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj±ubj“)�”}”(hŒdata_buf”h]”hŒdata_buf”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj±ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj«ubjÐ)�”}”(hŒ u64 vendor_id”h]”(h)�”}”(hhh]”j“)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj÷ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jüŒmodname”NŒ classname”Njôj÷)�”}”jú]”jíŒc.fc_host_post_vendor_event”†”asbuh1hhjóubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjóubj“)�”}”(hŒ vendor_id”h]”hŒ vendor_id”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjóubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj«ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjrh²hh³j„h´Mfubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjnh²hh³j„h´Mfubah}”(h]”jiah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j„h´Mfhjkh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ2called to post a vendor unique event on an fc_host”h]”hŒ2called to post a vendor unique event on an fc_host”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´MfhjMh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjkh²hh³j„h´Mfubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjhjäjhjå‰jæ‰jç‰uh1jXh²hhj«h³Nh´Nubjé)�”}”(hXf**Parameters** ``struct Scsi_Host *shost`` host the event occurred on ``u32 event_number`` fc event number obtained from get_fc_event_number() ``u32 data_len`` amount, in bytes, of vendor unique data ``char * data_buf`` pointer to vendor unique data ``u64 vendor_id`` Vendor id **Notes** This routine assumes no locks are held on entry.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjrh]”hŒ Parameters”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjpubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´Mjhjlubj7)�”}”(hhh]”(j<)�”}”(hŒ7``struct Scsi_Host *shost`` host the event occurred on ”h]”(jB)�”}”(hŒ``struct Scsi_Host *shost``”h]”jH)�”}”(hj‘h]”hŒstruct Scsi_Host *shost”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´Mhhj‹ubj^)�”}”(hhh]”hì)�”}”(hŒhost the event occurred on”h]”hŒhost the event occurred on”…”�”}”(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ŒI``u32 event_number`` fc event number obtained from get_fc_event_number() ”h]”(jB)�”}”(hŒ``u32 event_number``”h]”jH)�”}”(hjÊh]”hŒu32 event_number”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjÈubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´MihjÄubj^)�”}”(hhh]”hì)�”}”(hŒ3fc event number obtained from get_fc_event_number()”h]”hŒ3fc event number obtained from get_fc_event_number()”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jßh´Mihjàubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÄubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jßh´Mihjˆubj<)�”}”(hŒ9``u32 data_len`` amount, in bytes, of vendor unique data ”h]”(jB)�”}”(hŒ``u32 data_len``”h]”jH)�”}”(hjh]”hŒ u32 data_len”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´Mjhjýubj^)�”}”(hhh]”hì)�”}”(hŒ'amount, in bytes, of vendor unique data”h]”hŒ'amount, in bytes, of vendor unique data”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jh´Mjhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjýubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jh´Mjhjˆubj<)�”}”(hŒ2``char * data_buf`` pointer to vendor unique data ”h]”(jB)�”}”(hŒ``char * data_buf``”h]”jH)�”}”(hj<h]”hŒchar * data_buf”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´Mkhj6ubj^)�”}”(hhh]”hì)�”}”(hŒpointer to vendor unique data”h]”hŒpointer to vendor unique data”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jQh´MkhjRubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jQh´Mkhjˆubj<)�”}”(hŒ``u64 vendor_id`` Vendor id ”h]”(jB)�”}”(hŒ``u64 vendor_id``”h]”jH)�”}”(hjuh]”hŒ u64 vendor_id”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjsubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´Mlhjoubj^)�”}”(hhh]”hì)�”}”(hŒ Vendor id”h]”hŒ Vendor id”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jŠh´Mlhj‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjoubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jŠh´Mlhjˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjlubhì)�”}”(hŒ **Notes**”h]”jó)�”}”(hj°h]”hŒNotes”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj®ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´Mnhjlubjt)�”}”(hŒ0This routine assumes no locks are held on entry.”h]”hì)�”}”(hjÈh]”hŒ0This routine assumes no locks are held on entry.”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´MnhjÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jsh³j×h´Mnhjlubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj«h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ"fc_find_rport_by_wwpn (C function)”Œc.fc_find_rport_by_wwpn”hNt”auh1jGhj«h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒKstruct fc_rport * fc_find_rport_by_wwpn (struct Scsi_Host *shost, u64 wwpn)”h]”jd)�”}”(hŒIstruct fc_rport *fc_find_rport_by_wwpn(struct Scsi_Host *shost, u64 wwpn)”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjúh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´M{ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjúh²hh³j h´M{ubh)�”}”(hhh]”j“)�”}”(hŒfc_rport”h]”hŒfc_rport”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j Œfc_find_rport_by_wwpn”sbŒc.fc_find_rport_by_wwpn”†”asbuh1hhjúh²hh³j h´M{ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjúh²hh³j h´M{ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjúh²hh³j h´M{ubj�)�”}”(hŒfc_find_rport_by_wwpn”h]”j“)�”}”(hj;h]”hŒfc_find_rport_by_wwpn”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjYubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjúh²hh³j h´M{ubjÊ)�”}”(hŒ#(struct Scsi_Host *shost, u64 wwpn)”h]”(jÐ)�”}”(hŒstruct Scsi_Host *shost”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjtubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjtubh)�”}”(hhh]”j“)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj“ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j˜Œmodname”NŒ classname”Njôj÷)�”}”jú]”j9Œc.fc_find_rport_by_wwpn”†”asbuh1hhjtubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjtubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjtubj“)�”}”(hŒshost”h]”hŒshost”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjtubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjpubjÐ)�”}”(hŒu64 wwpn”h]”(h)�”}”(hhh]”j“)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjèubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jíŒmodname”NŒ classname”Njôj÷)�”}”jú]”j9Œc.fc_find_rport_by_wwpn”†”asbuh1hhjäubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjäubj“)�”}”(hŒwwpn”h]”hŒwwpn”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjäubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjpubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjúh²hh³j h´M{ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjöh²hh³j h´M{ubah}”(h]”jñah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j h´M{hjóh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ*find the fc_rport pointer for a given wwpn”h]”hŒ*find the fc_rport pointer for a given wwpn”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´M{hj>h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjóh²hh³j h´M{ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjYjäjYjå‰jæ‰jç‰uh1jXh²hhj«h³Nh´Nubjé)�”}”(hŒÀ**Parameters** ``struct Scsi_Host *shost`` host the fc_rport is associated with ``u64 wwpn`` wwpn of the fc_rport device **Notes** This routine assumes no locks are held on entry.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjch]”hŒ Parameters”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjaubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´Mhj]ubj7)�”}”(hhh]”(j<)�”}”(hŒA``struct Scsi_Host *shost`` host the fc_rport is associated with ”h]”(jB)�”}”(hŒ``struct Scsi_Host *shost``”h]”jH)�”}”(hj‚h]”hŒstruct Scsi_Host *shost”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´M|hj|ubj^)�”}”(hhh]”hì)�”}”(hŒ$host the fc_rport is associated with”h]”hŒ$host the fc_rport is associated with”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j—h´M|hj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j—h´M|hjyubj<)�”}”(hŒ)``u64 wwpn`` wwpn of the fc_rport device ”h]”(jB)�”}”(hŒ ``u64 wwpn``”h]”jH)�”}”(hj»h]”hŒu64 wwpn”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´M}hjµubj^)�”}”(hhh]”hì)�”}”(hŒwwpn of the fc_rport device”h]”hŒwwpn of the fc_rport device”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÐh´M}hjÑubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjµubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jÐh´M}hjyubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hj]ubhì)�”}”(hŒ **Notes**”h]”jó)�”}”(hjöh]”hŒNotes”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjôubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´Mhj]ubjt)�”}”(hŒ0This routine assumes no locks are held on entry.”h]”hì)�”}”(hjh]”hŒ0This routine assumes no locks are held on entry.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´Mhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jsh³jh´Mhj]ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj«h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒfc_host_fpin_rcv (C function)”Œc.fc_host_fpin_rcv”hNt”auh1jGhj«h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒcvoid fc_host_fpin_rcv (struct Scsi_Host *shost, u32 fpin_len, char *fpin_buf, u8 event_acknowledge)”h]”jd)�”}”(hŒbvoid fc_host_fpin_rcv(struct Scsi_Host *shost, u32 fpin_len, char *fpin_buf, u8 event_acknowledge)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj@h²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´Myubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj@h²hh³jRh´Myubj�)�”}”(hŒfc_host_fpin_rcv”h]”j“)�”}”(hŒfc_host_fpin_rcv”h]”hŒfc_host_fpin_rcv”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjaubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj@h²hh³jRh´MyubjÊ)�”}”(hŒM(struct Scsi_Host *shost, u32 fpin_len, char *fpin_buf, u8 event_acknowledge)”h]”(jÐ)�”}”(hŒstruct Scsi_Host *shost”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj}ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj}ubh)�”}”(hhh]”j“)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjœubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j¡Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jgsbŒc.fc_host_fpin_rcv”†”asbuh1hhj}ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj}ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj}ubj“)�”}”(hŒshost”h]”hŒshost”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj}ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjyubjÐ)�”}”(hŒ u32 fpin_len”h]”(h)�”}”(hhh]”j“)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjóubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jøŒmodname”NŒ classname”Njôj÷)�”}”jú]”j»Œc.fc_host_fpin_rcv”†”asbuh1hhjïubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjïubj“)�”}”(hŒfpin_len”h]”hŒfpin_len”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjïubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjyubjÐ)�”}”(hŒchar *fpin_buf”h]”(j’)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj7ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj7ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj7ubj“)�”}”(hŒfpin_buf”h]”hŒfpin_buf”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjyubjÐ)�”}”(hŒu8 event_acknowledge”h]”(h)�”}”(hhh]”j“)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj}ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j‚Œmodname”NŒ classname”Njôj÷)�”}”jú]”j»Œc.fc_host_fpin_rcv”†”asbuh1hhjyubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjyubj“)�”}”(hŒevent_acknowledge”h]”hŒevent_acknowledge”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjyubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjyubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhj@h²hh³jRh´Myubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj<h²hh³jRh´Myubah}”(h]”j7ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jRh´Myhj9h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ#routine to process a received FPIN.”h]”hŒ#routine to process a received FPIN.”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´MyhjÓh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj9h²hh³jRh´Myubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjîjäjîjå‰jæ‰jç‰uh1jXh²hhj«h³Nh´Nubjé)�”}”(hX+**Parameters** ``struct Scsi_Host *shost`` host the FPIN was received on ``u32 fpin_len`` length of FPIN payload, in bytes ``char *fpin_buf`` pointer to FPIN payload ``u8 event_acknowledge`` 1, if LLDD handles this event. **Notes** This routine assumes no locks are held on entry.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjøh]”hŒ Parameters”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjöubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´M}hjòubj7)�”}”(hhh]”(j<)�”}”(hŒ:``struct Scsi_Host *shost`` host the FPIN was received on ”h]”(jB)�”}”(hŒ``struct Scsi_Host *shost``”h]”jH)�”}”(hjh]”hŒstruct Scsi_Host *shost”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´Mzhjubj^)�”}”(hhh]”hì)�”}”(hŒhost the FPIN was received on”h]”hŒhost the FPIN was received on”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j,h´Mzhj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j,h´Mzhjubj<)�”}”(hŒ2``u32 fpin_len`` length of FPIN payload, in bytes ”h]”(jB)�”}”(hŒ``u32 fpin_len``”h]”jH)�”}”(hjPh]”hŒ u32 fpin_len”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjNubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´M{hjJubj^)�”}”(hhh]”hì)�”}”(hŒ length of FPIN payload, in bytes”h]”hŒ length of FPIN payload, in bytes”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jeh´M{hjfubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjJubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jeh´M{hjubj<)�”}”(hŒ+``char *fpin_buf`` pointer to FPIN payload ”h]”(jB)�”}”(hŒ``char *fpin_buf``”h]”jH)�”}”(hj‰h]”hŒchar *fpin_buf”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´M|hjƒubj^)�”}”(hhh]”hì)�”}”(hŒpointer to FPIN payload”h]”hŒpointer to FPIN payload”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jžh´M|hjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jžh´M|hjubj<)�”}”(hŒ8``u8 event_acknowledge`` 1, if LLDD handles this event. ”h]”(jB)�”}”(hŒ``u8 event_acknowledge``”h]”jH)�”}”(hjÂh]”hŒu8 event_acknowledge”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´M}hj¼ubj^)�”}”(hhh]”hì)�”}”(hŒ1, if LLDD handles this event.”h]”hŒ1, if LLDD handles this event.”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j×h´M}hjØubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj¼ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j×h´M}hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjòubhì)�”}”(hŒ **Notes**”h]”jó)�”}”(hjýh]”hŒNotes”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjûubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´Mhjòubjt)�”}”(hŒ0This routine assumes no locks are held on entry.”h]”hì)�”}”(hjh]”hŒ0This routine assumes no locks are held on entry.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´M~hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jsh³j$h´M~hjòubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj«h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒfc_eh_timed_out (C function)”Œc.fc_eh_timed_out”hNt”auh1jGhj«h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒAenum scsi_timeout_action fc_eh_timed_out (struct scsi_cmnd *scmd)”h]”jd)�”}”(hŒ@enum scsi_timeout_action fc_eh_timed_out(struct scsi_cmnd *scmd)”h]”(jj)�”}”(hjf9h]”hŒenum”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjGh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´Mö ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjGh²hh³jXh´Mö ubh)�”}”(hhh]”j“)�”}”(hŒscsi_timeout_action”h]”hŒscsi_timeout_action”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjgubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jlŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j Œfc_eh_timed_out”sbŒc.fc_eh_timed_out”†”asbuh1hhjGh²hh³jXh´Mö ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjGh²hh³jXh´Mö ubj�)�”}”(hŒfc_eh_timed_out”h]”j“)�”}”(hjˆh]”hŒfc_eh_timed_out”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj™ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjGh²hh³jXh´Mö ubjÊ)�”}”(hŒ(struct scsi_cmnd *scmd)”h]”jÐ)�”}”(hŒstruct scsi_cmnd *scmd”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj´ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj´ubh)�”}”(hhh]”j“)�”}”(hŒ scsi_cmnd”h]”hŒ scsi_cmnd”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÓubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jØŒmodname”NŒ classname”Njôj÷)�”}”jú]”j†Œc.fc_eh_timed_out”†”asbuh1hhj´ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj´ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj´ubj“)�”}”(hŒscmd”h]”hŒscmd”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj´ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj°ubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjGh²hh³jXh´Mö ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjCh²hh³jXh´Mö ubah}”(h]”j>ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jXh´Mö hj@h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ*FC Transport I/O timeout intercept handler”h]”hŒ*FC Transport I/O timeout intercept handler”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´Mö hj6h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj@h²hh³jXh´Mö ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjQjäjQjå‰jæ‰jç‰uh1jXh²hhj«h³Nh´Nubjé)�”}”(hXô**Parameters** ``struct scsi_cmnd *scmd`` The SCSI command which timed out **Description** This routine protects against error handlers getting invoked while a rport is in a blocked state, typically due to a temporarily loss of connectivity. If the error handlers are allowed to proceed, requests to abort i/o, reset the target, etc will likely fail as there is no way to communicate with the device to perform the requested function. These failures may result in the midlayer taking the device offline, requiring manual intervention to restore operation. This routine, called whenever an i/o times out, validates the state of the underlying rport. If the rport is blocked, it returns EH_RESET_TIMER, which will continue to reschedule the timeout. Eventually, either the device will return, or devloss_tmo will fire, and when the timeout then fires, it will be handled normally. If the rport is not blocked, normal error handling continues. **Notes** This routine assumes no locks are held on entry.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj[h]”hŒ Parameters”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjYubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´Mú hjUubj7)�”}”(hhh]”j<)�”}”(hŒ<``struct scsi_cmnd *scmd`` The SCSI command which timed out ”h]”(jB)�”}”(hŒ``struct scsi_cmnd *scmd``”h]”jH)�”}”(hjzh]”hŒstruct scsi_cmnd *scmd”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjxubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´M÷ hjtubj^)�”}”(hhh]”hì)�”}”(hŒ The SCSI command which timed out”h]”hŒ The SCSI command which timed out”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j�h´M÷ hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjtubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j�h´M÷ hjqubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjUubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjµh]”hŒ Description”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj³ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´Mù hjUubhì)�”}”(hXÐThis routine protects against error handlers getting invoked while a rport is in a blocked state, typically due to a temporarily loss of connectivity. If the error handlers are allowed to proceed, requests to abort i/o, reset the target, etc will likely fail as there is no way to communicate with the device to perform the requested function. These failures may result in the midlayer taking the device offline, requiring manual intervention to restore operation.”h]”hXÐThis routine protects against error handlers getting invoked while a rport is in a blocked state, typically due to a temporarily loss of connectivity. If the error handlers are allowed to proceed, requests to abort i/o, reset the target, etc will likely fail as there is no way to communicate with the device to perform the requested function. These failures may result in the midlayer taking the device offline, requiring manual intervention to restore operation.”…”�”•}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´Mø hjUubhì)�”}”(hX€This routine, called whenever an i/o times out, validates the state of the underlying rport. If the rport is blocked, it returns EH_RESET_TIMER, which will continue to reschedule the timeout. Eventually, either the device will return, or devloss_tmo will fire, and when the timeout then fires, it will be handled normally. If the rport is not blocked, normal error handling continues.”h]”hX€This routine, called whenever an i/o times out, validates the state of the underlying rport. If the rport is blocked, it returns EH_RESET_TIMER, which will continue to reschedule the timeout. Eventually, either the device will return, or devloss_tmo will fire, and when the timeout then fires, it will be handled normally. If the rport is not blocked, normal error handling continues.”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´M hjUubhì)�”}”(hŒ **Notes**”h]”jó)�”}”(hjëh]”hŒNotes”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjéubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´M hjUubjt)�”}”(hŒ0This routine assumes no locks are held on entry.”h]”hì)�”}”(hjh]”hŒ0This routine assumes no locks are held on entry.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´M hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jsh³jh´M hjUubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj«h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒfc_remove_host (C function)”Œc.fc_remove_host”hNt”auh1jGhj«h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ-void fc_remove_host (struct Scsi_Host *shost)”h]”jd)�”}”(hŒ,void fc_remove_host(struct Scsi_Host *shost)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj5h²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´MV ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj5h²hh³jGh´MV ubj�)�”}”(hŒfc_remove_host”h]”j“)�”}”(hŒfc_remove_host”h]”hŒfc_remove_host”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjVubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj5h²hh³jGh´MV ubjÊ)�”}”(hŒ(struct Scsi_Host *shost)”h]”jÐ)�”}”(hŒstruct Scsi_Host *shost”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjrubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjrubh)�”}”(hhh]”j“)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj‘ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j–Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j j\sbŒc.fc_remove_host”†”asbuh1hhjrubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjrubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjrubj“)�”}”(hŒshost”h]”hŒshost”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjrubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjnubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhj5h²hh³jGh´MV ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj1h²hh³jGh´MV ubah}”(h]”j,ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jGh´MV hj.h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒFcalled to terminate any fc_transport-related elements for a scsi host.”h]”hŒFcalled to terminate any fc_transport-related elements for a scsi host.”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´MV hjöh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj.h²hh³jGh´MV ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjjäjjå‰jæ‰jç‰uh1jXh²hhj«h³Nh´Nubjé)�”}”(hXð**Parameters** ``struct Scsi_Host *shost`` Which :c:type:`Scsi_Host` **Description** This routine is expected to be called immediately preceding the a driver's call to scsi_remove_host(). WARNING: A driver utilizing the fc_transport, which fails to call this routine prior to scsi_remove_host(), will leave dangling objects in /sys/class/fc_remote_ports. Access to any of these objects can result in a system crash !!! **Notes** This routine assumes no locks are held on entry.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´MZ hjubj7)�”}”(hhh]”j<)�”}”(hŒ6``struct Scsi_Host *shost`` Which :c:type:`Scsi_Host` ”h]”(jB)�”}”(hŒ``struct Scsi_Host *shost``”h]”jH)�”}”(hj:h]”hŒstruct Scsi_Host *shost”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´MW hj4ubj^)�”}”(hhh]”hì)�”}”(hŒWhich :c:type:`Scsi_Host`”h]”(hŒWhich ”…”�”}”(hjSh²hh³Nh´Nubh)�”}”(hŒ:c:type:`Scsi_Host`”h]”jH)�”}”(hj]h]”hŒ Scsi_Host”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”(jâjÝŒc-type”eh"]”h$]”h&]”uh1jGhj[ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jîŒ refdomain”jÝŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jôjøjüŒ Scsi_Host”uh1hh³jOh´MW hjSubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jOh´MW hjPubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jOh´MW hj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hj”h]”hŒ Description”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´MY hjubhì)�”}”(hŒfThis routine is expected to be called immediately preceding the a driver's call to scsi_remove_host().”h]”hŒhThis routine is expected to be called immediately preceding the a driver’s call to scsi_remove_host().”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´MX hjubj7)�”}”(hhh]”j<)�”}”(hŒçWARNING: A driver utilizing the fc_transport, which fails to call this routine prior to scsi_remove_host(), will leave dangling objects in /sys/class/fc_remote_ports. Access to any of these objects can result in a system crash !!! ”h]”(jB)�”}”(hŒAWARNING: A driver utilizing the fc_transport, which fails to call”h]”hŒAWARNING: A driver utilizing the fc_transport, which fails to call”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´M^ hj¼ubj^)�”}”(hhh]”hì)�”}”(hŒ¤this routine prior to scsi_remove_host(), will leave dangling objects in /sys/class/fc_remote_ports. Access to any of these objects can result in a system crash !!!”h]”hŒ¤this routine prior to scsi_remove_host(), will leave dangling objects in /sys/class/fc_remote_ports. Access to any of these objects can result in a system crash !!!”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.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&]”uh1j6hjubhì)�”}”(hŒ **Notes**”h]”jó)�”}”(hjõh]”hŒNotes”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjóubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´M` hjubjt)�”}”(hŒ0This routine assumes no locks are held on entry.”h]”hì)�”}”(hj h]”hŒ0This routine assumes no locks are held on entry.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´Ma hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jsh³jh´Ma hjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj«h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒfc_remote_port_add (C function)”Œc.fc_remote_port_add”hNt”auh1jGhj«h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒmstruct fc_rport * fc_remote_port_add (struct Scsi_Host *shost, int channel, struct fc_rport_identifiers *ids)”h]”jd)�”}”(hŒkstruct fc_rport *fc_remote_port_add(struct Scsi_Host *shost, int channel, struct fc_rport_identifiers *ids)”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj?h²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´Mz ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj?h²hh³jPh´Mz ubh)�”}”(hhh]”j“)�”}”(hŒfc_rport”h]”hŒfc_rport”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj_ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jdŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j Œfc_remote_port_add”sbŒc.fc_remote_port_add”†”asbuh1hhj?h²hh³jPh´Mz ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj?h²hh³jPh´Mz ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj?h²hh³jPh´Mz ubj�)�”}”(hŒfc_remote_port_add”h]”j“)�”}”(hj€h]”hŒfc_remote_port_add”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjžubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj?h²hh³jPh´Mz ubjÊ)�”}”(hŒH(struct Scsi_Host *shost, int channel, struct fc_rport_identifiers *ids)”h]”(jÐ)�”}”(hŒstruct Scsi_Host *shost”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj¹ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj¹ubh)�”}”(hhh]”j“)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjØubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jÝŒmodname”NŒ classname”Njôj÷)�”}”jú]”j~Œc.fc_remote_port_add”†”asbuh1hhj¹ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj¹ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj¹ubj“)�”}”(hŒshost”h]”hŒshost”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj¹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjµubjÐ)�”}”(hŒ int channel”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj)ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj)ubj“)�”}”(hŒchannel”h]”hŒchannel”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj)ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjµubjÐ)�”}”(hŒ struct fc_rport_identifiers *ids”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj^ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj^ubh)�”}”(hhh]”j“)�”}”(hŒfc_rport_identifiers”h]”hŒfc_rport_identifiers”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj}ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j‚Œmodname”NŒ classname”Njôj÷)�”}”jú]”j~Œc.fc_remote_port_add”†”asbuh1hhj^ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj^ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj^ubj“)�”}”(hŒids”h]”hŒids”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj^ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjµubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhj?h²hh³jPh´Mz ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj;h²hh³jPh´Mz ubah}”(h]”j6ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jPh´Mz hj8h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ9notify fc transport of the existence of a remote FC port.”h]”hŒ9notify fc transport of the existence of a remote FC port.”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´Mz hjàh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj8h²hh³jPh´Mz ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjûjäjûjå‰jæ‰jç‰uh1jXh²hhj«h³Nh´Nubjé)�”}”(hX’**Parameters** ``struct Scsi_Host *shost`` scsi host the remote port is connected to. ``int channel`` Channel on shost port connected to. ``struct fc_rport_identifiers *ids`` The world wide names, fc address, and FC4 port roles for the remote port. **Description** The LLDD calls this routine to notify the transport of the existence of a remote port. The LLDD provides the unique identifiers (wwpn,wwn) of the port, it's FC address (port_id), and the FC4 roles that are active for the port. For ports that are FCP targets (aka scsi targets), the FC transport maintains consistent target id bindings on behalf of the LLDD. A consistent target id binding is an assignment of a target id to a remote port identifier, which persists while the scsi host is attached. The remote port can disappear, then later reappear, and it's target id assignment remains the same. This allows for shifts in FC addressing (if binding by wwpn or wwnn) with no apparent changes to the scsi subsystem which is based on scsi host number and target id values. Bindings are only valid during the attachment of the scsi host. If the host detaches, then later re-attaches, target id bindings may change. This routine is responsible for returning a remote port structure. The routine will search the list of remote ports it maintains internally on behalf of consistent target id mappings. If found, the remote port structure will be reused. Otherwise, a new remote port structure will be allocated. Whenever a remote port is allocated, a new fc_remote_port class device is created. Should not be called from interrupt context. **Notes** This routine assumes no locks are held on entry.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj h]”hŒ Parameters”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´M~ hjÿubj7)�”}”(hhh]”(j<)�”}”(hŒG``struct Scsi_Host *shost`` scsi host the remote port is connected to. ”h]”(jB)�”}”(hŒ``struct Scsi_Host *shost``”h]”jH)�”}”(hj$ h]”hŒstruct Scsi_Host *shost”…”�”}”(hj& h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj" ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´M{ hj ubj^)�”}”(hhh]”hì)�”}”(hŒ*scsi host the remote port is connected to.”h]”hŒ*scsi host the remote port is connected to.”…”�”}”(hj= h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j9 h´M{ hj: ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j9 h´M{ hj ubj<)�”}”(hŒ4``int channel`` Channel on shost port connected to. ”h]”(jB)�”}”(hŒ``int channel``”h]”jH)�”}”(hj] h]”hŒ int channel”…”�”}”(hj_ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj[ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´M| hjW ubj^)�”}”(hhh]”hì)�”}”(hŒ#Channel on shost port connected to.”h]”hŒ#Channel on shost port connected to.”…”�”}”(hjv h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jr h´M| hjs ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjW ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jr h´M| hj ubj<)�”}”(hŒo``struct fc_rport_identifiers *ids`` The world wide names, fc address, and FC4 port roles for the remote port. ”h]”(jB)�”}”(hŒ$``struct fc_rport_identifiers *ids``”h]”jH)�”}”(hj– h]”hŒ struct fc_rport_identifiers *ids”…”�”}”(hj˜ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj” ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´M~ hj� ubj^)�”}”(hhh]”hì)�”}”(hŒIThe world wide names, fc address, and FC4 port roles for the remote port.”h]”hŒIThe world wide names, fc address, and FC4 port roles for the remote port.”…”�”}”(hj¯ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´M} hj¬ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj� ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j« h´M~ hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjÿubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjÒ h]”hŒ Description”…”�”}”(hjÔ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÐ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´M€ hjÿubhì)�”}”(hŒâThe LLDD calls this routine to notify the transport of the existence of a remote port. The LLDD provides the unique identifiers (wwpn,wwn) of the port, it's FC address (port_id), and the FC4 roles that are active for the port.”h]”hŒäThe LLDD calls this routine to notify the transport of the existence of a remote port. The LLDD provides the unique identifiers (wwpn,wwn) of the port, it’s FC address (port_id), and the FC4 roles that are active for the port.”…”�”}”(hjè h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´M hjÿubhì)�”}”(hX­For ports that are FCP targets (aka scsi targets), the FC transport maintains consistent target id bindings on behalf of the LLDD. A consistent target id binding is an assignment of a target id to a remote port identifier, which persists while the scsi host is attached. The remote port can disappear, then later reappear, and it's target id assignment remains the same. This allows for shifts in FC addressing (if binding by wwpn or wwnn) with no apparent changes to the scsi subsystem which is based on scsi host number and target id values. Bindings are only valid during the attachment of the scsi host. If the host detaches, then later re-attaches, target id bindings may change.”h]”hX¯For ports that are FCP targets (aka scsi targets), the FC transport maintains consistent target id bindings on behalf of the LLDD. A consistent target id binding is an assignment of a target id to a remote port identifier, which persists while the scsi host is attached. The remote port can disappear, then later reappear, and it’s target id assignment remains the same. This allows for shifts in FC addressing (if binding by wwpn or wwnn) with no apparent changes to the scsi subsystem which is based on scsi host number and target id values. Bindings are only valid during the attachment of the scsi host. If the host detaches, then later re-attaches, target id bindings may change.”…”�”}”(hj÷ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´M„ hjÿubhì)�”}”(hX%This routine is responsible for returning a remote port structure. The routine will search the list of remote ports it maintains internally on behalf of consistent target id mappings. If found, the remote port structure will be reused. Otherwise, a new remote port structure will be allocated.”h]”hX%This routine is responsible for returning a remote port structure. The routine will search the list of remote ports it maintains internally on behalf of consistent target id mappings. If found, the remote port structure will be reused. Otherwise, a new remote port structure will be allocated.”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´M� hjÿubhì)�”}”(hŒRWhenever a remote port is allocated, a new fc_remote_port class device is created.”h]”hŒRWhenever a remote port is allocated, a new fc_remote_port class device is created.”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´M– hjÿubhì)�”}”(hŒ,Should not be called from interrupt context.”h]”hŒ,Should not be called from interrupt context.”…”�”}”(hj$!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´M™ hjÿubhì)�”}”(hŒ **Notes**”h]”jó)�”}”(hj5!h]”hŒNotes”…”�”}”(hj7!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj3!ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´M› hjÿubjt)�”}”(hŒ0This routine assumes no locks are held on entry.”h]”hì)�”}”(hjM!h]”hŒ0This routine assumes no locks are held on entry.”…”�”}”(hjO!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´Mœ hjK!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jsh³j\!h´Mœ hjÿubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj«h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ"fc_remote_port_delete (C function)”Œc.fc_remote_port_delete”hNt”auh1jGhj«h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ3void fc_remote_port_delete (struct fc_rport *rport)”h]”jd)�”}”(hŒ2void fc_remote_port_delete(struct fc_rport *rport)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjƒ!h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj!h²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´MW ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’!h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj!h²hh³j‘!h´MW ubj�)�”}”(hŒfc_remote_port_delete”h]”j“)�”}”(hŒfc_remote_port_delete”h]”hŒfc_remote_port_delete”…”�”}”(hj¤!h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj !ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj!h²hh³j‘!h´MW ubjÊ)�”}”(hŒ(struct fc_rport *rport)”h]”jÐ)�”}”(hŒstruct fc_rport *rport”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjÀ!h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj¼!ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍ!h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj¼!ubh)�”}”(hhh]”j“)�”}”(hŒfc_rport”h]”hŒfc_rport”…”�”}”(hjÞ!h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÛ!ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jà!Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j j¦!sbŒc.fc_remote_port_delete”†”asbuh1hhj¼!ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþ!h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj¼!ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj "h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj¼!ubj“)�”}”(hŒrport”h]”hŒrport”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj¼!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´MW ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj{!h²hh³j‘!h´MW ubah}”(h]”jv!ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j‘!h´MW hjx!h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒGnotifies the fc transport that a remote port is no longer in existence.”h]”hŒGnotifies the fc transport that a remote port is no longer in existence.”…”�”}”(hjC"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´MW hj@"h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjx!h²hh³j‘!h´MW ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj["jäj["jå‰jæ‰jç‰uh1jXh²hhj«h³Nh´Nubjé)�”}”(hXæ **Parameters** ``struct fc_rport *rport`` The remote port that no longer exists **Description** The LLDD calls this routine to notify the transport that a remote port is no longer part of the topology. Note: Although a port may no longer be part of the topology, it may persist in the remote ports displayed by the fc_host. We do this under 2 conditions: 1) If the port was a scsi target, we delay its deletion by "blocking" it. This allows the port to temporarily disappear, then reappear without disrupting the SCSI device tree attached to it. During the "blocked" period the port will still exist. 2) If the port was a scsi target and disappears for longer than we expect, we'll delete the port and the tear down the SCSI device tree attached to it. However, we want to semi-persist the target id assigned to that port if it eventually does exist. The port structure will remain (although with minimal information) so that the target id bindings also remain. If the remote port is not an FCP Target, it will be fully torn down and deallocated, including the fc_remote_port class device. If the remote port is an FCP Target, the port will be placed in a temporary blocked state. From the LLDD's perspective, the rport no longer exists. From the SCSI midlayer's perspective, the SCSI target exists, but all sdevs on it are blocked from further I/O. The following is then expected. If the remote port does not return (signaled by a LLDD call to fc_remote_port_add()) within the dev_loss_tmo timeout, then the scsi target is removed - killing all outstanding i/o and removing the scsi devices attached to it. The port structure will be marked Not Present and be partially cleared, leaving only enough information to recognize the remote port relative to the scsi target id binding if it later appears. The port will remain as long as there is a valid binding (e.g. until the user changes the binding type or unloads the scsi host with the binding). If the remote port returns within the dev_loss_tmo value (and matches according to the target id binding type), the port structure will be reused. If it is no longer a SCSI target, the target will be torn down. If it continues to be a SCSI target, then the target will be unblocked (allowing i/o to be resumed), and a scan will be activated to ensure that all luns are detected. Called from normal process context only - cannot be called from interrupt. **Notes** This routine assumes no locks are held on entry.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hje"h]”hŒ Parameters”…”�”}”(hjg"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjc"ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´M[ hj_"ubj7)�”}”(hhh]”j<)�”}”(hŒA``struct fc_rport *rport`` The remote port that no longer exists ”h]”(jB)�”}”(hŒ``struct fc_rport *rport``”h]”jH)�”}”(hj„"h]”hŒstruct fc_rport *rport”…”�”}”(hj†"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj‚"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´MX hj~"ubj^)�”}”(hhh]”hì)�”}”(hŒ%The remote port that no longer exists”h]”hŒ%The remote port that no longer exists”…”�”}”(hj�"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j™"h´MX hjš"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj~"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j™"h´MX hj{"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj_"ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hj¿"h]”hŒ Description”…”�”}”(hjÁ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj½"ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´MZ hj_"ubhì)�”}”(hXThe LLDD calls this routine to notify the transport that a remote port is no longer part of the topology. Note: Although a port may no longer be part of the topology, it may persist in the remote ports displayed by the fc_host. We do this under 2 conditions:”h]”hXThe LLDD calls this routine to notify the transport that a remote port is no longer part of the topology. Note: Although a port may no longer be part of the topology, it may persist in the remote ports displayed by the fc_host. We do this under 2 conditions:”…”�”}”(hjÕ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´MY hj_"ubhŒenumerated_list”“”)�”}”(hhh]”(jY)�”}”(hŒóIf the port was a scsi target, we delay its deletion by "blocking" it. This allows the port to temporarily disappear, then reappear without disrupting the SCSI device tree attached to it. During the "blocked" period the port will still exist. ”h]”hì)�”}”(hŒòIf the port was a scsi target, we delay its deletion by "blocking" it. This allows the port to temporarily disappear, then reappear without disrupting the SCSI device tree attached to it. During the "blocked" period the port will still exist.”h]”hŒúIf the port was a scsi target, we delay its deletion by “blockingâ€� it. This allows the port to temporarily disappear, then reappear without disrupting the SCSI device tree attached to it. During the “blockedâ€� period the port will still exist.”…”�”}”(hjí"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´M^ hjé"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jXhjæ"ubjY)�”}”(hXfIf the port was a scsi target and disappears for longer than we expect, we'll delete the port and the tear down the SCSI device tree attached to it. However, we want to semi-persist the target id assigned to that port if it eventually does exist. The port structure will remain (although with minimal information) so that the target id bindings also remain. ”h]”hì)�”}”(hXeIf the port was a scsi target and disappears for longer than we expect, we'll delete the port and the tear down the SCSI device tree attached to it. However, we want to semi-persist the target id assigned to that port if it eventually does exist. The port structure will remain (although with minimal information) so that the target id bindings also remain.”h]”hXgIf the port was a scsi target and disappears for longer than we expect, we’ll delete the port and the tear down the SCSI device tree attached to it. However, we want to semi-persist the target id assigned to that port if it eventually does exist. The port structure will remain (although with minimal information) so that the target id bindings also remain.”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´Mc hj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jXhjæ"ubeh}”(h]”h ]”h"]”h$]”h&]”Œenumtype”Œarabic”Œprefix”hŒsuffix”jjuh1jä"hj_"ubhì)�”}”(hŒIf the remote port is not an FCP Target, it will be fully torn down and deallocated, including the fc_remote_port class device.”h]”hŒIf the remote port is not an FCP Target, it will be fully torn down and deallocated, including the fc_remote_port class device.”…”�”}”(hj%#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´Mj hj_"ubhì)�”}”(hX#If the remote port is an FCP Target, the port will be placed in a temporary blocked state. From the LLDD's perspective, the rport no longer exists. From the SCSI midlayer's perspective, the SCSI target exists, but all sdevs on it are blocked from further I/O. The following is then expected.”h]”hX'If the remote port is an FCP Target, the port will be placed in a temporary blocked state. From the LLDD’s perspective, the rport no longer exists. From the SCSI midlayer’s perspective, the SCSI target exists, but all sdevs on it are blocked from further I/O. The following is then expected.”…”�”}”(hj4#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´Mm hj_"ubjt)�”}”(hX³If the remote port does not return (signaled by a LLDD call to fc_remote_port_add()) within the dev_loss_tmo timeout, then the scsi target is removed - killing all outstanding i/o and removing the scsi devices attached to it. The port structure will be marked Not Present and be partially cleared, leaving only enough information to recognize the remote port relative to the scsi target id binding if it later appears. The port will remain as long as there is a valid binding (e.g. until the user changes the binding type or unloads the scsi host with the binding). If the remote port returns within the dev_loss_tmo value (and matches according to the target id binding type), the port structure will be reused. If it is no longer a SCSI target, the target will be torn down. If it continues to be a SCSI target, then the target will be unblocked (allowing i/o to be resumed), and a scan will be activated to ensure that all luns are detected. ”h]”(hì)�”}”(hX6If the remote port does not return (signaled by a LLDD call to fc_remote_port_add()) within the dev_loss_tmo timeout, then the scsi target is removed - killing all outstanding i/o and removing the scsi devices attached to it. The port structure will be marked Not Present and be partially cleared, leaving only enough information to recognize the remote port relative to the scsi target id binding if it later appears. The port will remain as long as there is a valid binding (e.g. until the user changes the binding type or unloads the scsi host with the binding).”h]”hX6If the remote port does not return (signaled by a LLDD call to fc_remote_port_add()) within the dev_loss_tmo timeout, then the scsi target is removed - killing all outstanding i/o and removing the scsi devices attached to it. The port structure will be marked Not Present and be partially cleared, leaving only enough information to recognize the remote port relative to the scsi target id binding if it later appears. The port will remain as long as there is a valid binding (e.g. until the user changes the binding type or unloads the scsi host with the binding).”…”�”}”(hjG#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´Ms hjC#ubhì)�”}”(hXzIf the remote port returns within the dev_loss_tmo value (and matches according to the target id binding type), the port structure will be reused. If it is no longer a SCSI target, the target will be torn down. If it continues to be a SCSI target, then the target will be unblocked (allowing i/o to be resumed), and a scan will be activated to ensure that all luns are detected.”h]”hXzIf the remote port returns within the dev_loss_tmo value (and matches according to the target id binding type), the port structure will be reused. If it is no longer a SCSI target, the target will be torn down. If it continues to be a SCSI target, then the target will be unblocked (allowing i/o to be resumed), and a scan will be activated to ensure that all luns are detected.”…”�”}”(hjV#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´M} hjC#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jsh³jU#h´Ms hj_"ubhì)�”}”(hŒJCalled from normal process context only - cannot be called from interrupt.”h]”hŒJCalled from normal process context only - cannot be called from interrupt.”…”�”}”(hjk#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´M„ hj_"ubhì)�”}”(hŒ **Notes**”h]”jó)�”}”(hj|#h]”hŒNotes”…”�”}”(hj~#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjz#ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´M† hj_"ubjt)�”}”(hŒ0This routine assumes no locks are held on entry.”h]”hì)�”}”(hj”#h]”hŒ0This routine assumes no locks are held on entry.”…”�”}”(hj–#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´M‡ hj’#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jsh³j£#h´M‡ hj_"ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj«h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ#fc_remote_port_rolechg (C function)”Œc.fc_remote_port_rolechg”hNt”auh1jGhj«h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ?void fc_remote_port_rolechg (struct fc_rport *rport, u32 roles)”h]”jd)�”}”(hŒ>void fc_remote_port_rolechg(struct fc_rport *rport, u32 roles)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÊ#h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjÆ#h²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´Mà ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙ#h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÆ#h²hh³jØ#h´Mà ubj�)�”}”(hŒfc_remote_port_rolechg”h]”j“)�”}”(hŒfc_remote_port_rolechg”h]”hŒfc_remote_port_rolechg”…”�”}”(hjë#h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjç#ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjÆ#h²hh³jØ#h´Mà ubjÊ)�”}”(hŒ#(struct fc_rport *rport, u32 roles)”h]”(jÐ)�”}”(hŒstruct fc_rport *rport”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj$ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj$ubh)�”}”(hhh]”j“)�”}”(hŒfc_rport”h]”hŒfc_rport”…”�”}”(hj%$h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj"$ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j'$Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jí#sbŒc.fc_remote_port_rolechg”†”asbuh1hhj$ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjE$h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj$ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjS$h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj$ubj“)�”}”(hŒrport”h]”hŒrport”…”�”}”(hj`$h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj$ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjÿ#ubjÐ)�”}”(hŒ u32 roles”h]”(h)�”}”(hhh]”j“)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj|$h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjy$ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j~$Œmodname”NŒ classname”Njôj÷)�”}”jú]”jA$Œc.fc_remote_port_rolechg”†”asbuh1hhju$ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjš$h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hju$ubj“)�”}”(hŒroles”h]”hŒroles”…”�”}”(hj¨$h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hju$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²ˆuh1jcj³j´hjÂ#h²hh³jØ#h´Mà ubah}”(h]”j½#ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jØ#h´Mà hj¿#h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒFnotifies the fc transport that the roles on a remote may have changed.”h]”hŒFnotifies the fc transport that the roles on a remote may have changed.”…”�”}”(hjÒ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´Mà hjÏ$h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj¿#h²hh³jØ#h´Mà ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjê$jäjê$jå‰jæ‰jç‰uh1jXh²hhj«h³Nh´Nubjé)�”}”(hX**Parameters** ``struct fc_rport *rport`` The remote port that changed. ``u32 roles`` New roles for this port. **Description** The LLDD calls this routine to notify the transport that the roles on a remote port may have changed. The largest effect of this is if a port now becomes a FCP Target, it must be allocated a scsi target id. If the port is no longer a FCP target, any scsi target id value assigned to it will persist in case the role changes back to include FCP Target. No changes in the scsi midlayer will be invoked if the role changes (in the expectation that the role will be resumed. If it doesn't normal error processing will take place). Should not be called from interrupt context. **Notes** This routine assumes no locks are held on entry.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjô$h]”hŒ Parameters”…”�”}”(hjö$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjò$ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´MÇ hjî$ubj7)�”}”(hhh]”(j<)�”}”(hŒ9``struct fc_rport *rport`` The remote port that changed. ”h]”(jB)�”}”(hŒ``struct fc_rport *rport``”h]”jH)�”}”(hj%h]”hŒstruct fc_rport *rport”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´MÄ hj %ubj^)�”}”(hhh]”hì)�”}”(hŒThe remote port that changed.”h]”hŒThe remote port that changed.”…”�”}”(hj,%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j(%h´MÄ hj)%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj %ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j(%h´MÄ hj %ubj<)�”}”(hŒ'``u32 roles`` New roles for this port. ”h]”(jB)�”}”(hŒ ``u32 roles``”h]”jH)�”}”(hjL%h]”hŒ u32 roles”…”�”}”(hjN%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjJ%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´MÅ hjF%ubj^)�”}”(hhh]”hì)�”}”(hŒNew roles for this port.”h]”hŒNew roles for this port.”…”�”}”(hje%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ja%h´MÅ hjb%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjF%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³ja%h´MÅ hj %ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjî$ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hj‡%h]”hŒ Description”…”�”}”(hj‰%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj…%ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´MÇ hjî$ubhì)�”}”(hXThe LLDD calls this routine to notify the transport that the roles on a remote port may have changed. The largest effect of this is if a port now becomes a FCP Target, it must be allocated a scsi target id. If the port is no longer a FCP target, any scsi target id value assigned to it will persist in case the role changes back to include FCP Target. No changes in the scsi midlayer will be invoked if the role changes (in the expectation that the role will be resumed. If it doesn't normal error processing will take place).”h]”hXThe LLDD calls this routine to notify the transport that the roles on a remote port may have changed. The largest effect of this is if a port now becomes a FCP Target, it must be allocated a scsi target id. If the port is no longer a FCP target, any scsi target id value assigned to it will persist in case the role changes back to include FCP Target. No changes in the scsi midlayer will be invoked if the role changes (in the expectation that the role will be resumed. If it doesn’t normal error processing will take place).”…”�”}”(hj�%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´MÇ hjî$ubhì)�”}”(hŒ,Should not be called from interrupt context.”h]”hŒ,Should not be called from interrupt context.”…”�”}”(hj¬%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´MÑ hjî$ubhì)�”}”(hŒ **Notes**”h]”jó)�”}”(hj½%h]”hŒNotes”…”�”}”(hj¿%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj»%ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´MÓ hjî$ubjt)�”}”(hŒ0This routine assumes no locks are held on entry.”h]”hì)�”}”(hjÕ%h]”hŒ0This routine assumes no locks are held on entry.”…”�”}”(hj×%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´MÓ hjÓ%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jsh³jä%h´MÓ hjî$ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj«h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒfc_block_rport (C function)”Œc.fc_block_rport”hNt”auh1jGhj«h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ+int fc_block_rport (struct fc_rport *rport)”h]”jd)�”}”(hŒ*int fc_block_rport(struct fc_rport *rport)”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hj &h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj&h²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´MÊubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj&h²hh³j&h´MÊubj�)�”}”(hŒfc_block_rport”h]”j“)�”}”(hŒfc_block_rport”h]”hŒfc_block_rport”…”�”}”(hj,&h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj(&ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj&h²hh³j&h´MÊubjÊ)�”}”(hŒ(struct fc_rport *rport)”h]”jÐ)�”}”(hŒstruct fc_rport *rport”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjH&h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjD&ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjU&h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjD&ubh)�”}”(hhh]”j“)�”}”(hŒfc_rport”h]”hŒfc_rport”…”�”}”(hjf&h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjc&ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jh&Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j j.&sbŒc.fc_block_rport”†”asbuh1hhjD&ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†&h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjD&ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj”&h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjD&ubj“)�”}”(hŒrport”h]”hŒrport”…”�”}”(hj¡&h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjD&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²ˆuh1jcj³j´hj&h²hh³j&h´MÊubah}”(h]”jþ%ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j&h´MÊhj&h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ*Block SCSI eh thread for blocked fc_rport.”h]”hŒ*Block SCSI eh thread for blocked fc_rport.”…”�”}”(hjË&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´MÊhjÈ&h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj&h²hh³j&h´MÊubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjã&jäjã&jå‰jæ‰jç‰uh1jXh²hhj«h³Nh´Nubjé)�”}”(hX-**Parameters** ``struct fc_rport *rport`` Remote port that scsi_eh is trying to recover. **Description** This routine can be called from a FC LLD scsi_eh callback. It blocks the scsi_eh thread until the fc_rport leaves the FC_PORTSTATE_BLOCKED, or the fast_io_fail_tmo fires. This is necessary to avoid the scsi_eh failing recovery actions for blocked rports which would lead to offlined SCSI devices. **Return** 0 if the fc_rport left the state FC_PORTSTATE_BLOCKED. FAST_IO_FAIL if the fast_io_fail_tmo fired, this should be passed back to scsi_eh.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjí&h]”hŒ Parameters”…”�”}”(hjï&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjë&ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´MÎhjç&ubj7)�”}”(hhh]”j<)�”}”(hŒJ``struct fc_rport *rport`` Remote port that scsi_eh is trying to recover. ”h]”(jB)�”}”(hŒ``struct fc_rport *rport``”h]”jH)�”}”(hj 'h]”hŒstruct fc_rport *rport”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj 'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´MËhj'ubj^)�”}”(hhh]”hì)�”}”(hŒ.Remote port that scsi_eh is trying to recover.”h]”hŒ.Remote port that scsi_eh is trying to recover.”…”�”}”(hj%'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³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&]”uh1j6hjç&ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjG'h]”hŒ Description”…”�”}”(hjI'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjE'ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´MÍhjç&ubhì)�”}”(hX(This routine can be called from a FC LLD scsi_eh callback. It blocks the scsi_eh thread until the fc_rport leaves the FC_PORTSTATE_BLOCKED, or the fast_io_fail_tmo fires. This is necessary to avoid the scsi_eh failing recovery actions for blocked rports which would lead to offlined SCSI devices.”h]”hX(This routine can be called from a FC LLD scsi_eh callback. It blocks the scsi_eh thread until the fc_rport leaves the FC_PORTSTATE_BLOCKED, or the fast_io_fail_tmo fires. This is necessary to avoid the scsi_eh failing recovery actions for blocked rports which would lead to offlined SCSI devices.”…”�”}”(hj]'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´MÌhjç&ubhì)�”}”(hŒ **Return**”h]”jó)�”}”(hjn'h]”hŒReturn”…”�”}”(hjp'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjl'ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´MÒhjç&ubhì)�”}”(hŒ‰0 if the fc_rport left the state FC_PORTSTATE_BLOCKED. FAST_IO_FAIL if the fast_io_fail_tmo fired, this should be passed back to scsi_eh.”h]”hŒ‰0 if the fc_rport left the state FC_PORTSTATE_BLOCKED. FAST_IO_FAIL if the fast_io_fail_tmo fired, this should be passed back to scsi_eh.”…”�”}”(hj„'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´MÓhjç&ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj«h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒfc_block_scsi_eh (C function)”Œc.fc_block_scsi_eh”hNt”auh1jGhj«h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ-int fc_block_scsi_eh (struct scsi_cmnd *cmnd)”h]”jd)�”}”(hŒ,int fc_block_scsi_eh(struct scsi_cmnd *cmnd)”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hj³'h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj¯'h²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´Míubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂ'h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj¯'h²hh³jÁ'h´Míubj�)�”}”(hŒfc_block_scsi_eh”h]”j“)�”}”(hŒfc_block_scsi_eh”h]”hŒfc_block_scsi_eh”…”�”}”(hjÔ'h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÐ'ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj¯'h²hh³jÁ'h´MíubjÊ)�”}”(hŒ(struct scsi_cmnd *cmnd)”h]”jÐ)�”}”(hŒstruct scsi_cmnd *cmnd”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjð'h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjì'ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjý'h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjì'ubh)�”}”(hhh]”j“)�”}”(hŒ scsi_cmnd”h]”hŒ scsi_cmnd”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj (ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j(Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jÖ'sbŒc.fc_block_scsi_eh”†”asbuh1hhjì'ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.(h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjì'ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj<(h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjì'ubj“)�”}”(hŒcmnd”h]”hŒcmnd”…”�”}”(hjI(h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjì'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²ˆuh1jcj³j´hj«'h²hh³jÁ'h´Míubah}”(h]”j¦'ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jÁ'h´Míhj¨'h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ)Block SCSI eh thread for blocked fc_rport”h]”hŒ)Block SCSI eh thread for blocked fc_rport”…”�”}”(hjs(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´Míhjp(h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj¨'h²hh³jÁ'h´Míubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj‹(jäj‹(jå‰jæ‰jç‰uh1jXh²hhj«h³Nh´Nubjé)�”}”(hX-**Parameters** ``struct scsi_cmnd *cmnd`` SCSI command that scsi_eh is trying to recover **Description** This routine can be called from a FC LLD scsi_eh callback. It blocks the scsi_eh thread until the fc_rport leaves the FC_PORTSTATE_BLOCKED, or the fast_io_fail_tmo fires. This is necessary to avoid the scsi_eh failing recovery actions for blocked rports which would lead to offlined SCSI devices. **Return** 0 if the fc_rport left the state FC_PORTSTATE_BLOCKED. FAST_IO_FAIL if the fast_io_fail_tmo fired, this should be passed back to scsi_eh.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj•(h]”hŒ Parameters”…”�”}”(hj—(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj“(ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´Mñhj�(ubj7)�”}”(hhh]”j<)�”}”(hŒJ``struct scsi_cmnd *cmnd`` SCSI command that scsi_eh is trying to recover ”h]”(jB)�”}”(hŒ``struct scsi_cmnd *cmnd``”h]”jH)�”}”(hj´(h]”hŒstruct scsi_cmnd *cmnd”…”�”}”(hj¶(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj²(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´Mîhj®(ubj^)�”}”(hhh]”hì)�”}”(hŒ.SCSI command that scsi_eh is trying to recover”h]”hŒ.SCSI command that scsi_eh is trying to recover”…”�”}”(hjÍ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³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&]”uh1j6hj�(ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjï(h]”hŒ Description”…”�”}”(hjñ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjí(ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´Mðhj�(ubhì)�”}”(hX(This routine can be called from a FC LLD scsi_eh callback. It blocks the scsi_eh thread until the fc_rport leaves the FC_PORTSTATE_BLOCKED, or the fast_io_fail_tmo fires. This is necessary to avoid the scsi_eh failing recovery actions for blocked rports which would lead to offlined SCSI devices.”h]”hX(This routine can be called from a FC LLD scsi_eh callback. It blocks the scsi_eh thread until the fc_rport leaves the FC_PORTSTATE_BLOCKED, or the fast_io_fail_tmo fires. This is necessary to avoid the scsi_eh failing recovery actions for blocked rports which would lead to offlined SCSI devices.”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´Mïhj�(ubhì)�”}”(hŒ **Return**”h]”jó)�”}”(hj)h]”hŒReturn”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´Mõhj�(ubhì)�”}”(hŒ‰0 if the fc_rport left the state FC_PORTSTATE_BLOCKED. FAST_IO_FAIL if the fast_io_fail_tmo fired, this should be passed back to scsi_eh.”h]”hŒ‰0 if the fc_rport left the state FC_PORTSTATE_BLOCKED. FAST_IO_FAIL if the fast_io_fail_tmo fired, this should be passed back to scsi_eh.”…”�”}”(hj,)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´Möhj�(ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj«h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒfc_vport_create (C function)”Œc.fc_vport_create”hNt”auh1jGhj«h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒjstruct fc_vport * fc_vport_create (struct Scsi_Host *shost, int channel, struct fc_vport_identifiers *ids)”h]”jd)�”}”(hŒhstruct fc_vport *fc_vport_create(struct Scsi_Host *shost, int channel, struct fc_vport_identifiers *ids)”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj[)h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjW)h²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´M�ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hji)h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjW)h²hh³jh)h´M�ubh)�”}”(hhh]”j“)�”}”(hŒfc_vport”h]”hŒfc_vport”…”�”}”(hjz)h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjw)ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j|)Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j Œfc_vport_create”sbŒc.fc_vport_create”†”asbuh1hhjW)h²hh³jh)h´M�ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›)h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjW)h²hh³jh)h´M�ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj©)h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjW)h²hh³jh)h´M�ubj�)�”}”(hŒfc_vport_create”h]”j“)�”}”(hj˜)h]”hŒfc_vport_create”…”�”}”(hjº)h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj¶)ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjW)h²hh³jh)h´M�ubjÊ)�”}”(hŒH(struct Scsi_Host *shost, int channel, struct fc_vport_identifiers *ids)”h]”(jÐ)�”}”(hŒstruct Scsi_Host *shost”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjÕ)h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjÑ)ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâ)h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÑ)ubh)�”}”(hhh]”j“)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hjó)h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjð)ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jõ)Œmodname”NŒ classname”Njôj÷)�”}”jú]”j–)Œc.fc_vport_create”†”asbuh1hhjÑ)ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÑ)ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjÑ)ubj“)�”}”(hŒshost”h]”hŒshost”…”�”}”(hj,*h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÑ)ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjÍ)ubjÐ)�”}”(hŒ int channel”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hjE*h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjA*ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjS*h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjA*ubj“)�”}”(hŒchannel”h]”hŒchannel”…”�”}”(hja*h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjA*ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjÍ)ubjÐ)�”}”(hŒ struct fc_vport_identifiers *ids”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjz*h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjv*ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡*h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjv*ubh)�”}”(hhh]”j“)�”}”(hŒfc_vport_identifiers”h]”hŒfc_vport_identifiers”…”�”}”(hj˜*h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj•*ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jš*Œmodname”NŒ classname”Njôj÷)�”}”jú]”j–)Œc.fc_vport_create”†”asbuh1hhjv*ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶*h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjv*ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjÄ*h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjv*ubj“)�”}”(hŒids”h]”hŒids”…”�”}”(hjÑ*h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjv*ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjÍ)ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjW)h²hh³jh)h´M�ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjS)h²hh³jh)h´M�ubah}”(h]”jN)ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jh)h´M�hjP)h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ.Admin App or LLDD requests creation of a vport”h]”hŒ.Admin App or LLDD requests creation of a vport”…”�”}”(hjû*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´M�hjø*h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjP)h²hh³jh)h´M�ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj+jäj+jå‰jæ‰jç‰uh1jXh²hhj«h³Nh´Nubjé)�”}”(hX<**Parameters** ``struct Scsi_Host *shost`` scsi host the virtual port is connected to. ``int channel`` channel on shost port connected to. ``struct fc_vport_identifiers *ids`` The world wide names, FC4 port roles, etc for the virtual port. **Notes** This routine assumes no locks are held on entry.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj+h]”hŒ Parameters”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´M¡hj+ubj7)�”}”(hhh]”(j<)�”}”(hŒH``struct Scsi_Host *shost`` scsi host the virtual port is connected to. ”h]”(jB)�”}”(hŒ``struct Scsi_Host *shost``”h]”jH)�”}”(hj<+h]”hŒstruct Scsi_Host *shost”…”�”}”(hj>+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj:+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´Mžhj6+ubj^)�”}”(hhh]”hì)�”}”(hŒ+scsi host the virtual port is connected to.”h]”hŒ+scsi host the virtual port is connected to.”…”�”}”(hjU+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jQ+h´MžhjR+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj6+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jQ+h´Mžhj3+ubj<)�”}”(hŒ4``int channel`` channel on shost port connected to. ”h]”(jB)�”}”(hŒ``int channel``”h]”jH)�”}”(hju+h]”hŒ int channel”…”�”}”(hjw+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjs+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´MŸhjo+ubj^)�”}”(hhh]”hì)�”}”(hŒ#channel on shost port connected to.”h]”hŒ#channel on shost port connected to.”…”�”}”(hjŽ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jŠ+h´MŸhj‹+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjo+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jŠ+h´MŸhj3+ubj<)�”}”(hŒe``struct fc_vport_identifiers *ids`` The world wide names, FC4 port roles, etc for the virtual port. ”h]”(jB)�”}”(hŒ$``struct fc_vport_identifiers *ids``”• h]”jH)�”}”(hj®+h]”hŒ struct fc_vport_identifiers *ids”…”�”}”(hj°+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj¬+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´M¡hj¨+ubj^)�”}”(hhh]”hì)�”}”(hŒ?The world wide names, FC4 port roles, etc for the virtual port.”h]”hŒ?The world wide names, FC4 port roles, etc for the virtual port.”…”�”}”(hjÇ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´M hjÄ+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj¨+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jÃ+h´M¡hj3+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hj+ubhì)�”}”(hŒ **Notes**”h]”jó)�”}”(hjê+h]”hŒNotes”…”�”}”(hjì+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjè+ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´M£hj+ubjt)�”}”(hŒ0This routine assumes no locks are held on entry.”h]”hì)�”}”(hj,h]”hŒ0This routine assumes no locks are held on entry.”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´M£hj,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jsh³j,h´M£hj+ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj«h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒfc_vport_terminate (C function)”Œc.fc_vport_terminate”hNt”auh1jGhj«h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ/int fc_vport_terminate (struct fc_vport *vport)”h]”jd)�”}”(hŒ.int fc_vport_terminate(struct fc_vport *vport)”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hj8,h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj4,h²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´M´ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjG,h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj4,h²hh³jF,h´M´ubj�)�”}”(hŒfc_vport_terminate”h]”j“)�”}”(hŒfc_vport_terminate”h]”hŒfc_vport_terminate”…”�”}”(hjY,h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjU,ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj4,h²hh³jF,h´M´ubjÊ)�”}”(hŒ(struct fc_vport *vport)”h]”jÐ)�”}”(hŒstruct fc_vport *vport”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hju,h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjq,ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚,h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjq,ubh)�”}”(hhh]”j“)�”}”(hŒfc_vport”h]”hŒfc_vport”…”�”}”(hj“,h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj�,ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j•,Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j j[,sbŒc.fc_vport_terminate”†”asbuh1hhjq,ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³,h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjq,ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjÁ,h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjq,ubj“)�”}”(hŒvport”h]”hŒvport”…”�”}”(hjÎ,h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjq,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjm,ubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhj4,h²hh³jF,h´M´ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj0,h²hh³jF,h´M´ubah}”(h]”j+,ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jF,h´M´hj-,h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ1Admin App or LLDD requests termination of a vport”h]”hŒ1Admin App or LLDD requests termination of a vport”…”�”}”(hjø,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´M´hjõ,h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj-,h²hh³jF,h´M´ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj-jäj-jå‰jæ‰jç‰uh1jXh²hhj«h³Nh´Nubjé)�”}”(hX **Parameters** ``struct fc_vport *vport`` fc_vport to be terminated **Description** Calls the LLDD vport_delete() function, then deallocates and removes the vport from the shost and object tree. **Notes** This routine assumes no locks are held on entry.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj-h]”hŒ Parameters”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´M¸hj-ubj7)�”}”(hhh]”j<)�”}”(hŒ5``struct fc_vport *vport`` fc_vport to be terminated ”h]”(jB)�”}”(hŒ``struct fc_vport *vport``”h]”jH)�”}”(hj9-h]”hŒstruct fc_vport *vport”…”�”}”(hj;-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj7-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´Mµhj3-ubj^)�”}”(hhh]”hì)�”}”(hŒfc_vport to be terminated”h]”hŒfc_vport to be terminated”…”�”}”(hjR-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jN-h´MµhjO-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj3-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jN-h´Mµhj0-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj-ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjt-h]”hŒ Description”…”�”}”(hjv-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjr-ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´M·hj-ubhì)�”}”(hŒnCalls the LLDD vport_delete() function, then deallocates and removes the vport from the shost and object tree.”h]”hŒnCalls the LLDD vport_delete() function, then deallocates and removes the vport from the shost and object tree.”…”�”}”(hjŠ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´M¶hj-ubhì)�”}”(hŒ **Notes**”h]”jó)�”}”(hj›-h]”hŒNotes”…”�”}”(hj�-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj™-ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´M¹hj-ubjt)�”}”(hŒ0This routine assumes no locks are held on entry.”h]”hì)�”}”(hj³-h]”hŒ0This routine assumes no locks are held on entry.”…”�”}”(hjµ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´Mºhj±-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jsh³jÂ-h´Mºhj-ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj«h²hh³Nh´Nubeh}”(h]”Œfibre-channel-transport”ah ]”h"]”Œfibre channel transport”ah$]”h&]”uh1hµhjŒh²hh³hÊh´Kêubh¶)�”}”(hhh]”(h»)�”}”(hŒiSCSI transport class”h]”hŒiSCSI transport class”…”�”}”(hjÛ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjØ-h²hh³hÊh´Kóubhì)�”}”(hŒ�The file drivers/scsi/scsi_transport_iscsi.c defines transport attributes for the iSCSI class, which sends SCSI packets over TCP/IP connections.”h]”hŒ�The file drivers/scsi/scsi_transport_iscsi.c defines transport attributes for the iSCSI class, which sends SCSI packets over TCP/IP connections.”…”�”}”(hjé-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KõhjØ-h²hubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ"iscsi_lookup_endpoint (C function)”Œc.iscsi_lookup_endpoint”hNt”auh1jGhjØ-h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ:struct iscsi_endpoint * iscsi_lookup_endpoint (u64 handle)”h]”jd)�”}”(hŒ8struct iscsi_endpoint *iscsi_lookup_endpoint(u64 handle)”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj .h²hh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´Mubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj .h²hh³j.h´Mubh)�”}”(hhh]”j“)�”}”(hŒiscsi_endpoint”h]”hŒiscsi_endpoint”…”�”}”(hj/.h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj,.ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j1.Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j Œiscsi_lookup_endpoint”sbŒc.iscsi_lookup_endpoint”†”asbuh1hhj .h²hh³j.h´Mubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjP.h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj .h²hh³j.h´Mubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj^.h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj .h²hh³j.h´Mubj�)�”}”(hŒiscsi_lookup_endpoint”h]”j“)�”}”(hjM.h]”hŒiscsi_lookup_endpoint”…”�”}”(hjo.h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjk.ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj .h²hh³j.h´MubjÊ)�”}”(hŒ (u64 handle)”h]”jÐ)�”}”(hŒ u64 handle”h]”(h)�”}”(hhh]”j“)�”}”(hŒu64”h]”hŒu64”…”�”}”(hj�.h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjŠ.ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j�.Œmodname”NŒ classname”Njôj÷)�”}”jú]”jK.Œc.iscsi_lookup_endpoint”†”asbuh1hhj†.ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«.h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj†.ubj“)�”}”(hŒhandle”h]”hŒhandle”…”�”}”(hj¹.h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj†.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²ˆuh1jcj³j´hj.h²hh³j.h´Mubah}”(h]”j.ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j.h´Mhj.h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒget ep from handle”h]”hŒget ep from handle”…”�”}”(hjã.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´Mhjà.h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj.h²hh³j.h´Mubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjû.jäjû.jå‰jæ‰jç‰uh1jXh²hhjØ-h³Nh´Nubjé)�”}”(hŒg**Parameters** ``u64 handle`` endpoint handle **Description** Caller must do a iscsi_put_endpoint.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj/h]”hŒ Parameters”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´Mhjÿ.ubj7)�”}”(hhh]”j<)�”}”(hŒ``u64 handle`` endpoint handle ”h]”(jB)�”}”(hŒ``u64 handle``”h]”jH)�”}”(hj$/h]”hŒ u64 handle”…”�”}”(hj&/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj"/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´Mhj/ubj^)�”}”(hhh]”hì)�”}”(hŒendpoint handle”h]”hŒendpoint handle”…”�”}”(hj=/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j9/h´Mhj:/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j9/h´Mhj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjÿ.ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hj_/h]”hŒ Description”…”�”}”(hja/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj]/ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´Mhjÿ.ubhì)�”}”(hŒ$Caller must do a iscsi_put_endpoint.”h]”hŒ$Caller must do a iscsi_put_endpoint.”…”�”}”(hju/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´Mhjÿ.ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjØ-h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ(iscsi_create_flashnode_sess (C function)”Œc.iscsi_create_flashnode_sess”hNt”auh1jGhjØ-h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ‘struct iscsi_bus_flash_session * iscsi_create_flashnode_sess (struct Scsi_Host *shost, int index, struct iscsi_transport *transport, int dd_size)”h]”jd)�”}”(hŒ�struct iscsi_bus_flash_session *iscsi_create_flashnode_sess(struct Scsi_Host *shost, int index, struct iscsi_transport *transport, int dd_size)”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj¤/h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj /h²hh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´MÅubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²/h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj /h²hh³j±/h´MÅubh)�”}”(hhh]”j“)�”}”(hŒiscsi_bus_flash_session”h]”hŒiscsi_bus_flash_session”…”�”}”(hjÃ/h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÀ/ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jÅ/Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j Œiscsi_create_flashnode_sess”sbŒc.iscsi_create_flashnode_sess”†”asbuh1hhj /h²hh³j±/h´MÅubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjä/h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj /h²hh³j±/h´MÅubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjò/h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj /h²hh³j±/h´MÅubj�)�”}”(hŒiscsi_create_flashnode_sess”h]”j“)�”}”(hjá/h]”hŒiscsi_create_flashnode_sess”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÿ/ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj /h²hh³j±/h´MÅubjÊ)�”}”(hŒT(struct Scsi_Host *shost, int index, struct iscsi_transport *transport, int dd_size)”h]”(jÐ)�”}”(hŒstruct Scsi_Host *shost”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj0ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+0h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj0ubh)�”}”(hhh]”j“)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hj<0h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj90ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j>0Œmodname”NŒ classname”Njôj÷)�”}”jú]”jß/Œc.iscsi_create_flashnode_sess”†”asbuh1hhj0ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZ0h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj0ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjh0h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj0ubj“)�”}”(hŒshost”h]”hŒshost”…”�”}”(hju0h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj0ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj0ubjÐ)�”}”(hŒ int index”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hjŽ0h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjŠ0ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœ0h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjŠ0ubj“)�”}”(hŒindex”h]”hŒindex”…”�”}”(hjª0h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjŠ0ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj0ubjÐ)�”}”(hŒ!struct iscsi_transport *transport”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjÃ0h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj¿0ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐ0h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj¿0ubh)�”}”(hhh]”j“)�”}”(hŒiscsi_transport”h]”hŒiscsi_transport”…”�”}”(hjá0h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÞ0ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jã0Œmodname”NŒ classname”Njôj÷)�”}”jú]”jß/Œc.iscsi_create_flashnode_sess”†”asbuh1hhj¿0ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿ0h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj¿0ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj 1h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj¿0ubj“)�”}”(hŒ transport”h]”hŒ transport”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj¿0ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj0ubjÐ)�”}”(hŒ int dd_size”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hj31h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj/1ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjA1h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj/1ubj“)�”}”(hŒdd_size”h]”hŒdd_size”…”�”}”(hjO1h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj/1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj0ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhj /h²hh³j±/h´MÅubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjœ/h²hh³j±/h´MÅubah}”(h]”j—/ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j±/h´MÅhj™/h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ$Add flashnode session entry in sysfs”h]”hŒ$Add flashnode session entry in sysfs”…”�”}”(hjy1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´MÅhjv1h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj™/h²hh³j±/h´MÅubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj‘1jäj‘1jå‰jæ‰jç‰uh1jXh²hhjØ-h³Nh´Nubjé)�”}”(hX}**Parameters** ``struct Scsi_Host *shost`` pointer to host data ``int index`` index of flashnode to add in sysfs ``struct iscsi_transport *transport`` pointer to transport data ``int dd_size`` total size to allocate **Description** Adds a sysfs entry for the flashnode session attributes **Return** pointer to allocated flashnode sess on success ``NULL`` on failure”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj›1h]”hŒ Parameters”…”�”}”(hj�1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj™1ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´MÉhj•1ubj7)�”}”(hhh]”(j<)�”}”(hŒ1``struct Scsi_Host *shost`` pointer to host data ”h]”(jB)�”}”(hŒ``struct Scsi_Host *shost``”h]”jH)�”}”(hjº1h]”hŒstruct Scsi_Host *shost”…”�”}”(hj¼1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj¸1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´MÆhj´1ubj^)�”}”(hhh]”hì)�”}”(hŒpointer to host data”h]”hŒpointer to host data”…”�”}”(hjÓ1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÏ1h´MÆhjÐ1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj´1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jÏ1h´MÆhj±1ubj<)�”}”(hŒ1``int index`` index of flashnode to add in sysfs ”h]”(jB)�”}”(hŒ ``int index``”h]”jH)�”}”(hjó1h]”hŒ int index”…”�”}”(hjõ1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjñ1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´MÇhjí1ubj^)�”}”(hhh]”hì)�”}”(hŒ"index of flashnode to add in sysfs”h]”hŒ"index of flashnode to add in sysfs”…”�”}”(hj 2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j2h´MÇhj 2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjí1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j2h´MÇhj±1ubj<)�”}”(hŒ@``struct iscsi_transport *transport`` pointer to transport data ”h]”(jB)�”}”(hŒ%``struct iscsi_transport *transport``”h]”jH)�”}”(hj,2h]”hŒ!struct iscsi_transport *transport”…”�”}”(hj.2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj*2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´MÈhj&2ubj^)�”}”(hhh]”hì)�”}”(hŒpointer to transport data”h]”hŒpointer to transport data”…”�”}”(hjE2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jA2h´MÈhjB2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj&2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jA2h´MÈhj±1ubj<)�”}”(hŒ'``int dd_size`` total size to allocate ”h]”(jB)�”}”(hŒ``int dd_size``”h]”jH)�”}”(hje2h]”hŒ int dd_size”…”�”}”(hjg2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjc2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´MÉhj_2ubj^)�”}”(hhh]”hì)�”}”(hŒtotal size to allocate”h]”hŒtotal size to allocate”…”�”}”(hj~2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jz2h´MÉhj{2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj_2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jz2h´MÉhj±1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hj•1ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hj 2h]”hŒ Description”…”�”}”(hj¢2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjž2ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´MËhj•1ubhì)�”}”(hŒ7Adds a sysfs entry for the flashnode session attributes”h]”hŒ7Adds a sysfs entry for the flashnode session attributes”…”�”}”(hj¶2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´MÊhj•1ubhì)�”}”(hŒ **Return**”h]”jó)�”}”(hjÇ2h]”hŒReturn”…”�”}”(hjÉ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÅ2ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´MÌhj•1ubhì)�”}”(hŒBpointer to allocated flashnode sess on success ``NULL`` on failure”h]”(hŒ/pointer to allocated flashnode sess on success ”…”�”}”(hjÝ2h²hh³Nh´NubjH)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjå2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjÝ2ubhŒ on failure”…”�”}”(hjÝ2h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´MÍhj•1ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjØ-h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ(iscsi_create_flashnode_conn (C function)”Œc.iscsi_create_flashnode_conn”hNt”auh1jGhjØ-h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ¯struct iscsi_bus_flash_conn * iscsi_create_flashnode_conn (struct Scsi_Host *shost, struct iscsi_bus_flash_session *fnode_sess, struct iscsi_transport *transport, int dd_size)”h]”jd)�”}”(hŒ­struct iscsi_bus_flash_conn *iscsi_create_flashnode_conn(struct Scsi_Host *shost, struct iscsi_bus_flash_session *fnode_sess, struct iscsi_transport *transport, int dd_size)”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj3h²hh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´Mõubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,3h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj3h²hh³j+3h´Mõubh)�”}”(hhh]”j“)�”}”(hŒiscsi_bus_flash_conn”h]”hŒiscsi_bus_flash_conn”…”�”}”(hj=3h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj:3ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j?3Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j Œiscsi_create_flashnode_conn”sbŒc.iscsi_create_flashnode_conn”†”asbuh1hhj3h²hh³j+3h´Mõubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^3h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj3h²hh³j+3h´Mõubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjl3h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj3h²hh³j+3h´Mõubj�)�”}”(hŒiscsi_create_flashnode_conn”h]”j“)�”}”(hj[3h]”hŒiscsi_create_flashnode_conn”…”�”}”(hj}3h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjy3ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj3h²hh³j+3h´MõubjÊ)�”}”(hŒu(struct Scsi_Host *shost, struct iscsi_bus_flash_session *fnode_sess, struct iscsi_transport *transport, int dd_size)”h]”(jÐ)�”}”(hŒstruct Scsi_Host *shost”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj˜3h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj”3ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥3h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj”3ubh)�”}”(hhh]”j“)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hj¶3h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj³3ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j¸3Œmodname”NŒ classname”Njôj÷)�”}”jú]”jY3Œc.iscsi_create_flashnode_conn”†”asbuh1hhj”3ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔ3h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj”3ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjâ3h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj”3ubj“)�”}”(hŒshost”h]”hŒshost”…”�”}”(hjï3h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj”3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj�3ubjÐ)�”}”(hŒ*struct iscsi_bus_flash_session *fnode_sess”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj4ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj4ubh)�”}”(hhh]”j“)�”}”(hŒiscsi_bus_flash_session”h]”hŒiscsi_bus_flash_session”…”�”}”(hj&4h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj#4ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j(4Œmodname”NŒ classname”Njôj÷)�”}”jú]”jY3Œc.iscsi_create_flashnode_conn”†”asbuh1hhj4ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjD4h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj4ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjR4h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj4ubj“)�”}”(hŒ fnode_sess”h]”hŒ fnode_sess”…”�”}”(hj_4h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj4ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj�3ubjÐ)�”}”(hŒ!struct iscsi_transport *transport”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjx4h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjt4ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…4h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjt4ubh)�”}”(hhh]”j“)�”}”(hŒiscsi_transport”h]”hŒiscsi_transport”…”�”}”(hj–4h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj“4ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j˜4Œmodname”NŒ classname”Njôj÷)�”}”jú]”jY3Œc.iscsi_create_flashnode_conn”†”asbuh1hhjt4ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´4h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjt4ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjÂ4h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjt4ubj“)�”}”(hŒ transport”h]”hŒ transport”…”�”}”(hjÏ4h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjt4ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj�3ubjÐ)�”}”(hŒ int dd_size”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hjè4h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjä4ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjö4h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjä4ubj“)�”}”(hŒdd_size”h]”hŒdd_size”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjä4ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj�3ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhj3h²hh³j+3h´Mõubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj3h²hh³j+3h´Mõubah}”(h]”j3ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j+3h´Mõhj3h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ!Add flashnode conn entry in sysfs”h]”hŒ!Add flashnode conn entry in sysfs”…”�”}”(hj.5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´Mõhj+5h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj3h²hh³j+3h´Mõubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjF5jäjF5jå‰jæ‰jç‰uh1jXh²hhjØ-h³Nh´Nubjé)�”}”(hX¬**Parameters** ``struct Scsi_Host *shost`` pointer to host data ``struct iscsi_bus_flash_session *fnode_sess`` pointer to the parent flashnode session entry ``struct iscsi_transport *transport`` pointer to transport data ``int dd_size`` total size to allocate **Description** Adds a sysfs entry for the flashnode connection attributes **Return** pointer to allocated flashnode conn on success ``NULL`` on failure”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjP5h]”hŒ Parameters”…”�”}”(hjR5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjN5ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´MùhjJ5ubj7)�”}”(hhh]”(j<)�”}”(hŒ1``struct Scsi_Host *shost`` pointer to host data ”h]”(jB)�”}”(hŒ``struct Scsi_Host *shost``”h]”jH)�”}”(hjo5h]”hŒstruct Scsi_Host *shost”…”�”}”(hjq5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjm5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´Möhji5ubj^)�”}”(hhh]”hì)�”}”(hŒpointer to host data”h]”hŒpointer to host data”…”�”}”(hjˆ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j„5h´Möhj…5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hji5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j„5h´Möhjf5ubj<)�”}”(hŒ]``struct iscsi_bus_flash_session *fnode_sess`` pointer to the parent flashnode session entry ”h]”(jB)�”}”(hŒ.``struct iscsi_bus_flash_session *fnode_sess``”h]”jH)�”}”(hj¨5h]”hŒ*struct iscsi_bus_flash_session *fnode_sess”…”�”}”(hjª5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj¦5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´M÷hj¢5ubj^)�”}”(hhh]”hì)�”}”(hŒ-pointer to the parent flashnode session entry”h]”hŒ-pointer to the parent flashnode session entry”…”�”}”(hjÁ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j½5h´M÷hj¾5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj¢5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j½5h´M÷hjf5ubj<)�”}”(hŒ@``struct iscsi_transport *transport`` pointer to transport data ”h]”(jB)�”}”(hŒ%``struct iscsi_transport *transport``”h]”jH)�”}”(hjá5h]”hŒ!struct iscsi_transport *transport”…”�”}”(hjã5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjß5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´MøhjÛ5ubj^)�”}”(hhh]”hì)�”}”(hŒpointer to transport data”h]”hŒpointer to transport data”…”�”}”(hjú5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jö5h´Møhj÷5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÛ5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jö5h´Møhjf5ubj<)�”}”(hŒ'``int dd_size`` total size to allocate ”h]”(jB)�”}”(hŒ``int dd_size``”h]”jH)�”}”(hj6h]”hŒ int dd_size”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´Mùhj6ubj^)�”}”(hhh]”hì)�”}”(hŒtotal size to allocate”h]”hŒtotal size to allocate”…”�”}”(hj36h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j/6h´Mùhj06ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j/6h´Mùhjf5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjJ5ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjU6h]”hŒ Description”…”�”}”(hjW6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjS6ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´MûhjJ5ubhì)�”}”(hŒ:Adds a sysfs entry for the flashnode connection attributes”h]”hŒ:Adds a sysfs entry for the flashnode connection attributes”…”�”}”(hjk6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´MúhjJ5ubhì)�”}”(hŒ **Return**”h]”jó)�”}”(hj|6h]”hŒReturn”…”�”}”(hj~6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjz6ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´MühjJ5ubhì)�”}”(hŒBpointer to allocated flashnode conn on success ``NULL`` on failure”h]”(hŒ/pointer to allocated flashnode conn on success ”…”�”}”(hj’6h²hh³Nh´NubjH)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjš6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj’6ubhŒ on failure”…”�”}”(hj’6h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´MýhjJ5ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjØ-h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ&iscsi_find_flashnode_sess (C function)”Œc.iscsi_find_flashnode_sess”hNt”auh1jGhjØ-h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒhstruct device * iscsi_find_flashnode_sess (struct Scsi_Host *shost, const void *data, device_match_t fn)”h]”jd)�”}”(hŒfstruct device *iscsi_find_flashnode_sess(struct Scsi_Host *shost, const void *data, device_match_t fn)”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjÓ6h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjÏ6h²hh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´Mcubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjá6h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÏ6h²hh³jà6h´Mcubh)�”}”(hhh]”j“)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjò6h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjï6ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jô6Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j Œiscsi_find_flashnode_sess”sbŒc.iscsi_find_flashnode_sess”†”asbuh1hhjÏ6h²hh³jà6h´Mcubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÏ6h²hh³jà6h´Mcubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj!7h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjÏ6h²hh³jà6h´Mcubj�)�”}”(hŒiscsi_find_flashnode_sess”h]”j“)�”}”(hj7h]”hŒiscsi_find_flashnode_sess”…”�”}”(hj27h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj.7ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjÏ6h²hh³jà6h´McubjÊ)�”}”(hŒ>(struct Scsi_Host *shost, const void *data, device_match_t fn)”h]”(jÐ)�”}”(hŒstruct Scsi_Host *shost”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjM7h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjI7ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZ7h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjI7ubh)�”}”(hhh]”j“)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hjk7h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjh7ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jm7Œmodname”NŒ classname”Njôj÷)�”}”jú]”j7Œc.iscsi_find_flashnode_sess”†”asbuh1hhjI7ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰7h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjI7ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj—7h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjI7ubj“)�”}”(hŒshost”h]”hŒshost”…”�”}”(hj¤7h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjI7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjE7ubjÐ)�”}”(hŒconst void *data”h]”(jj)�”}”(hj’Ph]”hŒconst”…”�”}”(hj½7h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj¹7ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊ7h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj¹7ubj’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjØ7h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj¹7ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæ7h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj¹7ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjô7h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj¹7ubj“)�”}”(hŒdata”h]”hŒdata”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj¹7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjE7ubjÐ)�”}”(hŒdevice_match_t fn”h]”(h)�”}”(hhh]”j“)�”}”(hŒdevice_match_t”h]”hŒdevice_match_t”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j8Œmodname”NŒ classname”Njôj÷)�”}”jú]”j7Œc.iscsi_find_flashnode_sess”†”asbuh1hhj8ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;8h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj8ubj“)�”}”(hŒfn”h]”hŒfn”…”�”}”(hjI8h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjE7ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjÏ6h²hh³jà6h´Mcubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjË6h²hh³jà6h´Mcubah}”(h]”jÆ6ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jà6h´MchjÈ6h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒfinds flashnode session entry”h]”hŒfinds flashnode session entry”…”�”}”(hjs8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´Mchjp8h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjÈ6h²hh³jà6h´Mcubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj‹8jäj‹8jå‰jæ‰jç‰uh1jXh²hhjØ-h³Nh´Nubjé)�”}”(hX²**Parameters** ``struct Scsi_Host *shost`` pointer to host data ``const void *data`` pointer to data containing value to use for comparison ``device_match_t fn`` function pointer that does actual comparison **Description** Finds the flashnode session object comparing the data passed using logic defined in passed function pointer **Return** pointer to found flashnode session device object on success ``NULL`` on failure”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj•8h]”hŒ Parameters”…”�”}”(hj—8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj“8ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´Mghj�8ubj7)�”}”(hhh]”(j<)�”}”(hŒ1``struct Scsi_Host *shost`` pointer to host data ”h]”(jB)�”}”(hŒ``struct Scsi_Host *shost``”h]”jH)�”}”(hj´8h]”hŒstruct Scsi_Host *shost”…”�”}”(hj¶8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj²8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´Mdhj®8ubj^)�”}”(hhh]”hì)�”}”(hŒpointer to host data”h]”hŒpointer to host data”…”�”}”(hjÍ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÉ8h´MdhjÊ8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj®8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jÉ8h´Mdhj«8ubj<)�”}”(hŒL``const void *data`` pointer to data containing value to use for comparison ”h]”(jB)�”}”(hŒ``const void *data``”h]”jH)�”}”(hjí8h]”hŒconst void *data”…”�”}”(hjï8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjë8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´Mehjç8ubj^)�”}”(hhh]”hì)�”}”(hŒ6pointer to data containing value to use for comparison”h]”hŒ6pointer to data containing value to use for comparison”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j9h´Mehj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjç8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j9h´Mehj«8ubj<)�”}”(hŒC``device_match_t fn`` function pointer that does actual comparison ”h]”(jB)�”}”(hŒ``device_match_t fn``”h]”jH)�”}”(hj&9h]”hŒdevice_match_t fn”…”�”}”(hj(9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj$9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´Mfhj 9ubj^)�”}”(hhh]”hì)�”}”(hŒ,function pointer that does actual comparison”h]”hŒ,function pointer that does actual comparison”…”�”}”(hj?9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j;9h´Mfhj<9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj 9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j;9h´Mfhj«8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hj�8ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hja9h]”hŒ Description”…”�”}”(hjc9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj_9ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´Mhhj�8ubhì)�”}”(hŒkFinds the flashnode session object comparing the data passed using logic defined in passed function pointer”h]”hŒkFinds the flashnode session object comparing the data passed using logic defined in passed function pointer”…”�”}”(hjw9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´Mghj�8ubhì)�”}”(hŒ **Return**”h]”jó)�”}”(hjˆ9h]”hŒReturn”…”�”}”(hjŠ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj†9ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´Mjhj�8ubhì)�”}”(hŒOpointer to found flashnode session device object on success ``NULL`` on failure”h]”(hŒ:h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj::ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjÛ9h²hh³jì9h´MxubjÊ)�”}”(hŒ,(struct iscsi_bus_flash_session *fnode_sess)”h]”jÐ)�”}”(hŒ*struct iscsi_bus_flash_session *fnode_sess”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjY:h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjU:ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjf:h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjU:ubh)�”}”(hhh]”j“)�”}”(hŒiscsi_bus_flash_session”h]”hŒiscsi_bus_flash_session”…”�”}”(hjw:h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjt:ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jy:Œmodname”NŒ classname”Njôj÷)�”}”jú]”j:Œc.iscsi_find_flashnode_conn”†”asbuh1hhjU:ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•:h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjU:ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj£:h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjU:ubj“)�”}”(hŒ fnode_sess”h]”hŒ fnode_sess”…”�”}”(hj°:h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjU:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjQ:ubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjÛ9h²hh³jì9h´Mxubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj×9h²hh³jì9h´Mxubah}”(h]”jÒ9ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jì9h´MxhjÔ9h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ finds flashnode connection entry”h]”hŒ finds flashnode connection entry”…”�”}”(hjÚ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´Mxhj×:h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjÔ9h²hh³jì9h´Mxubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjò:jäjò:jå‰jæ‰jç‰uh1jXh²hhjØ-h³Nh´Nubjé)�”}”(hXK**Parameters** ``struct iscsi_bus_flash_session *fnode_sess`` pointer to parent flashnode session entry **Description** Finds the flashnode connection object comparing the data passed using logic defined in passed function pointer **Return** pointer to found flashnode connection device object on success ``NULL`` on failure”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjü:h]”hŒ Parameters”…”�”}”(hjþ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjú:ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´M|hjö:ubj7)�”}”(hhh]”j<)�”}”(hŒY``struct iscsi_bus_flash_session *fnode_sess`` pointer to parent flashnode session entry ”h]”(jB)�”}”(hŒ.``struct iscsi_bus_flash_session *fnode_sess``”h]”jH)�”}”(hj;h]”hŒ*struct iscsi_bus_flash_session *fnode_sess”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´Myhj;ubj^)�”}”(hhh]”hì)�”}”(hŒ)pointer to parent flashnode session entry”h]”hŒ)pointer to parent flashnode session entry”…”�”}”(hj4;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j0;h´Myhj1;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j0;h´Myhj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjö:ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjV;h]”hŒ Description”…”�”}”(hjX;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjT;ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´M{hjö:ubhì)�”}”(hŒnFinds the flashnode connection object comparing the data passed using logic defined in passed function pointer”h]”hŒnFinds the flashnode connection object comparing the data passed using logic defined in passed function pointer”…”�”}”(hjl;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´Mzhjö:ubhì)�”}”(hŒ **Return**”h]”jó)�”}”(hj};h]”hŒReturn”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj{;ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´M}hjö:ubhì)�”}”(hŒRpointer to found flashnode connection device object on success ``NULL`` on failure”h]”(hŒ?pointer to found flashnode connection device object on success ”…”�”}”(hj“;h²hh³Nh´NubjH)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj›;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj“;ubhŒ on failure”…”�”}”(hj“;h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´M~hjö:ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjØ-h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ)iscsi_destroy_flashnode_sess (C function)”Œc.iscsi_destroy_flashnode_sess”hNt”auh1jGhjØ-h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒNvoid iscsi_destroy_flashnode_sess (struct iscsi_bus_flash_session *fnode_sess)”h]”jd)�”}”(hŒMvoid iscsi_destroy_flashnode_sess(struct iscsi_bus_flash_session *fnode_sess)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÔ;h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjÐ;h²hh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´M“ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjã;h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÐ;h²hh³jâ;h´M“ubj�)�”}”(hŒiscsi_destroy_flashnode_sess”h]”j“)�”}”(hŒiscsi_destroy_flashnode_sess”h]”hŒiscsi_destroy_flashnode_sess”…”�”}”(hjõ;h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjñ;ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjÐ;h²hh³jâ;h´M“ubjÊ)�”}”(hŒ,(struct iscsi_bus_flash_session *fnode_sess)”h]”jÐ)�”}”(hŒ*struct iscsi_bus_flash_session *fnode_sess”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj <ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj <ubh)�”}”(hhh]”j“)�”}”(hŒiscsi_bus_flash_session”h]”hŒiscsi_bus_flash_session”…”�”}”(hj/<h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj,<ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j1<Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j j÷;sbŒc.iscsi_destroy_flashnode_sess”†”asbuh1hhj <ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjO<h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj <ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj]<h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj <ubj“)�”}”(hŒ fnode_sess”h]”hŒ fnode_sess”…”�”}”(hjj<h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj <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²ˆuh1jcj³j´hjÌ;h²hh³jâ;h´M“ubah}”(h]”jÇ;ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jâ;h´M“hjÉ;h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒdestroy flashnode session entry”h]”hŒdestroy flashnode session entry”…”�”}”(hj”<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´M“hj‘<h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjÉ;h²hh³jâ;h´M“ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj¬<jäj¬<jå‰jæ‰jç‰uh1jXh²hhjØ-h³Nh´Nubjé)�”}”(hŒâ**Parameters** ``struct iscsi_bus_flash_session *fnode_sess`` pointer to flashnode session entry to be destroyed **Description** Deletes the flashnode session entry and all children flashnode connection entries from sysfs”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj¶<h]”hŒ Parameters”…”�”}”(hj¸<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj´<ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´M—hj°<ubj7)�”}”(hhh]”j<)�”}”(hŒb``struct iscsi_bus_flash_session *fnode_sess`` pointer to flashnode session entry to be destroyed ”h]”(jB)�”}”(hŒ.``struct iscsi_bus_flash_session *fnode_sess``”h]”jH)�”}”(hjÕ<h]”hŒ*struct iscsi_bus_flash_session *fnode_sess”…”�”}”(hj×<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjÓ<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´M”hjÏ<ubj^)�”}”(hhh]”hì)�”}”(hŒ2pointer to flashnode session entry to be destroyed”h]”hŒ2pointer to flashnode session entry to be destroyed”…”�”}”(hjî<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³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&]”uh1j6hj°<ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hj=h]”hŒ Description”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´M–hj°<ubhì)�”}”(hŒ\Deletes the flashnode session entry and all children flashnode connection entries from sysfs”h]”hŒ\Deletes the flashnode session entry and all children flashnode connection entries from sysfs”…”�”}”(hj&=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´M•hj°<ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjØ-h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ(iscsi_destroy_all_flashnode (C function)”Œc.iscsi_destroy_all_flashnode”hNt”auh1jGhjØ-h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ:void iscsi_destroy_all_flashnode (struct Scsi_Host *shost)”h]”jd)�”}”(hŒ9void iscsi_destroy_all_flashnode(struct Scsi_Host *shost)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjU=h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjQ=h²hh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´M±ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjd=h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjQ=h²hh³jc=h´M±ubj�)�”}”(hŒiscsi_destroy_all_flashnode”h]”j“)�”}”(hŒiscsi_destroy_all_flashnode”h]”hŒiscsi_destroy_all_flashnode”…”�”}”(hjv=h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjr=ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjQ=h²hh³jc=h´M±ubjÊ)�”}”(hŒ(struct Scsi_Host *shost)”h]”jÐ)�”}”(hŒstruct Scsi_Host *shost”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj’=h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjŽ=ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸ=h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjŽ=ubh)�”}”(hhh]”j“)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hj°=h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj­=ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j²=Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jx=sbŒc.iscsi_destroy_all_flashnode”†”asbuh1hhjŽ=ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐ=h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjŽ=ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjÞ=h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjŽ=ubj“)�”}”(hŒshost”h]”hŒshost”…”�”}”(hjë=h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjŽ=ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjŠ=ubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjQ=h²hh³jc=h´M±ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjM=h²hh³jc=h´M±ubah}”(h]”jH=ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jc=h´M±hjJ=h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ%destroy all flashnode session entries”h]”hŒ%destroy all flashnode session entries”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´M±hj>h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjJ=h²hh³jc=h´M±ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj->jäj->jå‰jæ‰jç‰uh1jXh²hhjØ-h³Nh´Nubjé)�”}”(hŒÆ**Parameters** ``struct Scsi_Host *shost`` pointer to host data **Description** Destroys all the flashnode session entries and all corresponding children flashnode connection entries from sysfs”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj7>h]”hŒ Parameters”…”�”}”(hj9>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj5>ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´Mµhj1>ubj7)�”}”(hhh]”j<)�”}”(hŒ1``struct Scsi_Host *shost`` pointer to host data ”h]”(jB)�”}”(hŒ``struct Scsi_Host *shost``”h]”jH)�”}”(hjV>h]”hŒstruct Scsi_Host *shost”…”�”}”(hjX>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjT>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´M²hjP>ubj^)�”}”(hhh]”hì)�”}”(hŒpointer to host data”h]”hŒpointer to host data”…”�”}”(hjo>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jk>h´M²hjl>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjP>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jk>h´M²hjM>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj1>ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hj‘>h]”hŒ Description”…”�”}”(hj“>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj�>ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´M´hj1>ubhì)�”}”(hŒqDestroys all the flashnode session entries and all corresponding children flashnode connection entries from sysfs”h]”hŒqDestroys all the flashnode session entries and all corresponding children flashnode connection entries from sysfs”…”�”}”(hj§>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´M³hj1>ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjØ-h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ iscsi_block_scsi_eh (C function)”Œc.iscsi_block_scsi_eh”hNt”auh1jGhjØ-h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ/int iscsi_block_scsi_eh (struct scsi_cmnd *cmd)”h]”jd)�”}”(hŒ.int iscsi_block_scsi_eh(struct scsi_cmnd *cmd)”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hjÖ>h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjÒ>h²hh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´M1ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjå>h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÒ>h²hh³jä>h´M1ubj�)�”}”(hŒiscsi_block_scsi_eh”h]”j“)�”}”(hŒiscsi_block_scsi_eh”h]”hŒiscsi_block_scsi_eh”…”�”}”(hj÷>h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjó>ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjÒ>h²hh³jä>h´M1ubjÊ)�”}”(hŒ(struct scsi_cmnd *cmd)”h]”jÐ)�”}”(hŒstruct scsi_cmnd *cmd”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj?ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ?h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj?ubh)�”}”(hhh]”j“)�”}”(hŒ scsi_cmnd”h]”hŒ scsi_cmnd”…”�”}”(hj1?h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj.?ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j3?Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jù>sbŒc.iscsi_block_scsi_eh”†”asbuh1hhj?ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQ?h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj?ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj_?h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj?ubj“)�”}”(hŒcmd”h]”hŒcmd”…”�”}”(hjl?h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj?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´M1ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjÎ>h²hh³jä>h´M1ubah}”(h]”jÉ>ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jä>h´M1hjË>h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ3block scsi eh until session state has transistioned”h]”hŒ3block scsi eh until session state has transistioned”…”�”}”(hj–?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´M1hj“?h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjË>h²hh³jä>h´M1ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj®?jäj®?jå‰jæ‰jç‰uh1jXh²hhjØ-h³Nh´Nubjé)�”}”(hXJ**Parameters** ``struct scsi_cmnd *cmd`` scsi cmd passed to scsi eh handler **Description** If the session is down this function will wait for the recovery timer to fire or for the session to be logged back in. If the recovery timer fires then FAST_IO_FAIL is returned. The caller should pass this error value to the scsi eh.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj¸?h]”hŒ Parameters”…”�”}”(hjº?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj¶?ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´M5hj²?ubj7)�”}”(hhh]”j<)�”}”(hŒ=``struct scsi_cmnd *cmd`` scsi cmd passed to scsi eh handler ”h]”(jB)�”}”(hŒ``struct scsi_cmnd *cmd``”h]”jH)�”}”(hj×?h]”hŒstruct scsi_cmnd *cmd”…”�”}”(hjÙ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjÕ?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´M2hjÑ?ubj^)�”}”(hhh]”hì)�”}”(hŒ"scsi cmd passed to scsi eh handler”h]”hŒ"scsi cmd passed to scsi eh handler”…”�”}”(hjð?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jì?h´M2hjí?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÑ?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jì?h´M2hjÎ?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj²?ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hj@h]”hŒ Description”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj@ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´M4hj²?ubhì)�”}”(hŒéIf the session is down this function will wait for the recovery timer to fire or for the session to be logged back in. If the recovery timer fires then FAST_IO_FAIL is returned. The caller should pass this error value to the scsi eh.”h]”hŒéIf the session is down this function will wait for the recovery timer to fire or for the session to be logged back in. If the recovery timer fires then FAST_IO_FAIL is returned. The caller should pass this error value to the scsi eh.”…”�”}”(hj(@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´M3hj²?ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjØ-h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ"iscsi_unblock_session (C function)”Œc.iscsi_unblock_session”hNt”auh1jGhjØ-h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ>void iscsi_unblock_session (struct iscsi_cls_session *session)”h]”jd)�”}”(hŒ=void iscsi_unblock_session(struct iscsi_cls_session *session)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjW@h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjS@h²hh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´M‚ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjf@h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjS@h²hh³je@h´M‚ubj�)�”}”(hŒiscsi_unblock_session”h]”j“)�”}”(hŒiscsi_unblock_session”h]”hŒiscsi_unblock_session”…”�”}”(hjx@h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjt@ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjS@h²hh³je@h´M‚ubjÊ)�”}”(hŒ#(struct iscsi_cls_session *session)”h]”jÐ)�”}”(hŒ!struct iscsi_cls_session *session”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj”@h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj�@ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡@h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj�@ubh)�”}”(hhh]”j“)�”}”(hŒiscsi_cls_session”h]”hŒiscsi_cls_session”…”�”}”(hj²@h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj¯@ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j´@Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jz@sbŒc.iscsi_unblock_session”†”asbuh1hhj�@ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒ@h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj�@ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjà@h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj�@ubj“)�”}”(hŒsession”h]”hŒsession”…”�”}”(hjí@h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj�@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjŒ@ubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjS@h²hh³je@h´M‚ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjO@h²hh³je@h´M‚ubah}”(h]”jJ@ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³je@h´M‚hjL@h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ(set a session as logged in and start IO.”h]”hŒ(set a session as logged in and start IO.”…”�”•%}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´M‚hjAh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjL@h²hh³je@h´M‚ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj/Ajäj/Ajå‰jæ‰jç‰uh1jXh²hhjØ-h³Nh´Nubjé)�”}”(hŒ}**Parameters** ``struct iscsi_cls_session *session`` iscsi session **Description** Mark a session as ready to accept IO.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj9Ah]”hŒ Parameters”…”�”}”(hj;Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj7Aubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´M†hj3Aubj7)�”}”(hhh]”j<)�”}”(hŒ4``struct iscsi_cls_session *session`` iscsi session ”h]”(jB)�”}”(hŒ%``struct iscsi_cls_session *session``”h]”jH)�”}”(hjXAh]”hŒ!struct iscsi_cls_session *session”…”�”}”(hjZAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjVAubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´MƒhjRAubj^)�”}”(hhh]”hì)�”}”(hŒ iscsi session”h]”hŒ iscsi session”…”�”}”(hjqAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jmAh´MƒhjnAubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjRAubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jmAh´MƒhjOAubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj3Aubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hj“Ah]”hŒ Description”…”�”}”(hj•Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj‘Aubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´M…hj3Aubhì)�”}”(hŒ%Mark a session as ready to accept IO.”h]”hŒ%Mark a session as ready to accept IO.”…”�”}”(hj©Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´M„hj3Aubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjØ-h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ(iscsi_force_destroy_session (C function)”Œc.iscsi_force_destroy_session”hNt”auh1jGhjØ-h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒDvoid iscsi_force_destroy_session (struct iscsi_cls_session *session)”h]”jd)�”}”(hŒCvoid iscsi_force_destroy_session(struct iscsi_cls_session *session)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjØAh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjÔAh²hh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´M; ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjçAh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÔAh²hh³jæAh´M; ubj�)�”}”(hŒiscsi_force_destroy_session”h]”j“)�”}”(hŒiscsi_force_destroy_session”h]”hŒiscsi_force_destroy_session”…”�”}”(hjùAh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjõAubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjÔAh²hh³jæAh´M; ubjÊ)�”}”(hŒ#(struct iscsi_cls_session *session)”h]”jÐ)�”}”(hŒ!struct iscsi_cls_session *session”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjBubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"Bh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjBubh)�”}”(hhh]”j“)�”}”(hŒiscsi_cls_session”h]”hŒiscsi_cls_session”…”�”}”(hj3Bh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj0Bubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j5BŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jûAsbŒc.iscsi_force_destroy_session”†”asbuh1hhjBubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSBh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjBubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjaBh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjBubj“)�”}”(hŒsession”h]”hŒsession”…”�”}”(hjnBh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjBubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj Bubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjÔAh²hh³jæAh´M; ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjÐAh²hh³jæAh´M; ubah}”(h]”jËAah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jæAh´M; hjÍAh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ!destroy a session from the kernel”h]”hŒ!destroy a session from the kernel”…”�”}”(hj˜Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´M; hj•Bh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjÍAh²hh³jæAh´M; ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj°Bjäj°Bjå‰jæ‰jç‰uh1jXh²hhjØ-h³Nh´Nubjé)�”}”(hŒå**Parameters** ``struct iscsi_cls_session *session`` session to destroy **Description** Force the destruction of a session from the kernel. This should only be used when userspace is no longer running during system shutdown.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjºBh]”hŒ Parameters”…”�”}”(hj¼Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj¸Bubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´M? hj´Bubj7)�”}”(hhh]”j<)�”}”(hŒ9``struct iscsi_cls_session *session`` session to destroy ”h]”(jB)�”}”(hŒ%``struct iscsi_cls_session *session``”h]”jH)�”}”(hjÙBh]”hŒ!struct iscsi_cls_session *session”…”�”}”(hjÛBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj×Bubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´M< hjÓBubj^)�”}”(hhh]”hì)�”}”(hŒsession to destroy”h]”hŒsession to destroy”…”�”}”(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&]”uh1j6hj´Bubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjCh]”hŒ Description”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjCubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´M> hj´Bubhì)�”}”(hŒˆForce the destruction of a session from the kernel. This should only be used when userspace is no longer running during system shutdown.”h]”hŒˆForce the destruction of a session from the kernel. This should only be used when userspace is no longer running during system shutdown.”…”�”}”(hj*Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´M= hj´Bubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjØ-h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒiscsi_alloc_conn (C function)”Œc.iscsi_alloc_conn”hNt”auh1jGhjØ-h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒgstruct iscsi_cls_conn * iscsi_alloc_conn (struct iscsi_cls_session *session, int dd_size, uint32_t cid)”h]”jd)�”}”(hŒestruct iscsi_cls_conn *iscsi_alloc_conn(struct iscsi_cls_session *session, int dd_size, uint32_t cid)”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjYCh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjUCh²hh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´Mb ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjgCh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjUCh²hh³jfCh´Mb ubh)�”}”(hhh]”j“)�”}”(hŒiscsi_cls_conn”h]”hŒiscsi_cls_conn”…”�”}”(hjxCh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjuCubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jzCŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j Œiscsi_alloc_conn”sbŒc.iscsi_alloc_conn”†”asbuh1hhjUCh²hh³jfCh´Mb ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™Ch²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjUCh²hh³jfCh´Mb ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj§Ch²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjUCh²hh³jfCh´Mb ubj�)�”}”(hŒiscsi_alloc_conn”h]”j“)�”}”(hj–Ch]”hŒiscsi_alloc_conn”…”�”}”(hj¸Ch²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj´Cubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjUCh²hh³jfCh´Mb ubjÊ)�”}”(hŒ>(struct iscsi_cls_session *session, int dd_size, uint32_t cid)”h]”(jÐ)�”}”(hŒ!struct iscsi_cls_session *session”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjÓCh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjÏCubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjàCh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÏCubh)�”}”(hhh]”j“)�”}”(hŒiscsi_cls_session”h]”hŒiscsi_cls_session”…”�”}”(hjñCh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjîCubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jóCŒmodname”NŒ classname”Njôj÷)�”}”jú]”j”CŒc.iscsi_alloc_conn”†”asbuh1hhjÏCubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÏCubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjÏCubj“)�”}”(hŒsession”h]”hŒsession”…”�”}”(hj*Dh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÏCubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjËCubjÐ)�”}”(hŒ int dd_size”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hjCDh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj?Dubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQDh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj?Dubj“)�”}”(hŒdd_size”h]”hŒdd_size”…”�”}”(hj_Dh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj?Dubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjËCubjÐ)�”}”(hŒ uint32_t cid”h]”(h)�”}”(hhh]”j“)�”}”(hŒuint32_t”h]”hŒuint32_t”…”�”}”(hj{Dh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjxDubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j}DŒmodname”NŒ classname”Njôj÷)�”}”jú]”j”CŒc.iscsi_alloc_conn”†”asbuh1hhjtDubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™Dh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjtDubj“)�”}”(hŒcid”h]”hŒcid”…”�”}”(hj§Dh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjtDubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjËCubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjUCh²hh³jfCh´Mb ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjQCh²hh³jfCh´Mb ubah}”(h]”jLCah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jfCh´Mb hjNCh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒalloc iscsi class connection”h]”hŒalloc iscsi class connection”…”�”}”(hjÑDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´Mb hjÎDh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjNCh²hh³jfCh´Mb ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjéDjäjéDjå‰jæ‰jç‰uh1jXh²hhjØ-h³Nh´Nubjé)�”}”(hŒ—**Parameters** ``struct iscsi_cls_session *session`` iscsi cls session ``int dd_size`` private driver data size ``uint32_t cid`` connection id”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjóDh]”hŒ Parameters”…”�”}”(hjõDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjñDubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´Mf hjíDubj7)�”}”(hhh]”(j<)�”}”(hŒ8``struct iscsi_cls_session *session`` iscsi cls session ”h]”(jB)�”}”(hŒ%``struct iscsi_cls_session *session``”h]”jH)�”}”(hjEh]”hŒ!struct iscsi_cls_session *session”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjEubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´Mc hj Eubj^)�”}”(hhh]”hì)�”}”(hŒiscsi cls session”h]”hŒiscsi cls session”…”�”}”(hj+Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j'Eh´Mc hj(Eubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj Eubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j'Eh´Mc hj Eubj<)�”}”(hŒ)``int dd_size`` private driver data size ”h]”(jB)�”}”(hŒ``int dd_size``”h]”jH)�”}”(hjKEh]”hŒ int dd_size”…”�”}”(hjMEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjIEubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´Md hjEEubj^)�”}”(hhh]”hì)�”}”(hŒprivate driver data size”h]”hŒprivate driver data size”…”�”}”(hjdEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j`Eh´Md hjaEubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjEEubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j`Eh´Md hj Eubj<)�”}”(hŒ``uint32_t cid`` connection id”h]”(jB)�”}”(hŒ``uint32_t cid``”h]”jH)�”}”(hj„Eh]”hŒ uint32_t cid”…”�”}”(hj†Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj‚Eubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´Mf hj~Eubj^)�”}”(hhh]”hì)�”}”(hŒ connection id”h]”hŒ connection id”…”�”}”(hj�Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´Me hjšEubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj~Eubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j™Eh´Mf hj Eubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjíDubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjØ-h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒiscsi_add_conn (C function)”Œc.iscsi_add_conn”hNt”auh1jGhjØ-h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ0int iscsi_add_conn (struct iscsi_cls_conn *conn)”h]”jd)�”}”(hŒ/int iscsi_add_conn(struct iscsi_cls_conn *conn)”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hjÞEh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjÚEh²hh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´M� ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjíEh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÚEh²hh³jìEh´M� ubj�)�”}”(hŒiscsi_add_conn”h]”j“)�”}”(hŒiscsi_add_conn”h]”hŒiscsi_add_conn”…”�”}”(hjÿEh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjûEubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjÚEh²hh³jìEh´M� ubjÊ)�”}”(hŒ(struct iscsi_cls_conn *conn)”h]”jÐ)�”}”(hŒstruct iscsi_cls_conn *conn”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjFubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(Fh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjFubh)�”}”(hhh]”j“)�”}”(hŒiscsi_cls_conn”h]”hŒiscsi_cls_conn”…”�”}”(hj9Fh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj6Fubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j;FŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jFsbŒc.iscsi_add_conn”†”asbuh1hhjFubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYFh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjFubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjgFh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjFubj“)�”}”(hŒconn”h]”hŒconn”…”�”}”(hjtFh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjFubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjFubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjÚEh²hh³jìEh´M� ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjÖEh²hh³jìEh´M� ubah}”(h]”jÑEah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jìEh´M� hjÓEh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒadd iscsi class connection”h]”hŒadd iscsi class connection”…”�”}”(hjžFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´M� hj›Fh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjÓEh²hh³jìEh´M� ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj¶Fjäj¶Fjå‰jæ‰jç‰uh1jXh²hhjØ-h³Nh´Nubjé)�”}”(hŒÞ**Parameters** ``struct iscsi_cls_conn *conn`` iscsi cls connection **Description** This will expose iscsi_cls_conn to sysfs so make sure the related resources for sysfs attributes are initialized before calling this.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjÀFh]”hŒ Parameters”…”�”}”(hjÂFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj¾Fubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´M‘ hjºFubj7)�”}”(hhh]”j<)�”}”(hŒ5``struct iscsi_cls_conn *conn`` iscsi cls connection ”h]”(jB)�”}”(hŒ``struct iscsi_cls_conn *conn``”h]”jH)�”}”(hjßFh]”hŒstruct iscsi_cls_conn *conn”…”�”}”(hjáFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjÝFubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´MŽ hjÙFubj^)�”}”(hhh]”hì)�”}”(hŒiscsi cls connection”h]”hŒiscsi cls connection”…”�”}”(hjøFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jôFh´MŽ hjõFubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÙFubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jôFh´MŽ hjÖFubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjºFubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjGh]”hŒ Description”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjGubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´M� hjºFubhì)�”}”(hŒ…This will expose iscsi_cls_conn to sysfs so make sure the related resources for sysfs attributes are initialized before calling this.”h]”hŒ…This will expose iscsi_cls_conn to sysfs so make sure the related resources for sysfs attributes are initialized before calling this.”…”�”}”(hj0Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´M� hjºFubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjØ-h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒiscsi_remove_conn (C function)”Œc.iscsi_remove_conn”hNt”auh1jGhjØ-h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ4void iscsi_remove_conn (struct iscsi_cls_conn *conn)”h]”jd)�”}”(hŒ3void iscsi_remove_conn(struct iscsi_cls_conn *conn)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj_Gh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj[Gh²hh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´M° ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnGh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj[Gh²hh³jmGh´M° ubj�)�”}”(hŒiscsi_remove_conn”h]”j“)�”}”(hŒiscsi_remove_conn”h]”hŒiscsi_remove_conn”…”�”}”(hj€Gh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj|Gubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj[Gh²hh³jmGh´M° ubjÊ)�”}”(hŒ(struct iscsi_cls_conn *conn)”h]”jÐ)�”}”(hŒstruct iscsi_cls_conn *conn”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjœGh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj˜Gubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©Gh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj˜Gubh)�”}”(hhh]”j“)�”}”(hŒiscsi_cls_conn”h]”hŒiscsi_cls_conn”…”�”}”(hjºGh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj·Gubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j¼GŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j j‚GsbŒc.iscsi_remove_conn”†”asbuh1hhj˜Gubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚGh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj˜Gubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjèGh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj˜Gubj“)�”}”(hŒconn”h]”hŒconn”…”�”}”(hjõGh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj˜Gubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj”Gubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhj[Gh²hh³jmGh´M° ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjWGh²hh³jmGh´M° ubah}”(h]”jRGah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jmGh´M° hjTGh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ(remove iscsi class connection from sysfs”h]”hŒ(remove iscsi class connection from sysfs”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´M° hjHh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjTGh²hh³jmGh´M° ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj7Hjäj7Hjå‰jæ‰jç‰uh1jXh²hhjØ-h³Nh´Nubjé)�”}”(hŒÎ**Parameters** ``struct iscsi_cls_conn *conn`` iscsi cls connection **Description** Remove iscsi_cls_conn from sysfs, and wait for previous read/write of iscsi_cls_conn's attributes in sysfs to finish.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjAHh]”hŒ Parameters”…”�”}”(hjCHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj?Hubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´M´ hj;Hubj7)�”}”(hhh]”j<)�”}”(hŒ5``struct iscsi_cls_conn *conn`` iscsi cls connection ”h]”(jB)�”}”(hŒ``struct iscsi_cls_conn *conn``”h]”jH)�”}”(hj`Hh]”hŒstruct iscsi_cls_conn *conn”…”�”}”(hjbHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj^Hubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´M± hjZHubj^)�”}”(hhh]”hì)�”}”(hŒiscsi cls connection”h]”hŒiscsi cls connection”…”�”}”(hjyHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³juHh´M± hjvHubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjZHubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³juHh´M± hjWHubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj;Hubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hj›Hh]”hŒ Description”…”�”}”(hj�Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj™Hubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´M³ hj;Hubhì)�”}”(hŒuRemove iscsi_cls_conn from sysfs, and wait for previous read/write of iscsi_cls_conn's attributes in sysfs to finish.”h]”hŒwRemove iscsi_cls_conn from sysfs, and wait for previous read/write of iscsi_cls_conn’s attributes in sysfs to finish.”…”�”}”(hj±Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´M² hj;Hubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjØ-h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ iscsi_session_event (C function)”Œc.iscsi_session_event”hNt”auh1jGhjØ-h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒVint iscsi_session_event (struct iscsi_cls_session *session, enum iscsi_uevent_e event)”h]”jd)�”}”(hŒUint iscsi_session_event(struct iscsi_cls_session *session, enum iscsi_uevent_e event)”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hjàHh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjÜHh²hh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´M& ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïHh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÜHh²hh³jîHh´M& ubj�)�”}”(hŒiscsi_session_event”h]”j“)�”}”(hŒiscsi_session_event”h]”hŒiscsi_session_event”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjýHubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjÜHh²hh³jîHh´M& ubjÊ)�”}”(hŒ>(struct iscsi_cls_session *session, enum iscsi_uevent_e event)”h]”(jÐ)�”}”(hŒ!struct iscsi_cls_session *session”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjIubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*Ih²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjIubh)�”}”(hhh]”j“)�”}”(hŒiscsi_cls_session”h]”hŒiscsi_cls_session”…”�”}”(hj;Ih²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj8Iubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j=IŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jIsbŒc.iscsi_session_event”†”asbuh1hhjIubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[Ih²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjIubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjiIh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjIubj“)�”}”(hŒsession”h]”hŒsession”…”�”}”(hjvIh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjIubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjIubjÐ)�”}”(hŒenum iscsi_uevent_e event”h]”(jj)�”}”(hjf9h]”hŒenum”…”�”}”(hj�Ih²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj‹Iubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœIh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj‹Iubh)�”}”(hhh]”j“)�”}”(hŒiscsi_uevent_e”h]”hŒiscsi_uevent_e”…”�”}”(hj­Ih²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjªIubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j¯IŒmodname”NŒ classname”Njôj÷)�”}”jú]”jWIŒc.iscsi_session_event”†”asbuh1hhj‹Iubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjËIh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj‹Iubj“)�”}”(hŒevent”h]”hŒevent”…”�”}”(hjÙIh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj‹Iubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjIubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjÜHh²hh³jîHh´M& ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjØHh²hh³jîHh´M& ubah}”(h]”jÓHah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jîHh´M& hjÕHh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ$send session destr. completion event”h]”hŒ$send session destr. completion event”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´M& hjJh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjÕHh²hh³jîHh´M& ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjJjäjJjå‰jæ‰jç‰uh1jXh²hhjØ-h³Nh´Nubjé)�”}”(hŒz**Parameters** ``struct iscsi_cls_session *session`` iscsi class session ``enum iscsi_uevent_e event`` type of event”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj%Jh]”hŒ Parameters”…”�”}”(hj'Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj#Jubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´M* hjJubj7)�”}”(hhh]”(j<)�”}”(hŒ:``struct iscsi_cls_session *session`` iscsi class session ”h]”(jB)�”}”(hŒ%``struct iscsi_cls_session *session``”h]”jH)�”}”(hjDJh]”hŒ!struct iscsi_cls_session *session”…”�”}”(hjFJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjBJubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´M' hj>Jubj^)�”}”(hhh]”hì)�”}”(hŒiscsi class session”h]”hŒiscsi class session”…”�”}”(hj]Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jYJh´M' hjZJubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj>Jubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jYJh´M' hj;Jubj<)�”}”(hŒ+``enum iscsi_uevent_e event`` type of event”h]”(jB)�”}”(hŒ``enum iscsi_uevent_e event``”h]”jH)�”}”(hj}Jh]”hŒenum iscsi_uevent_e event”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj{Jubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´M) hjwJubj^)�”}”(hhh]”hì)�”}”(hŒ type of event”h]”hŒ type of event”…”�”}”(hj–Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´M( hj“Jubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjwJubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j’Jh´M) hj;Jubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjJubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjØ-h²hh³Nh´Nubeh}”(h]”Œiscsi-transport-class”ah ]”h"]”Œiscsi transport class”ah$]”h&]”uh1hµhjŒh²hh³hÊh´Kóubh¶)�”}”(hhh]”(h»)�”}”(hŒ*Serial Attached SCSI (SAS) transport class”h]”hŒ*Serial Attached SCSI (SAS) transport class”…”�”}”(hjÉJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjÆJh²hh³hÊh´Kýubhì)�”}”(hŒ”The file drivers/scsi/scsi_transport_sas.c defines transport attributes for Serial Attached SCSI, a variant of SATA aimed at large high-end systems.”h]”hŒ”The file drivers/scsi/scsi_transport_sas.c defines transport attributes for Serial Attached SCSI, a variant of SATA aimed at large high-end systems.”…”�”}”(hj×Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KÿhjÆJh²hubhì)�”}”(hŒéThe SAS transport class contains common code to deal with SAS HBAs, an approximated representation of SAS topologies in the driver model, and various sysfs attributes to expose these topologies and management interfaces to userspace.”h]”hŒéThe SAS transport class contains common code to deal with SAS HBAs, an approximated representation of SAS topologies in the driver model, and various sysfs attributes to expose these topologies and management interfaces to userspace.”…”�”}”(hjåJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MhjÆJh²hubhì)�”}”(hXºIn addition to the basic SCSI core objects this transport class introduces two additional intermediate objects: The SAS PHY as represented by struct sas_phy defines an "outgoing" PHY on a SAS HBA or Expander, and the SAS remote PHY represented by struct sas_rphy defines an "incoming" PHY on a SAS Expander or end device. Note that this is purely a software concept, the underlying hardware for a PHY and a remote PHY is the exactly the same.”h]”hXÂIn addition to the basic SCSI core objects this transport class introduces two additional intermediate objects: The SAS PHY as represented by struct sas_phy defines an “outgoingâ€� PHY on a SAS HBA or Expander, and the SAS remote PHY represented by struct sas_rphy defines an “incomingâ€� PHY on a SAS Expander or end device. Note that this is purely a software concept, the underlying hardware for a PHY and a remote PHY is the exactly the same.”…”�”}”(hjóJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MhjÆJh²hubhì)�”}”(hŒªThere is no concept of a SAS port in this code, users can see what PHYs form a wide port based on the port_identifier attribute, which is the same for all PHYs in a port.”h]”hŒªThere is no concept of a SAS port in this code, users can see what PHYs form a wide port based on the port_identifier attribute, which is the same for all PHYs in a port.”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MhjÆJh²hubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ sas_remove_children (C function)”Œc.sas_remove_children”hNt”auh1jGhjÆJh²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ-void sas_remove_children (struct device *dev)”h]”jd)�”}”(hŒ,void sas_remove_children(struct device *dev)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj(Kh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj$Kh²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´MDubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7Kh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj$Kh²hh³j6Kh´MDubj�)�”}”(hŒsas_remove_children”h]”j“)�”}”(hŒsas_remove_children”h]”hŒsas_remove_children”…”�”}”(hjIKh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjEKubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj$Kh²hh³j6Kh´MDubjÊ)�”}”(hŒ(struct device *dev)”h]”jÐ)�”}”(hŒstruct device *dev”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjeKh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjaKubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrKh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjaKubh)�”}”(hhh]”j“)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjƒKh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj€Kubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j…KŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jKKsbŒc.sas_remove_children”†”asbuh1hhjaKubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£Kh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjaKubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj±Kh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjaKubj“)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj¾Kh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjaKubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj]Kubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhj$Kh²hh³j6Kh´MDubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj Kh²hh³j6Kh´MDubah}”(h]”jKah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j6Kh´MDhjKh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ'tear down a devices SAS data structures”h]”hŒ'tear down a devices SAS data structures”…”�”}”(hjèKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´MDhjåKh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjKh²hh³j6Kh´MDubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjLjäjLjå‰jæ‰jç‰uh1jXh²hhjÆJh³Nh´Nubjé)�”}”(hŒ•**Parameters** ``struct device *dev`` device belonging to the sas object **Description** Removes all SAS PHYs and remote PHYs for a given object”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj Lh]”hŒ Parameters”…”�”}”(hj Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjLubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´MHhjLubj7)�”}”(hhh]”j<)�”}”(hŒ:``struct device *dev`` device belonging to the sas object ”h]”(jB)�”}”(hŒ``struct device *dev``”h]”jH)�”}”(hj)Lh]”hŒstruct device *dev”…”�”}”(hj+Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj'Lubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´MEhj#Lubj^)�”}”(hhh]”hì)�”}”(hŒ"device belonging to the sas object”h]”hŒ"device belonging to the sas object”…”�”}”(hjBLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j>Lh´MEhj?Lubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj#Lubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j>Lh´MEhj Lubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjLubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjdLh]”hŒ Description”…”�”}”(hjfLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjbLubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´MGhjLubhì)�”}”(hŒ7Removes all SAS PHYs and remote PHYs for a given object”h]”hŒ7Removes all SAS PHYs and remote PHYs for a given object”…”�”}”(hjzLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´MFhjLubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjÆJh²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒsas_remove_host (C function)”Œc.sas_remove_host”hNt”auh1jGhjÆJh²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ.void sas_remove_host (struct Scsi_Host *shost)”h]”jd)�”}”(hŒ-void sas_remove_host(struct Scsi_Host *shost)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj©Lh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj¥Lh²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´MQubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸Lh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj¥Lh²hh³j·Lh´MQubj�)�”}”(hŒsas_remove_host”h]”j“)�”}”(hŒsas_remove_host”h]”hŒsas_remove_host”…”�”}”(hjÊLh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÆLubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj¥Lh²hh³j·Lh´MQubjÊ)�”}”(hŒ(struct Scsi_Host *shost)”h]”jÐ)�”}”(hŒstruct Scsi_Host *shost”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjæLh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjâLubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóLh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjâLubh)�”}”(hhh]”j“)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjMubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jMŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jÌLsbŒc.sas_remove_host”†”asbuh1hhjâLubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$Mh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjâLubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj2Mh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjâLubj“)�”}”(hŒshost”h]”hŒshost”…”�”}”(hj?Mh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjâLubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjÞLubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhj¥Lh²hh³j·Lh´MQubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj¡Lh²hh³j·Lh´MQubah}”(h]”jœLah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j·Lh´MQhjžLh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ+tear down a Scsi_Host's SAS data structures”h]”hŒ-tear down a Scsi_Host’s SAS data structures”…”�”}”(hjiMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´MQhjfMh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjžLh²hh³j·Lh´MQubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj�Mjäj�Mjå‰jæ‰jç‰uh1jXh²hhjÆJh³Nh´Nubjé)�”}”(hX**Parameters** ``struct Scsi_Host *shost`` Scsi Host that is torn down **Description** Removes all SAS PHYs and remote PHYs for a given Scsi_Host and remove the Scsi_Host as well. **Note** Do not call scsi_remove_host() on the Scsi_Host any more, as it is already removed.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj‹Mh]”hŒ Parameters”…”�”}”(hj�Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj‰Mubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´MUhj…Mubj7)�”}”(hhh]”j<)�”}”(hŒ8``struct Scsi_Host *shost`` Scsi Host that is torn down ”h]”(jB)�”}”(hŒ``struct Scsi_Host *shost``”h]”jH)�”}”(hjªMh]”hŒstruct Scsi_Host *shost”…”�”}”(hj¬Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj¨Mubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´MRhj¤Mubj^)�”}”(hhh]”hì)�”}”(hŒScsi Host that is torn down”h]”hŒScsi Host that is torn down”…”�”}”(hjÃMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¿Mh´MRhjÀMubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj¤Mubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j¿Mh´MRhj¡Mubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj…Mubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjåMh]”hŒ Description”…”�”}”(hjçMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjãMubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´MThj…Mubhì)�”}”(hŒ\Removes all SAS PHYs and remote PHYs for a given Scsi_Host and remove the Scsi_Host as well.”h]”hŒ\Removes all SAS PHYs and remote PHYs for a given Scsi_Host and remove the Scsi_Host as well.”…”�”}”(hjûMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´MShj…Mubhì)�”}”(hŒ**Note**”h]”jó)�”}”(hj Nh]”hŒNote”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´MVhj…Mubhì)�”}”(hŒSDo not call scsi_remove_host() on the Scsi_Host any more, as it is already removed.”h]”hŒSDo not call scsi_remove_host() on the Scsi_Host any more, as it is already removed.”…”�”}”(hj"Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´MWhj…Mubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjÆJh²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒsas_get_address (C function)”Œc.sas_get_address”hNt”auh1jGhjÆJh²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ.u64 sas_get_address (struct scsi_device *sdev)”h]”jd)�”}”(hŒ-u64 sas_get_address(struct scsi_device *sdev)”h]”(h)�”}”(hhh]”j“)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjTNh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjQNubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jVNŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j Œsas_get_address”sbŒc.sas_get_address”†”asbuh1hhjMNh²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´Mbubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvNh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjMNh²hh³juNh´Mbubj�)�”}”(hŒsas_get_address”h]”j“)�”}”(hjrNh]”hŒsas_get_address”…”�”}”(hjˆNh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj„Nubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjMNh²hh³juNh´MbubjÊ)�”}”(hŒ(struct scsi_device *sdev)”h]”jÐ)�”}”(hŒstruct scsi_device *sdev”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj£Nh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjŸNubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°Nh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjŸNubh)�”}”(hhh]”j“)�”}”(hŒ scsi_device”h]”hŒ scsi_device”…”�”}”(hjÁNh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj¾Nubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jÃNŒmodname”NŒ classname”Njôj÷)�”}”jú]”jpNŒc.sas_get_address”†”asbuh1hhjŸNubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjßNh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjŸNubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjíNh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjŸNubj“)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hjúNh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjŸNubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj›Nubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjMNh²hh³juNh´Mbubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjINh²hh³juNh´Mbubah}”(h]”jDNah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³juNh´MbhjFNh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ$return the SAS address of the device”h]”hŒ$return the SAS address of the device”…”�”}”(hj$Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´Mbhj!Oh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjFNh²hh³juNh´Mbubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjPh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj:Pubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKPh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj:Pubh)�”}”(hhh]”j“)�”}”(hŒ scsi_device”h]”hŒ scsi_device”…”�”}”(hj\Ph²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjYPubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j^PŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j j$PsbŒc.sas_tlr_supported”†”asbuh1hhj:Pubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|Ph²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj:Pubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjŠPh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj:Pubj“)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hj—Ph²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj:Pubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj6Pubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjáOh²hh³jóOh´Mpubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjÝOh²hh³jóOh´Mpubah}”(h]”jØOah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jóOh´MphjÚOh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒchecking TLR bit in vpd 0x90”h]”hŒchecking TLR bit in vpd 0x90”…”�”}”(hjÁPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´Mphj¾Ph²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjÚOh²hh³jóOh´Mpubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjÙPjäjÙPjå‰jæ‰jç‰uh1jXh²hhjÆJh³Nh´Nubjé)�”}”(hŒ¶**Parameters** ``struct scsi_device *sdev`` scsi device struct **Description** Check Transport Layer Retries are supported or not. If vpd page 0x90 is present, TRL is supported.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjãPh]”hŒ Parameters”…”�”}”(hjåPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjáPubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´MthjÝPubj7)�”}”(hhh]”j<)�”}”(hŒ0``struct scsi_device *sdev`` scsi device struct ”h]”(jB)�”}”(hŒ``struct scsi_device *sdev``”h]”jH)�”}”(hjQh]”hŒstruct scsi_device *sdev”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjQubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´MqhjüPubj^)�”}”(hhh]”hì)�”}”(hŒscsi device struct”h]”hŒscsi device struct”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jQh´MqhjQubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjüPubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jQh´MqhjùPubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjÝPubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hj=Qh]”hŒ Description”…”�”}”(hj?Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj;Qubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´MshjÝPubhì)�”}”(hŒbCheck Transport Layer Retries are supported or not. If vpd page 0x90 is present, TRL is supported.”h]”hŒbCheck Transport Layer Retries are supported or not. If vpd page 0x90 is present, TRL is supported.”…”�”}”(hjSQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´MrhjÝPubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjÆJh²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒsas_disable_tlr (C function)”Œc.sas_disable_tlr”hNt”auh1jGhjÆJh²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ/void sas_disable_tlr (struct scsi_device *sdev)”h]”jd)�”}”(hŒ.void sas_disable_tlr(struct scsi_device *sdev)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj‚Qh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj~Qh²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´M–ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘Qh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj~Qh²hh³j�Qh´M–ubj�)�”}”(hŒsas_disable_tlr”h]”j“)�”}”(hŒsas_disable_tlr”h]”hŒsas_disable_tlr”…”�”}”(hj£Qh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjŸQubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj~Qh²hh³j�Qh´M–ubjÊ)�”}”(hŒ(struct scsi_device *sdev)”h]”jÐ)�”}”(hŒstruct scsi_device *sdev”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj¿Qh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj»Qubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌQh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj»Qubh)�”}”(hhh]”j“)�”}”(hŒ scsi_device”h]”hŒ scsi_device”…”�”}”(hjÝQh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÚQubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jßQŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j j¥QsbŒc.sas_disable_tlr”†”asbuh1hhj»Qubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýQh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj»Qubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj Rh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj»Qubj“)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj»Qubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj·Qubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhj~Qh²hh³j�Qh´M–ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjzQh²hh³j�Qh´M–ubah}”(h]”juQah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j�Qh´M–hjwQh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒsetting TLR flags”h]”hŒsetting TLR flags”…”�”}”(hjBRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´M–hj?Rh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjwQh²hh³j�Qh´M–ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjZRjäjZRjå‰jæ‰jç‰uh1jXh²hhjÆJh³Nh´Nubjé)�”}”(hŒq**Parameters** ``struct scsi_device *sdev`` scsi device struct **Description** Seting tlr_enabled flag to 0.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjdRh]”hŒ Parameters”…”�”}”(hjfRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjbRubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´Mšhj^Rubj7)�”}”(hhh]”j<)�”}”(hŒ0``struct scsi_device *sdev`` scsi device struct ”h]”(jB)�”}”(hŒ``struct scsi_device *sdev``”h]”jH)�”}”(hjƒRh]”hŒstruct scsi_device *sdev”…”�”}”(hj…Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj�Rubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´M—hj}Rubj^)�”}”(hhh]”hì)�”}”(hŒscsi device struct”h]”hŒscsi device struct”…”�”}”(hjœRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j˜Rh´M—hj™Rubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj}Rubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j˜Rh´M—hjzRubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj^Rubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hj¾Rh]”hŒ Description”…”�”}”(hjÀRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj¼Rubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´M™hj^Rubhì)�”}”(hŒSeting tlr_enabled flag to 0.”h]”hŒSeting tlr_enabled flag to 0.”…”�”}”(hjÔRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´M˜hj^Rubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjÆJh²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒsas_enable_tlr (C function)”Œc.sas_enable_tlr”hNt”auh1jGhjÆJh²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ.void sas_enable_tlr (struct scsi_device *sdev)”h]”jd)�”}”(hŒ-void sas_enable_tlr(struct scsi_device *sdev)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjÿRh²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´M¦ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÿRh²hh³jSh´M¦ubj�)�”}”(hŒsas_enable_tlr”h]”j“)�”}”(hŒsas_enable_tlr”h]”hŒsas_enable_tlr”…”�”}”(hj$Sh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj Subah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjÿRh²hh³jSh´M¦ubjÊ)�”}”(hŒ(struct scsi_device *sdev)”h]”jÐ)�”}”(hŒstruct scsi_device *sdev”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj@Sh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjhjiubj7)�”}”(hhh]”j<)�”}”(hŒ-``const struct device *dev`` device to check ”h]”(jB)�”}”(hŒ``const struct device *dev``”h]”jH)�”}”(hj-ih]”hŒconst struct device *dev”…”�”}”(hj/ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj+iubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´M;hj'iubj^)�”}”(hhh]”hì)�”}”(hŒdevice to check”h]”hŒdevice to check”…”�”}”(hjFih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jBih´M;hjCiubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj'iubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jBih´M;hj$iubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjiubhì)�”}”(hŒ **Return**”h]”jó)�”}”(hjhih]”hŒReturn”…”�”}”(hjjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjfiubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´M=hjiubhì)�”}”(hŒ5``1`` if the device represents a SAS Port, ``0`` else”h]”(jH)�”}”(hŒ``1``”h]”hŒ1”…”�”}”(hj‚ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj~iubhŒ& if the device represents a SAS Port, ”…”�”}”(hj~ih²hh³Nh´NubjH)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hj”ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj~iubhŒ else”…”�”}”(hj~ih²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´M=hjiubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjÆJh²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒsas_port_get_phy (C function)”Œc.sas_port_get_phy”hNt”auh1jGhjÆJh²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ9struct sas_phy * sas_port_get_phy (struct sas_port *port)”h]”jd)�”}”(hŒ7struct sas_phy *sas_port_get_phy(struct sas_port *port)”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjÍih²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjÉih²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´MGubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛih²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÉih²hh³jÚih´MGubh)�”}”(hhh]”j“)�”}”(hŒsas_phy”h]”hŒsas_phy”…”�”}”(hjìih²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjéiubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jîiŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j Œsas_port_get_phy”sbŒc.sas_port_get_phy”†”asbuh1hhjÉih²hh³jÚih´MGubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj jh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÉih²hh³jÚih´MGubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjÉih²hh³jÚih´MGubj�)�”}”(hŒsas_port_get_phy”h]”j“)�”}”(hj jh]”hŒsas_port_get_phy”…”�”}”(hj,jh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj(jubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjÉih²hh³jÚih´MGubjÊ)�”}”(hŒ(struct sas_port *port)”h]”jÐ)�”}”(hŒstruct sas_port *port”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjGjh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjCjubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTjh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjCjubh)�”}”(hhh]”j“)�”}”(hŒsas_port”h]”hŒsas_port”…”�”}”(hjejh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjbjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jgjŒmodname”NŒ classname”Njôj÷)�”}”jú]”jjŒc.sas_port_get_phy”†”asbuh1hhjCjubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒjh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjCjubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj‘jh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjCjubj“)�”}”(hŒport”h]”hŒport”…”�”}”(hjžjh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjCjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj?jubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjÉih²hh³jÚih´MGubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjÅih²hh³jÚih´MGubah}”(h]”jÀiah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jÚih´MGhjÂih²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ(try to take a reference on a port member”h]”hŒ(try to take a reference on a port member”…”�”}”(hjÈjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´MGhjÅjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjÂih²hh³jÚih´MGubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjàjjäjàjjå‰jæ‰jç‰uh1jXh²hhjÆJh³Nh´Nubjé)�”}”(hŒ9**Parameters** ``struct sas_port *port`` port to check”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjêjh]”hŒ Parameters”…”�”}”(hjìjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjèjubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´MKhjäjubj7)�”}”(hhh]”j<)�”}”(hŒ'``struct sas_port *port`` port to check”h]”(jB)�”}”(hŒ``struct sas_port *port``”h]”jH)�”}”(hj kh]”hŒstruct sas_port *port”…”�”}”(hj kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjkubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´MMhjkubj^)�”}”(hhh]”hì)�”}”(hŒ port to check”h]”hŒ port to check”…”�”}”(hj"kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´MHhjkubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjkubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jkh´MMhjkubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjäjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjÆJh²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒsas_port_add_phy (C function)”Œc.sas_port_add_phy”hNt”auh1jGhjÆJh²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒBvoid sas_port_add_phy (struct sas_port *port, struct sas_phy *phy)”h]”jd)�”}”(hŒAvoid sas_port_add_phy(struct sas_port *port, struct sas_phy *phy)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjckh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj_kh²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´M^ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrkh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj_kh²hh³jqkh´M^ubj�)�”}”(hŒsas_port_add_phy”h]”j“)�”}”(hŒsas_port_add_phy”h]”hŒsas_port_add_phy”…”�”}”(hj„kh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj€kubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj_kh²hh³jqkh´M^ubjÊ)�”}”(hŒ,(struct sas_port *port, struct sas_phy *phy)”h]”(jÐ)�”}”(hŒstruct sas_port *port”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj kh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjœkubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­kh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjœkubh)�”}”(hhh]”j“)�”}”(hŒsas_port”h]”hŒsas_port”…”�”}”(hj¾kh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj»kubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jÀkŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j j†ksbŒc.sas_port_add_phy”†”asbuh1hhjœkubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞkh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjœkubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjìkh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjœkubj“)�”}”(hŒport”h]”hŒport”…”�”}”(hjùkh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjœkubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj˜kubjÐ)�”}”(hŒstruct sas_phy *phy”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjlubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjlubh)�”}”(hhh]”j“)�”}”(hŒsas_phy”h]”hŒsas_phy”…”�”}”(hj0lh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj-lubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j2lŒmodname”NŒ classname”Njôj÷)�”}”jú]”jÚkŒc.sas_port_add_phy”†”asbuh1hhjlubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNlh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjlubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj\lh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjlubj“)�”}”(hŒphy”h]”hŒphy”…”�”}”(hjilh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjlubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj˜kubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhj_kh²hh³jqkh´M^ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj[kh²hh³jqkh´M^ubah}”(h]”jVkah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jqkh´M^hjXkh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ-add another phy to a port to form a wide port”h]”hŒ-add another phy to a port to form a wide port”…”�”}”(hj“lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´M^hj�lh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjXkh²hh³jqkh´M^ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj«ljäj«ljå‰jæ‰jç‰uh1jXh²hhjÆJh³Nh´Nubjé)�”}”(hXô**Parameters** ``struct sas_port *port`` port to add the phy to ``struct sas_phy *phy`` phy to add **Description** When a port is initially created, it is empty (has no phys). All ports must have at least one phy to operated, and all wide ports must have at least two. The current code makes no difference between ports and wide ports, but the only object that can be connected to a remote device is a port, so ports must be formed on all devices with phys if they're connected to anything.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjµlh]”hŒ Parameters”…”�”}”(hj·lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj³lubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”•h´Mbhj¯lubj7)�”}”(hhh]”(j<)�”}”(hŒ1``struct sas_port *port`` port to add the phy to ”h]”(jB)�”}”(hŒ``struct sas_port *port``”h]”jH)�”}”(hjÔlh]”hŒstruct sas_port *port”…”�”}”(hjÖlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjÒlubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´M_hjÎlubj^)�”}”(hhh]”hì)�”}”(hŒport to add the phy to”h]”hŒport to add the phy to”…”�”}”(hjílh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jélh´M_hjêlubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÎlubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jélh´M_hjËlubj<)�”}”(hŒ#``struct sas_phy *phy`` phy to add ”h]”(jB)�”}”(hŒ``struct sas_phy *phy``”h]”jH)�”}”(hj mh]”hŒstruct sas_phy *phy”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj mubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´M`hjmubj^)�”}”(hhh]”hì)�”}”(hŒ phy to add”h]”hŒ phy to add”…”�”}”(hj&mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j"mh´M`hj#mubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjmubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j"mh´M`hjËlubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hj¯lubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjHmh]”hŒ Description”…”�”}”(hjJmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjFmubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´Mbhj¯lubhì)�”}”(hXyWhen a port is initially created, it is empty (has no phys). All ports must have at least one phy to operated, and all wide ports must have at least two. The current code makes no difference between ports and wide ports, but the only object that can be connected to a remote device is a port, so ports must be formed on all devices with phys if they're connected to anything.”h]”hX{When a port is initially created, it is empty (has no phys). All ports must have at least one phy to operated, and all wide ports must have at least two. The current code makes no difference between ports and wide ports, but the only object that can be connected to a remote device is a port, so ports must be formed on all devices with phys if they’re connected to anything.”…”�”}”(hj^mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´Mahj¯lubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjÆJh²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ sas_port_delete_phy (C function)”Œc.sas_port_delete_phy”hNt”auh1jGhjÆJh²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒEvoid sas_port_delete_phy (struct sas_port *port, struct sas_phy *phy)”h]”jd)�”}”(hŒDvoid sas_port_delete_phy(struct sas_port *port, struct sas_phy *phy)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj�mh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj‰mh²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´M„ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœmh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj‰mh²hh³j›mh´M„ubj�)�”}”(hŒsas_port_delete_phy”h]”j“)�”}”(hŒsas_port_delete_phy”h]”hŒsas_port_delete_phy”…”�”}”(hj®mh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjªmubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj‰mh²hh³j›mh´M„ubjÊ)�”}”(hŒ,(struct sas_port *port, struct sas_phy *phy)”h]”(jÐ)�”}”(hŒstruct sas_port *port”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjÊmh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjÆmubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×mh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÆmubh)�”}”(hhh]”j“)�”}”(hŒsas_port”h]”hŒsas_port”…”�”}”(hjèmh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjåmubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jêmŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j j°msbŒc.sas_port_delete_phy”†”asbuh1hhjÆmubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÆmubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjÆmubj“)�”}”(hŒport”h]”hŒport”…”�”}”(hj#nh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÆmubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjÂmubjÐ)�”}”(hŒstruct sas_phy *phy”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjstruct sas_rphy *sas_end_device_alloc(struct sas_port *parent)”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj·oh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj³oh²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´MÎubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅoh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj³oh²hh³jÄoh´MÎubh)�”}”(hhh]”j“)�”}”(hŒsas_rphy”h]”hŒsas_rphy”…”�”}”(hjÖoh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÓoubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jØoŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j Œsas_end_device_alloc”sbŒc.sas_end_device_alloc”†”asbuh1hhj³oh²hh³jÄoh´MÎubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷oh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj³oh²hh³jÄoh´MÎubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj³oh²hh³jÄoh´MÎubj�)�”}”(hŒsas_end_device_alloc”h]”j“)�”}”(hjôoh]”hŒsas_end_device_alloc”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjpubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj³oh²hh³jÄoh´MÎubjÊ)�”}”(hŒ(struct sas_port *parent)”h]”jÐ)�”}”(hŒstruct sas_port *parent”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj1ph²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj-pubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>ph²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj-pubh)�”}”(hhh]”j“)�”}”(hŒsas_port”h]”hŒsas_port”…”�”}”(hjOph²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjLpubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jQpŒmodname”NŒ classname”Njôj÷)�”}”jú]”jòoŒc.sas_end_device_alloc”†”asbuh1hhj-pubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjmph²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj-pubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj{ph²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj-pubj“)�”}”(hŒparent”h]”hŒparent”…”�”}”(hjˆph²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj-pubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj)pubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhj³oh²hh³jÄoh´MÎubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj¯oh²hh³jÄoh´MÎubah}”(h]”jªoah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jÄoh´MÎhj¬oh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ"allocate an rphy for an end device”h]”hŒ"allocate an rphy for an end device”…”�”}”(hj²ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´MÎhj¯ph²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj¬oh²hh³jÄoh´MÎubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjÊpjäjÊpjå‰jæ‰jç‰uh1jXh²hhjÆJh³Nh´Nubjé)�”}”(hŒÏ**Parameters** ``struct sas_port *parent`` which port **Description** Allocates an SAS remote PHY structure, connected to **parent**. **Return** SAS PHY allocated or ``NULL`` if the allocation failed.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjÔph]”hŒ Parameters”…”�”}”(hjÖph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÒpubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´MÒhjÎpubj7)�”}”(hhh]”j<)�”}”(hŒ'``struct sas_port *parent`` which port ”h]”(jB)�”}”(hŒ``struct sas_port *parent``”h]”jH)�”}”(hjóph]”hŒstruct sas_port *parent”…”�”}”(hjõph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjñpubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´MÏhjípubj^)�”}”(hhh]”hì)�”}”(hŒ which port”h]”hŒ which port”…”�”}”(hj qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jqh´MÏhj qubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjípubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jqh´MÏhjêpubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjÎpubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hj.qh]”hŒ Description”…”�”}”(hj0qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj,qubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´MÑhjÎpubhì)�”}”(hŒ?Allocates an SAS remote PHY structure, connected to **parent**.”h]”(hŒ4Allocates an SAS remote PHY structure, connected to ”…”�”}”(hjDqh²hh³Nh´Nubjó)�”}”(hŒ **parent**”h]”hŒparent”…”�”}”(hjLqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjDqubhŒ.”…”�”}”(hjDqh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´MÐhjÎpubhì)�”}”(hŒ **Return**”h]”jó)�”}”(hjgqh]”hŒReturn”…”�”}”(hjiqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjequbah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´MÒhjÎpubhì)�”}”(hŒ7SAS PHY allocated or ``NULL`` if the allocation failed.”h]”(hŒSAS PHY allocated or ”…”�”}”(hj}qh²hh³Nh´NubjH)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj…qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj}qubhŒ if the allocation failed.”…”�”}”(hj}qh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´MÓhjÎpubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjÆJh²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒsas_expander_alloc (C function)”Œc.sas_expander_alloc”hNt”auh1jGhjÆJh²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒYstruct sas_rphy * sas_expander_alloc (struct sas_port *parent, enum sas_device_type type)”h]”jd)�”}”(hŒWstruct sas_rphy *sas_expander_alloc(struct sas_port *parent, enum sas_device_type type)”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj¾qh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjºqh²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´Môubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌqh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjºqh²hh³jËqh´Môubh)�”}”(hhh]”j“)�”}”(hŒsas_rphy”h]”hŒsas_rphy”…”�”}”(hjÝqh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÚqubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jßqŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j Œsas_expander_alloc”sbŒc.sas_expander_alloc”†”asbuh1hhjºqh²hh³jËqh´Môubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþqh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjºqh²hh³jËqh´Môubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj rh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjºqh²hh³jËqh´Môubj�)�”}”(hŒsas_expander_alloc”h]”j“)�”}”(hjûqh]”hŒsas_expander_alloc”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjrubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjºqh²hh³jËqh´MôubjÊ)�”}”(hŒ4(struct sas_port *parent, enum sas_device_type type)”h]”(jÐ)�”}”(hŒstruct sas_port *parent”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj8rh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj4rubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjErh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj4rubh)�”}”(hhh]”j“)�”}”(hŒsas_port”h]”hŒsas_port”…”�”}”(hjVrh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjSrubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jXrŒmodname”NŒ classname”Njôj÷)�”}”jú]”jùqŒc.sas_expander_alloc”†”asbuh1hhj4rubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjtrh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj4rubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj‚rh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj4rubj“)�”}”(hŒparent”h]”hŒparent”…”�”}”(hj�rh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj4rubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj0rubjÐ)�”}”(hŒenum sas_device_type type”h]”(jj)�”}”(hjf9h]”hŒenum”…”�”}”(hj¨rh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj¤rubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµrh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj¤rubh)�”}”(hhh]”j“)�”}”(hŒsas_device_type”h]”hŒsas_device_type”…”�”}”(hjÆrh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÃrubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jÈrŒmodname”NŒ classname”Njôj÷)�”}”jú]”jùqŒc.sas_expander_alloc”†”asbuh1hhj¤rubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjärh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj¤rubj“)�”}”(hŒtype”h]”hŒtype”…”�”}”(hjòrh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj¤rubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj0rubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjºqh²hh³jËqh´Môubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj¶qh²hh³jËqh´Môubah}”(h]”j±qah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jËqh´Môhj³qh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ"allocate an rphy for an end device”h]”hŒ"allocate an rphy for an end device”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´Môhjsh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj³qh²hh³jËqh´Môubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj4sjäj4sjå‰jæ‰jç‰uh1jXh²hhjÆJh³Nh´Nubjé)�”}”(hX'**Parameters** ``struct sas_port *parent`` which port ``enum sas_device_type type`` SAS_EDGE_EXPANDER_DEVICE or SAS_FANOUT_EXPANDER_DEVICE **Description** Allocates an SAS remote PHY structure, connected to **parent**. **Return** SAS PHY allocated or ``NULL`` if the allocation failed.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj>sh]”hŒ Parameters”…”�”}”(hj@sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjvoid sas_release_transport (struct scsi_transport_template *t)”h]”jd)�”}”(hŒ=void sas_release_transport(struct scsi_transport_template *t)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjeh²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´Myubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjeh²hh³jwh´Myubj�)�”}”(hŒsas_release_transport”h]”j“)�”}”(hŒsas_release_transport”h]”hŒsas_release_transport”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj†ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjeh²hh³jwh´MyubjÊ)�”}”(hŒ#(struct scsi_transport_template *t)”h]”jÐ)�”}”(hŒ!struct scsi_transport_template *t”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj¢ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj¢ubh)�”}”(hhh]”j“)�”}”(hŒscsi_transport_template”h]”hŒscsi_transport_template”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÁubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jÆŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jŒsbŒc.sas_release_transport”†”asbuh1hhj¢ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj¢ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj¢ubj“)�”}”(hŒt”h]”hŒt”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj¢ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjžubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjeh²hh³jwh´Myubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjah²hh³jwh´Myubah}”(h]”j\ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jwh´Myhj^h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ'release SAS transport template instance”h]”hŒ'release SAS transport template instance”…”�”}”(hj)€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´Myhj&€h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj^h²hh³jwh´Myubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjA€jäjA€jå‰jæ‰jç‰uh1jXh²hhjÆJh³Nh´Nubjé)�”}”(hŒS**Parameters** ``struct scsi_transport_template *t`` transport template instance”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjK€h]”hŒ Parameters”…”�”}”(hjM€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjI€ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´M}hjE€ubj7)�”}”(hhh]”j<)�”}”(hŒA``struct scsi_transport_template *t`` transport template instance”h]”(jB)�”}”(hŒ%``struct scsi_transport_template *t``”h]”jH)�”}”(hjj€h]”hŒ!struct scsi_transport_template *t”…”�”}”(hjl€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjh€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´Mhjd€ubj^)�”}”(hhh]”hì)�”}”(hŒtransport template instance”h]”hŒtransport template instance”…”�”}”(hjƒ€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´Mzhj€€ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjd€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j€h´Mhja€ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjE€ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjÆJh²hh³Nh´Nubeh}”(h]”Œ(serial-attached-scsi-sas-transport-class”ah ]”h"]”Œ*serial attached scsi (sas) transport class”ah$]”h&]”uh1hµhjŒh²hh³hÊh´Kýubh¶)�”}”(hhh]”(h»)�”}”(hŒSATA transport class”h]”hŒSATA transport class”…”�”}”(hj¶€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj³€h²hh³hÊh´Mubhì)�”}”(hŒcThe SATA transport is handled by libata, which has its own book of documentation in this directory.”h]”hŒcThe SATA transport is handled by libata, which has its own book of documentation in this directory.”…”�”}”(hjÄ€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mhj³€h²hubeh}”(h]”Œsata-transport-class”ah ]”h"]”Œsata transport class”ah$]”h&]”uh1hµhjŒh²hh³hÊh´Mubh¶)�”}”(hhh]”(h»)�”}”(hŒ#Parallel SCSI (SPI) transport class”h]”hŒ#Parallel SCSI (SPI) transport class”…”�”}”(hjÝ€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjÚ€h²hh³hÊh´Mubhì)�”}”(hŒuThe file drivers/scsi/scsi_transport_spi.c defines transport attributes for traditional (fast/wide/ultra) SCSI buses.”h]”hŒuThe file drivers/scsi/scsi_transport_spi.c defines transport attributes for traditional (fast/wide/ultra) SCSI buses.”…”�”}”(hjë€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M hjÚ€h²hubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒspi_dv_device (C function)”Œc.spi_dv_device”hNt”auh1jGhjÚ€h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ-void spi_dv_device (struct scsi_device *sdev)”h]”jd)�”}”(hŒ,void spi_dv_device(struct scsi_device *sdev)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj�h²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:291: ./drivers/scsi/scsi_transport_spi.c”h´MÝubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!�h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj�h²hh³j �h´MÝubj�)�”}”(hŒ spi_dv_device”h]”j“)�”}”(hŒ spi_dv_device”h]”hŒ spi_dv_device”…”�”}”(hj3�h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj/�ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj�h²hh³j �h´MÝubjÊ)�”}”(hŒ(struct scsi_device *sdev)”h]”jÐ)�”}”(hŒstruct scsi_device *sdev”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjO�h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjK�ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\�h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjK�ubh)�”}”(hhh]”j“)�”}”(hŒ scsi_device”h]”hŒ scsi_device”…”�”}”(hjm�h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjj�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jo�Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j j5�sbŒc.spi_dv_device”†”asbuh1hhjK�ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj��h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjK�ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj›�h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjK�ubj“)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hj¨�h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjK�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjG�ubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhj�h²hh³j �h´MÝubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj �h²hh³j �h´MÝubah}”(h]”j�ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j �h´MÝhj�h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ"Do Domain Validation on the device”h]”hŒ"Do Domain Validation on the device”…”�”}”(hjÒ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:291: ./drivers/scsi/scsi_transport_spi.c”h´MÝhjÏ�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj�h²hh³j �h´MÝubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjê�jäjê�jå‰jæ‰jç‰uh1jXh²hhjÚ€h³Nh´Nubjé)�”}”(hXb**Parameters** ``struct scsi_device *sdev`` scsi device to validate **Description** Performs the domain validation on the given device in the current execution thread. Since DV operations may sleep, the current thread must have user context. Also no SCSI related locks that would deadlock I/O issued by the DV may be held.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjô�h]”hŒ Parameters”…”�”}”(hjö�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjò�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:291: ./drivers/scsi/scsi_transport_spi.c”h´Máhjî�ubj7)�”}”(hhh]”j<)�”}”(hŒ5``struct scsi_device *sdev`` scsi device to validate ”h]”(jB)�”}”(hŒ``struct scsi_device *sdev``”h]”jH)�”}”(hj‚h]”hŒstruct scsi_device *sdev”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:291: ./drivers/scsi/scsi_transport_spi.c”h´MÞhj ‚ubj^)�”}”(hhh]”hì)�”}”(hŒscsi device to validate”h]”hŒscsi device to validate”…”�”}”(hj,‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³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&]”uh1j6hjî�ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjN‚h]”hŒ Description”…”�”}”(hjP‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjL‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:291: ./drivers/scsi/scsi_transport_spi.c”h´Màhjî�ubjt)�”}”(hŒðPerforms the domain validation on the given device in the current execution thread. Since DV operations may sleep, the current thread must have user context. Also no SCSI related locks that would deadlock I/O issued by the DV may be held.”h]”hì)�”}”(hŒðPerforms the domain validation on the given device in the current execution thread. Since DV operations may sleep, the current thread must have user context. Also no SCSI related locks that would deadlock I/O issued by the DV may be held.”h]”hŒðPerforms the domain validation on the given device in the current execution thread. Since DV operations may sleep, the current thread must have user context. Also no SCSI related locks that would deadlock I/O issued by the DV may be held.”…”�”}”(hjh‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:291: ./drivers/scsi/scsi_transport_spi.c”h´Mßhjd‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jsh³jv‚h´Mßhjî�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjÚ€•h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ#spi_schedule_dv_device (C function)”Œc.spi_schedule_dv_device”hNt”auh1jGhjÚ€h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ6void spi_schedule_dv_device (struct scsi_device *sdev)”h]”jd)�”}”(hŒ5void spi_schedule_dv_device(struct scsi_device *sdev)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj�‚h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj™‚h²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:291: ./drivers/scsi/scsi_transport_spi.c”h´M?ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬‚h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj™‚h²hh³j«‚h´M?ubj�)�”}”(hŒspi_schedule_dv_device”h]”j“)�”}”(hŒspi_schedule_dv_device”h]”hŒspi_schedule_dv_device”…”�”}”(hj¾‚h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjº‚ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj™‚h²hh³j«‚h´M?ubjÊ)�”}”(hŒ(struct scsi_device *sdev)”h]”jÐ)�”}”(hŒstruct scsi_device *sdev”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjÚ‚h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjÖ‚ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjç‚h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÖ‚ubh)�”}”(hhh]”j“)�”}”(hŒ scsi_device”h]”hŒ scsi_device”…”�”}”(hjø‚h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjõ‚ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jú‚Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jÀ‚sbŒc.spi_schedule_dv_device”†”asbuh1hhjÖ‚ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÖ‚ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj&ƒh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjÖ‚ubj“)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hj3ƒh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÖ‚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²ˆuh1jcj³j´hj•‚h²hh³j«‚h´M?ubah}”(h]”j�‚ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j«‚h´M?hj’‚h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ1schedule domain validation to occur on the device”h]”hŒ1schedule domain validation to occur on the device”…”�”}”(hj]ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:291: ./drivers/scsi/scsi_transport_spi.c”h´M?hjZƒh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj’‚h²hh³j«‚h´M?ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjuƒjäjuƒjå‰jæ‰jç‰uh1jXh²hhjÚ€h³Nh´Nubjé)�”}”(hX=**Parameters** ``struct scsi_device *sdev`` The device to validate **Description** Identical to spi_dv_device() above, except that the DV will be scheduled to occur in a workqueue later. All memory allocations are atomic, so may be called from any context including those holding SCSI locks.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjƒh]”hŒ Parameters”…”�”}”(hj�ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj}ƒubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:291: ./drivers/scsi/scsi_transport_spi.c”h´MChjyƒubj7)�”}”(hhh]”j<)�”}”(hŒ4``struct scsi_device *sdev`` The device to validate ”h]”(jB)�”}”(hŒ``struct scsi_device *sdev``”h]”jH)�”}”(hjžƒh]”hŒstruct scsi_device *sdev”…”�”}”(hj ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjœƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:291: ./drivers/scsi/scsi_transport_spi.c”h´M@hj˜ƒubj^)�”}”(hhh]”hì)�”}”(hŒThe device to validate”h]”hŒThe device to validate”…”�”}”(hj·ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³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&]”uh1j6hjyƒubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjÙƒh]”hŒ Description”…”�”}”(hjÛƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj׃ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:291: ./drivers/scsi/scsi_transport_spi.c”h´MBhjyƒubjt)�”}”(hŒÑIdentical to spi_dv_device() above, except that the DV will be scheduled to occur in a workqueue later. All memory allocations are atomic, so may be called from any context including those holding SCSI locks.”h]”hì)�”}”(hŒÑIdentical to spi_dv_device() above, except that the DV will be scheduled to occur in a workqueue later. All memory allocations are atomic, so may be called from any context including those holding SCSI locks.”h]”hŒÑIdentical to spi_dv_device() above, except that the DV will be scheduled to occur in a workqueue later. All memory allocations are atomic, so may be called from any context including those holding SCSI locks.”…”�”}”(hjóƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:291: ./drivers/scsi/scsi_transport_spi.c”h´MAhjïƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jsh³j„h´MAhjyƒubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjÚ€h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ'spi_display_xfer_agreement (C function)”Œc.spi_display_xfer_agreement”hNt”auh1jGhjÚ€h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ=void spi_display_xfer_agreement (struct scsi_target *starget)”h]”jd)�”}”(hŒ…h´Mehj?…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj#…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j>…h´Mehj …ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj…ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjd…h]”hŒ Description”…”�”}”(hjf…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjb…ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:291: ./drivers/scsi/scsi_transport_spi.c”h´Mghj…ubhì)�”}”(hŒÎEach SPI port is required to maintain a transfer agreement for each other port on the bus. This function prints a one-line summary of the current agreement; more detailed information is available in sysfs.”h]”hŒÎEach SPI port is required to maintain a transfer agreement for each other port on the bus. This function prints a one-line summary of the current agreement; more detailed information is available in sysfs.”…”�”}”(hjz…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:291: ./drivers/scsi/scsi_transport_spi.c”h´Mfhj…ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjÚ€h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ!spi_populate_tag_msg (C function)”Œc.spi_populate_tag_msg”hNt”auh1jGhjÚ€h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒDint spi_populate_tag_msg (unsigned char *msg, struct scsi_cmnd *cmd)”h]”jd)�”}”(hŒCint spi_populate_tag_msg(unsigned char *msg, struct scsi_cmnd *cmd)”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hj©…h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj¥…h²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:291: ./drivers/scsi/scsi_transport_spi.c”h´MÆubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸…h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj¥…h²hh³j·…h´MÆubj�)�”}”(hŒspi_populate_tag_msg”h]”j“)�”}”(hŒspi_populate_tag_msg”h]”hŒspi_populate_tag_msg”…”�”}”(hjÊ…h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÆ…ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj¥…h²hh³j·…h´MÆubjÊ)�”}”(hŒ+(unsigned char *msg, struct scsi_cmnd *cmd)”h]”(jÐ)�”}”(hŒunsigned char *msg”h]”(j’)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjæ…h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjâ…ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjô…h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjâ…ubj’)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjâ…ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjâ…ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjâ…ubj“)�”}”(hŒmsg”h]”hŒmsg”…”�”}”(hj+†h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjâ…ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjÞ…ubjÐ)�”}”(hŒstruct scsi_cmnd *cmd”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjD†h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj@†ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQ†h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj@†ubh)�”}”(hhh]”j“)�”}”(hŒ scsi_cmnd”h]”hŒ scsi_cmnd”…”�”}”(hjb†h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj_†ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jd†Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jÌ…sbŒc.spi_populate_tag_msg”†”asbuh1hhj@†ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚†h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj@†ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj�†h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj@†ubj“)�”}”(hŒcmd”h]”hŒcmd”…”�”}”(hj�†h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj@†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²ˆuh1jcj³j´hj¡…h²hh³j·…h´MÆubah}”(h]”jœ…ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j·…h´MÆhjž…h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒplace a tag message in a buffer”h]”hŒplace a tag message in a buffer”…”�”}”(hjdžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:291: ./drivers/scsi/scsi_transport_spi.c”h´MÆhjĆh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjž…h²hh³j·…h´MÆubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj߆jäj߆jå‰jæ‰jç‰uh1jXh²hhjÚ€h³Nh´Nubjé)�”}”(hXS**Parameters** ``unsigned char *msg`` pointer to the area to place the tag ``struct scsi_cmnd *cmd`` pointer to the scsi command for the tag **Notes** designed to create the correct type of tag message for the particular request. Returns the size of the tag message. May return 0 if TCQ is disabled for this device.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjé†h]”hŒ Parameters”…”�”}”(hjë†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjç†ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:291: ./drivers/scsi/scsi_transport_spi.c”h´MÊhjã†ubj7)�”}”(hhh]”(j<)�”}”(hŒ<``unsigned char *msg`` pointer to the area to place the tag ”h]”(jB)�”}”(hŒ``unsigned char *msg``”h]”jH)�”}”(hj‡h]”hŒunsigned char *msg”…”�”}”(hj ‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:291: ./drivers/scsi/scsi_transport_spi.c”h´MÇhj‡ubj^)�”}”(hhh]”hì)�”}”(hŒ$pointer to the area to place the tag”h]”hŒ$pointer to the area to place the tag”…”�”}”(hj!‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j‡h´MÇhj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j‡h´MÇhjÿ†ubj<)�”}”(hŒB``struct scsi_cmnd *cmd`` pointer to the scsi command for the tag ”h]”(jB)�”}”(hŒ``struct scsi_cmnd *cmd``”h]”jH)�”}”(hjA‡h]”hŒstruct scsi_cmnd *cmd”…”�”}”(hjC‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj?‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:291: ./drivers/scsi/scsi_transport_spi.c”h´MÈhj;‡ubj^)�”}”(hhh]”hì)�”}”(hŒ'pointer to the scsi command for the tag”h]”hŒ'pointer to the scsi command for the tag”…”�”}”(hjZ‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jV‡h´MÈhjW‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj;‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jV‡h´MÈhjÿ†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjã†ubhì)�”}”(hŒ **Notes**”h]”jó)�”}”(hj|‡h]”hŒNotes”…”�”}”(hj~‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjz‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:291: ./drivers/scsi/scsi_transport_spi.c”h´MÊhjã†ubjt)�”}”(hŒ¥designed to create the correct type of tag message for the particular request. Returns the size of the tag message. May return 0 if TCQ is disabled for this device.”h]”hì)�”}”(hŒ¥designed to create the correct type of tag message for the particular request. Returns the size of the tag message. May return 0 if TCQ is disabled for this device.”h]”hŒ¥designed to create the correct type of tag message for the particular request. Returns the size of the tag message. May return 0 if TCQ is disabled for this device.”…”�”}”(hj–‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:291: ./drivers/scsi/scsi_transport_spi.c”h´MÊhj’‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jsh³j¤‡h´MÊhjã†ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjÚ€h²hh³Nh´Nubeh}”(h]”Œ!parallel-scsi-spi-transport-class”ah ]”h"]”Œ#parallel scsi (spi) transport class”ah$]”h&]”uh1hµhjŒh²hh³hÊh´Mubh¶)�”}”(hhh]”(h»)�”}”(hŒSCSI RDMA (SRP) transport class”h]”hŒSCSI RDMA (SRP) transport class”…”�”}”(hj½‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjº‡h²hh³hÊh´M'ubhì)�”}”(hŒrThe file drivers/scsi/scsi_transport_srp.c defines transport attributes for SCSI over Remote Direct Memory Access.”h]”hŒrThe file drivers/scsi/scsi_transport_srp.c defines transport attributes for SCSI over Remote Direct Memory Access.”…”�”}”(hjˇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M)hjº‡h²hubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒsrp_tmo_valid (C function)”Œc.srp_tmo_valid”hNt”auh1jGhjº‡h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒPint srp_tmo_valid (int reconnect_delay, int fast_io_fail_tmo, long dev_loss_tmo)”h]”jd)�”}”(hŒOint srp_tmo_valid(int reconnect_delay, int fast_io_fail_tmo, long dev_loss_tmo)”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hjò‡h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjî‡h²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´KHubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjî‡h²hh³jˆh´KHubj�)�”}”(hŒ srp_tmo_valid”h]”j“)�”}”(hŒ srp_tmo_valid”h]”hŒ srp_tmo_valid”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjˆubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjî‡h²hh³jˆh´KHubjÊ)�”}”(hŒ>(int reconnect_delay, int fast_io_fail_tmo, long dev_loss_tmo)”h]”(jÐ)�”}”(hŒint reconnect_delay”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hj/ˆh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj+ˆubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=ˆh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj+ˆubj“)�”}”(hŒreconnect_delay”h]”hŒreconnect_delay”…”�”}”(hjKˆh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj+ˆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj'ˆubjÐ)�”}”(hŒint fast_io_fail_tmo”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hjdˆh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj`ˆubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrˆh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj`ˆubj“)�”}”(hŒfast_io_fail_tmo”h]”hŒfast_io_fail_tmo”…”�”}”(hj€ˆh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj`ˆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj'ˆubjÐ)�”}”(hŒlong dev_loss_tmo”h]”(j’)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj™ˆh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj•ˆubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§ˆh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj•ˆubj“)�”}”(hŒ dev_loss_tmo”h]”hŒ dev_loss_tmo”…”�”}”(hjµˆh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj•ˆ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´KHubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjê‡h²hh³jˆh´KHubah}”(h]”jå‡ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jˆh´KHhjç‡h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ"check timeout combination validity”h]”hŒ"check timeout combination validity”…”�”}”(hj߈h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´KHhj܈h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjç‡h²hh³jˆh´KHubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj÷ˆjäj÷ˆjå‰jæ‰jç‰uh1jXh²hhjº‡h³Nh´Nubjé)�”}”(hX„**Parameters** ``int reconnect_delay`` Reconnect delay in seconds. ``int fast_io_fail_tmo`` Fast I/O fail timeout in seconds. ``long dev_loss_tmo`` Device loss timeout in seconds. **Description** The combination of the timeout parameters must be such that SCSI commands are finished in a reasonable time. Hence do not allow the fast I/O fail timeout to exceed SCSI_DEVICE_BLOCK_MAX_TIMEOUT nor allow dev_loss_tmo to exceed that limit if failing I/O fast has been disabled. Furthermore, these parameters must be such that multipath can detect failed paths timely. Hence do not allow all three parameters to be disabled simultaneously.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj‰h]”hŒ Parameters”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÿˆubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´KLhjûˆubj7)�”}”(hhh]”(j<)�”}”(hŒ4``int reconnect_delay`` Reconnect delay in seconds. ”h]”(jB)�”}”(hŒ``int reconnect_delay``”h]”jH)�”}”(hj ‰h]”hŒint reconnect_delay”…”�”}”(hj"‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´KIhj‰ubj^)�”}”(hhh]”hì)�”}”(hŒReconnect delay in seconds.”h]”hŒReconnect delay in seconds.”…”�”}”(hj9‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j5‰h´KIhj6‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j5‰h´KIhj‰ubj<)�”}”(hŒ;``int fast_io_fail_tmo`` Fast I/O fail timeout in seconds. ”h]”(jB)�”}”(hŒ``int fast_io_fail_tmo``”h]”jH)�”}”(hjY‰h]”hŒint fast_io_fail_tmo”…”�”}”(hj[‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjW‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´KJhjS‰ubj^)�”}”(hhh]”hì)�”}”(hŒ!Fast I/O fail timeout in seconds.”h]”hŒ!Fast I/O fail timeout in seconds.”…”�”}”(hjr‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jn‰h´KJhjo‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjS‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jn‰h´KJhj‰ubj<)�”}”(hŒ6``long dev_loss_tmo`` Device loss timeout in seconds. ”h]”(jB)�”}”(hŒ``long dev_loss_tmo``”h]”jH)�”}”(hj’‰h]”hŒlong dev_loss_tmo”…”�”}”(hj”‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj�‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´KKhjŒ‰ubj^)�”}”(hhh]”hì)�”}”(hŒDevice loss timeout in seconds.”h]”hŒDevice loss timeout in seconds.”…”�”}”(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‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjûˆubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hj͉h]”hŒ Description”…”�”}”(hjωh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjˉubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´KMhjûˆubhì)�”}”(hXµThe combination of the timeout parameters must be such that SCSI commands are finished in a reasonable time. Hence do not allow the fast I/O fail timeout to exceed SCSI_DEVICE_BLOCK_MAX_TIMEOUT nor allow dev_loss_tmo to exceed that limit if failing I/O fast has been disabled. Furthermore, these parameters must be such that multipath can detect failed paths timely. Hence do not allow all three parameters to be disabled simultaneously.”h]”hXµThe combination of the timeout parameters must be such that SCSI commands are finished in a reasonable time. Hence do not allow the fast I/O fail timeout to exceed SCSI_DEVICE_BLOCK_MAX_TIMEOUT nor allow dev_loss_tmo to exceed that limit if failing I/O fast has been disabled. Furthermore, these parameters must be such that multipath can detect failed paths timely. Hence do not allow all three parameters to be disabled simultaneously.”…”�”}”(hjã‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´KLhjûˆubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjº‡h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ%srp_start_tl_fail_timers (C function)”Œc.srp_start_tl_fail_timers”hNt”auh1jGhjº‡h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ7void srp_start_tl_fail_timers (struct srp_rport *rport)”h]”jd)�”}”(hŒ6void srp_start_tl_fail_timers(struct srp_rport *rport)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjŠh²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´Mðubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!Šh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjŠh²hh³j Šh´Mðubj�)�”}”(hŒsrp_start_tl_fail_timers”h]”j“)�”}”(hŒsrp_start_tl_fail_timers”h]”hŒsrp_start_tl_fail_timers”…”�”}”(hj3Šh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj/Šubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjŠh²hh³j Šh´MðubjÊ)�”}”(hŒ(struct srp_rport *rport)”h]”jÐ)�”}”(hŒstruct srp_rport *rport”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjOŠh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjKŠubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\Šh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjKŠubh)�”}”(hhh]”j“)�”}”(hŒ srp_rport”h]”hŒ srp_rport”…”�”}”(hjmŠh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjjŠubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”joŠŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j j5ŠsbŒc.srp_start_tl_fail_timers”†”asbuh1hhjKŠubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Šh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjKŠubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj›Šh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjKŠubj“)�”}”(hŒrport”h]”hŒrport”…”�”}”(hj¨Šh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjKŠubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjGŠubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjŠh²hh³j Šh´Mðubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj Šh²hh³j Šh´Mðubah}”(h]”jŠah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j Šh´MðhjŠh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ(start the transport layer failure timers”h]”hŒ(start the transport layer failure timers”…”�”}”(hjÒŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´MðhjÏŠh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjŠh²hh³j Šh´Mðubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjêŠjäjêŠjå‰jæ‰jç‰uh1jXh²hhjº‡h³Nh´Nubjé)�”}”(hŒÃ**Parameters** ``struct srp_rport *rport`` SRP target port. **Description** Start the transport layer fast I/O failure and device loss timers. Do not modify a timer that was already started.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjôŠh]”hŒ Parameters”…”�”}”(hjöŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjòŠubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´MôhjîŠubj7)�”}”(hhh]”j<)�”}”(hŒ-``struct srp_rport *rport`` SRP target port. ”h]”(jB)�”}”(hŒ``struct srp_rport *rport``”h]”jH)�”}”(hj‹h]”hŒstruct srp_rport *rport”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´Mñhj ‹ubj^)�”}”(hhh]”hì)�”}”(hŒSRP target port.”h]”hŒSRP target port.”…”�”}”(hj,‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³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&]”uh1j6hjîŠubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjN‹h]”hŒ Description”…”�”}”(hjP‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjL‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´MóhjîŠubhì)�”}”(hŒrStart the transport layer fast I/O failure and device loss timers. Do not modify a timer that was already started.”h]”hŒrStart the transport layer fast I/O failure and device loss timers. Do not modify a timer that was already started.”…”�”}”(hjd‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´MòhjîŠubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjº‡h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ srp_reconnect_rport (C function)”Œc.srp_reconnect_rport”hNt”auh1jGhjº‡h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ1int srp_reconnect_rport (struct srp_rport *rport)”h]”jd)�”}”(hŒ0int srp_reconnect_rport(struct srp_rport *rport)”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hj“‹h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj�‹h²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´Mÿubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢‹h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj�‹h²hh³j¡‹h´Mÿubj�)�”}”(hŒsrp_reconnect_rport”h]”j“)�”}”(hŒsrp_reconnect_rport”h]”hŒsrp_reconnect_rport”…”�”}”(hj´‹h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj°‹ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj�‹h²hh³j¡‹h´MÿubjÊ)�”}”(hŒ(struct srp_rport *rport)”h]”jÐ)�”}”(hŒstruct srp_rport *rport”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjЋh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjÌ‹ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝ‹h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÌ‹ubh)�”}”(hhh]”j“)�”}”(hŒ srp_rport”h]”hŒ srp_rport”…”�”}”(hjî‹h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjë‹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jð‹Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j j¶‹sbŒc.srp_reconnect_rport”†”asbuh1hhjÌ‹ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÌ‹ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjÌ‹ubj“)�”}”(hŒrport”h]”hŒrport”…”�”}”(hj)Œh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÌ‹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²ˆuh1jcj³j´hj‹‹h²hh³j¡‹h´Mÿubah}”(h]”j†‹ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j¡‹h´Mÿhjˆ‹h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒreconnect to an SRP target port”h]”hŒreconnect to an SRP target port”…”�”}”(hjSŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´MÿhjPŒh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjˆ‹h²hh³j¡‹h´Mÿubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjkŒjäjkŒjå‰jæ‰jç‰uh1jXh²hhjº‡h³Nh´Nubjé)�”}”(hX%**Parameters** ``struct srp_rport *rport`` SRP target port. **Description** Blocks SCSI command queueing before invoking reconnect() such that queuecommand() won't be invoked concurrently with reconnect() from outside the SCSI EH. This is important since a reconnect() implementation may reallocate resources needed by queuecommand(). **Notes** - This function neither waits until outstanding requests have finished nor tries to abort these. It is the responsibility of the reconnect() function to finish outstanding commands before reconnecting to the target port. - It is the responsibility of the caller to ensure that the resources reallocated by the reconnect() function won't be used while this function is in progress. One possible strategy is to invoke this function from the context of the SCSI EH thread only. Another possible strategy is to lock the rport mutex inside each SCSI LLD callback that can be invoked by the SCSI EH (the scsi_host_template.eh_*() functions and also the scsi_host_template.queuecommand() function).”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjuŒh]”hŒ Parameters”…”�”}”(hjwŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjsŒubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´MhjoŒubj7)�”}”(hhh]”j<)�”}”(hŒ-``struct srp_rport *rport`` SRP target port. ”h]”(jB)�”}”(hŒ``struct srp_rport *rport``”h]”jH)�”}”(hj”Œh]”hŒstruct srp_rport *rport”…”�”}”(hj–Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj’Œubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´MhjŽŒubj^)�”}”(hhh]”hì)�”}”(hŒSRP target port.”h]”hŒSRP target port.”…”�”}”(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&]”uh1j6hjoŒubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjÏŒh]”hŒ Description”…”�”}”(hjÑŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÍŒubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´MhjoŒubhì)�”}”(hXBlocks SCSI command queueing before invoking reconnect() such that queuecommand() won't be invoked concurrently with reconnect() from outside the SCSI EH. This is important since a reconnect() implementation may reallocate resources needed by queuecommand().”h]”hXBlocks SCSI command queueing before invoking reconnect() such that queuecommand() won’t be invoked concurrently with reconnect() from outside the SCSI EH. This is important since a reconnect() implementation may reallocate resources needed by queuecommand().”…”�”}”(hjåŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´MhjoŒubhì)�”}”(hŒ **Notes**”h]”jó)�”}”(hjöŒh]”hŒNotes”…”�”}”(hjøŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjôŒubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´MhjoŒubjT)�”}”(hhh]”(jY)�”}”(hŒÚThis function neither waits until outstanding requests have finished nor tries to abort these. It is the responsibility of the reconnect() function to finish outstanding commands before reconnecting to the target port.”h]”hì)�”}”(hŒÚThis function neither waits until outstanding requests have finished nor tries to abort these. It is the responsibility of the reconnect() function to finish outstanding commands before reconnecting to the target port.”h]”hŒÚThis function neither waits until outstanding requests have finished nor tries to abort these. It is the responsibility of the reconnect() function to finish outstanding commands before reconnecting to the target port.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´Mhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jXhj �ubjY)�”}”(hXÔIt is the responsibility of the caller to ensure that the resources reallocated by the reconnect() function won't be used while this function is in progress. One possible strategy is to invoke this function from the context of the SCSI EH thread only. Another possible strategy is to lock the rport mutex inside each SCSI LLD callback that can be invoked by the SCSI EH (the scsi_host_template.eh_*() functions and also the scsi_host_template.queuecommand() function).”h]”hì)�”}”(hXÔIt is the responsibility of the caller to ensure that the resources reallocated by the reconnect() function won't be used while this function is in progress. One possible strategy is to invoke this function from the context of the SCSI EH thread only. Another possible strategy is to lock the rport mutex inside each SCSI LLD callback that can be invoked by the SCSI EH (the scsi_host_template.eh_*() functions and also the scsi_host_template.queuecommand() function).”h]”hXÖIt is the responsibility of the caller to ensure that the resources reallocated by the reconnect() function won’t be used while this function is in progress. One possible strategy is to invoke this function from the context of the SCSI EH thread only. Another possible strategy is to lock the rport mutex inside each SCSI LLD callback that can be invoked by the SCSI EH (the scsi_host_template.eh_*() functions and also the scsi_host_template.queuecommand() function).”…”�”}”(hj,�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´M hj(�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jXhj �ubeh}”(h]”h ]”h"]”h$]”h&]”j©Œ-”uh1jSh³j!�h´MhjoŒubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjº‡h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒsrp_timed_out (C function)”Œc.srp_timed_out”hNt”auh1jGhjº‡h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ?enum scsi_timeout_action srp_timed_out (struct scsi_cmnd *scmd)”h]”jd)�”}”(hŒ>enum scsi_timeout_action srp_timed_out(struct scsi_cmnd *scmd)”h]”(jj)�”}”(hjf9h]”hŒenum”…”�”}”(hjh�h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjd�h²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´MQubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjv�h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjd�h²hh³ju�h´MQubh)�”}”(hhh]”j“)�”}”(hŒscsi_timeout_action”h]”hŒscsi_timeout_action”…”�”}”(hj‡�h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj„�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j‰�Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j Œ srp_timed_out”sbŒc.srp_timed_out”†”asbuh1hhjd�h²hh³ju�h´MQubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨�h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjd�h²hh³ju�h´MQubj�)�”}”(hŒ srp_timed_out”h]”j“)�”}”(hj¥�h]”hŒ srp_timed_out”…”�”}”(hjº�h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj¶�ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjd�h²hh³ju�h´MQubjÊ)�”}”(hŒ(struct scsi_cmnd *scmd)”h]”jÐ)�”}”(hŒstruct scsi_cmnd *scmd”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjÕ�h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjÑ�ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâ�h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÑ�ubh)�”}”(hhh]”j“)�”}”(hŒ scsi_cmnd”h]”hŒ scsi_cmnd”…”�”}”(hjó�h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjð�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jõ�Œmodname”NŒ classname”Njôj÷)�”}”jú]”j£�Œc.srp_timed_out”†”asbuh1hhjÑ�ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÑ�ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjÑ�ubj“)�”}”(hŒscmd”h]”hŒscmd”…”�”}”(hj,Žh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÑ�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjÍ�ubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjd�h²hh³ju�h´MQubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj`�h²hh³ju�h´MQubah}”(h]”j[�ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³ju�h´MQhj]�h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ.SRP transport intercept of the SCSI timeout EH”h]”hŒ.SRP transport intercept of the SCSI timeout EH”…”�”}”(hjVŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´MQhjSŽh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj]�h²hh³ju�h´MQubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjnŽjäjnŽjå‰jæ‰jç‰uh1jXh²hhjº‡h³Nh´Nubjé)�”}”(hXh**Parameters** ``struct scsi_cmnd *scmd`` SCSI command. **Description** If a timeout occurs while an rport is in the blocked state, ask the SCSI EH to continue waiting (SCSI_EH_RESET_TIMER). Otherwise let the SCSI core handle the timeout (SCSI_EH_NOT_HANDLED). **Note** This function is called from soft-IRQ context and with the request queue lock held.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjxŽh]”hŒ Parameters”…”�”}”(hjzŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjvŽubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´MUhjrŽubj7)�”}”(hhh]”j<)�”}”(hŒ)``struct scsi_cmnd *scmd`` SCSI command. ”h]”(jB)�”}”(hŒ``struct scsi_cmnd *scmd``”h]”jH)�”}”(hj—Žh]”hŒstruct scsi_cmnd *scmd”…”�”}”(hj™Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj•Žubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´MRhj‘Žubj^)�”}”(hhh]”hì)�”}”(hŒ SCSI command.”h]”hŒ SCSI command.”…”�”}”(hj°Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¬Žh´MRhj­Žubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj‘Žubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j¬Žh´MRhjŽŽubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjrŽubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjÒŽh]”hŒ Description”…”�”}”(hjÔŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÐŽubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´MThjrŽubhì)�”}”(hŒ¼If a timeout occurs while an rport is in the blocked state, ask the SCSI EH to continue waiting (SCSI_EH_RESET_TIMER). Otherwise let the SCSI core handle the timeout (SCSI_EH_NOT_HANDLED).”h]”hŒ¼If a timeout occurs while an rport is in the blocked state, ask the SCSI EH to continue waiting (SCSI_EH_RESET_TIMER). Otherwise let the SCSI core handle the timeout (SCSI_EH_NOT_HANDLED).”…”�”}”(hjèŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´MShjrŽubhì)�”}”(hŒ**Note**”h]”jó)�”}”(hjùŽh]”hŒNote”…”�”}”(hjûŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj÷Žubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´MWhjrŽubhì)�”}”(hŒSThis function is called from soft-IRQ context and with the request queue lock held.”h]”hŒSThis function is called from soft-IRQ context and with the request queue lock held.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´MXhjrŽubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjº‡h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒsrp_rport_get (C function)”Œc.srp_rport_get”hNt”auh1jGhjº‡h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ,void srp_rport_get (struct srp_rport *rport)”h]”jd)�”}”(hŒ+void srp_rport_get(struct srp_rport *rport)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj>�h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj:�h²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´M�ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjM�h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj:�h²hh³jL�h´M�ubj�)�”}”(hŒ srp_rport_get”h]”j“)�”}”(hŒ srp_rport_get”h]”hŒ srp_rport_get”…”�”}”(hj_�h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj[�ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj:�h²hh³jL�h´M�ubjÊ)�”}”(hŒ(struct srp_rport *rport)”h]”jÐ)�”}”(hŒstruct srp_rport *rport”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj{�h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjw�ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆ�h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjw�ubh)�”}”(hhh]”j“)�”}”(hŒ srp_rport”h]”hŒ srp_rport”…”�”}”(hj™�h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj–�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j›�Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j ja�sbŒc.srp_rport_get”†”asbuh1hhjw�ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹�h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjw�ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjÇ�h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjw�ubj“)�”}”(hŒrport”h]”hŒrport”…”�”}”(hjÔ�h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjw�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjs�ubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhj:�h²hh³jL�h´M�ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj6�h²hh³jL�h´M�ubah}”(h]”j1�ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jL�h´M�hj3�h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒincrement rport reference count”h]”hŒincrement rport reference count”…”�”}”(hjþ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´M�hjû�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj3�h²hh³jL�h´M�ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj�jäj�jå‰jæ‰jç‰uh1jXh²hhjº‡h³Nh´Nubjé)�”}”(hŒ>**Parameters** ``struct srp_rport *rport`` SRP target port.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj �h]”hŒ Parameters”…”�”}”(hj"�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´M¡hj�ubj7)�”}”(hhh]”j<)�”}”(hŒ,``struct srp_rport *rport`` SRP target port.”h]”(jB)�”}”(hŒ``struct srp_rport *rport``”h]”jH)�”}”(hj?�h]”hŒstruct srp_rport *rport”…”�”}”(hjA�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj=�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´M£hj9�ubj^)�”}”(hhh]”hì)�”}”(hŒSRP target port.”h]”hŒSRP target port.”…”�”}”(hjX�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´MžhjU�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj9�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jT�h´M£hj6�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjº‡h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒsrp_rport_put (C function)”Œc.srp_rport_put”hNt”auh1jGhjº‡h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ,void srp_rport_put (struct srp_rport *rport)”h]”jd)�”}”(hŒ+void srp_rport_put(struct srp_rport *rport)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj™�h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj•�h²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´M§ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨�h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj•�h²hh³j§�h´M§ubj�)�”}”(hŒ srp_rport_put”h]”j“)�”}”(hŒ srp_rport_put”h]”hŒ srp_rport_put”…”�”}”(hjº�h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj¶�ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj•�h²hh³j§�h´M§ubjÊ)�”}”(hŒ(struct srp_rport *rport)”h]”jÐ)�”}”(hŒstruct srp_rport *rport”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjÖ�h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjÒ�ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjã�h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÒ�ubh)�”}”(hhh]”j“)�”}”(hŒ srp_rport”h]”hŒ srp_rport”…”�”}”(hjô�h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjñ�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jö�Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j j¼�sbŒc.srp_rport_put”†”asbuh1hhjÒ�ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÒ�ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj"‘h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjÒ�ubj“)�”}”(hŒrport”h]”hŒrport”…”�”}”(hj/‘h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÒ�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²ˆuh1jcj³j´hj‘�h²hh³j§�h´M§ubah}”(h]”jŒ�ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j§�h´M§hjŽ�h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒdecrement rport reference count”h]”hŒdecrement rport reference count”…”�”}”(hjY‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´M§hjV‘h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjŽ�h²hh³j§�h´M§ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjq‘jäjq‘jå‰jæ‰jç‰uh1jXh²hhjº‡h³Nh´Nubjé)�”}”(hŒ>**Parameters** ``struct srp_rport *rport`` SRP target port.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj{‘h]”hŒ Parameters”…”�”}”(hj}‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjy‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´M«hju‘ubj7)�”}”(hhh]”j<)�”}”(hŒ,``struct srp_rport *rport`` SRP target port.”h]”(jB)�”}”(hŒ``struct srp_rport *rport``”h]”jH)�”}”(hjš‘h]”hŒstruct srp_rport *rport”…”�”}”(hjœ‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj˜‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´M­hj”‘ubj^)�”}”(hhh]”hì)�”}”(hŒSRP target port.”h]”hŒSRP target port.”…”�”}”(hj³‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.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&]”uh1j6hju‘ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjº‡h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒsrp_rport_add (C function)”Œc.srp_rport_add”hNt”auh1jGhjº‡h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ]struct srp_rport * srp_rport_add (struct Scsi_Host *shost, struct srp_rport_identifiers *ids)”h]”jd)�”}”(hŒ[struct srp_rport *srp_rport_add(struct Scsi_Host *shost, struct srp_rport_identifiers *ids)”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjô‘h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjð‘h²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´M±ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjð‘h²hh³j’h´M±ubh)�”}”(hhh]”j“)�”}”(hŒ srp_rport”h]”hŒ srp_rport”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj’ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j’Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j Œ srp_rport_add”sbŒc.srp_rport_add”†”asbuh1hhjð‘h²hh³j’h´M±ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4’h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjð‘h²hh³j’h´M±ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjB’h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjð‘h²hh³j’h´M±ubj�)�”}”(hŒ srp_rport_add”h]”j“)�”}”(hj1’h]”hŒ srp_rport_add”…”�”}”(hjS’h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjO’ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjð‘h²hh³j’h´M±ubjÊ)�”}”(hŒ<(struct Scsi_Host *shost, struct srp_rport_identifiers *ids)”h]”(jÐ)�”}”(hŒstruct Scsi_Host *shost”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjn’h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjj’ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{’h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjj’ubh)�”}”(hhh]”j“)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hjŒ’h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj‰’ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jŽ’Œmodname”NŒ classname”Njôj÷)�”}”jú]”j/’Œc.srp_rport_add”†”asbuh1hhjj’ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjª’h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjj’ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj¸’h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjj’ubj“)�”}”(hŒshost”h]”hŒshost”…”�”}”(hjÅ’h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjj’ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjf’ubjÐ)�”}”(hŒ!struct srp_rport_identifiers *ids”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjÞ’h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjÚ’ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjë’h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÚ’ubh)�”}”(hhh]”j“)�”}”(hŒsrp_rport_identifiers”h]”hŒsrp_rport_identifiers”…”�”}”(hjü’h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjù’ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jþ’Œmodname”NŒ classname”Njôj÷)�”}”jú]”j/’Œc.srp_rport_add”†”asbuh1hhjÚ’ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÚ’ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj(“h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjÚ’ubj“)�”}”(hŒids”h]”hŒids”…”�”}”(hj5“h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÚ’ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjf’ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjð‘h²hh³j’h´M±ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjì‘h²hh³j’h´M±ubah}”(h]”jç‘ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j’h´M±hjé‘h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ-add a SRP remote port to the device hierarchy”h]”hŒ-add a SRP remote port to the device hierarchy”…”�”}”(hj_“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´M±hj\“h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjé‘h²hh³j’h´M±ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjw“jäjw“jå‰jæ‰jç‰uh1jXh²hhjº‡h³Nh´Nubjé)�”}”(hŒà**Parameters** ``struct Scsi_Host *shost`` scsi host the remote port is connected to. ``struct srp_rport_identifiers *ids`` The port id for the remote port. **Description** Publishes a port to the rest of the system.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj�“h]”hŒ Parameters”…”�”}”(hjƒ“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´Mµhj{“ubj7)�”}”(hhh]”(j<)�”}”(hŒG``struct Scsi_Host *shost`` scsi host the remote port is connected to. ”h]”(jB)�”}”(hŒ``struct Scsi_Host *shost``”h]”jH)�”}”(hj “h]”hŒstruct Scsi_Host *shost”…”�”}”(hj¢“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjž“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´M²hjš“ubj^)�”}”(hhh]”hì)�”}”(hŒ*scsi host the remote port is connected to.”h]”hŒ*scsi host the remote port is connected to.”…”�”}”(hj¹“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jµ“h´M²hj¶“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjš“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jµ“h´M²hj—“ubj<)�”}”(hŒG``struct srp_rport_identifiers *ids`` The port id for the remote port. ”h]”(jB)�”}”(hŒ%``struct srp_rport_identifiers *ids``”h]”jH)�”}”(hjÙ“h]”hŒ!struct srp_rport_identifiers *ids”…”�”}”(hjÛ“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjדubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´M³hjÓ“ubj^)�”}”(hhh]”hì)�”}”(hŒ The port id for the remote port.”h]”hŒ The port id for the remote port.”…”�”}”(hjò“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³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&]”uh1j6hj{“ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hj”h]”hŒ Description”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´Mµhj{“ubhì)�”}”(hŒ+Publishes a port to the rest of the system.”h]”hŒ+Publishes a port to the rest of the system.”…”�”}”(hj*”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´M´hj{“ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjº‡h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒsrp_rport_del (C function)”Œc.srp_rport_del”hNt”auh1jGhjº‡h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ,void srp_rport_del (struct srp_rport *rport)”h]”jd)�”}”(hŒ+void srp_rport_del(struct srp_rport *rport)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjY”h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjU”h²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´Mìubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh”h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjU”h²hh³jg”h´Mìubj�)�”}”(hŒ srp_rport_del”h]”j“)�”}”(hŒ srp_rport_del”h]”hŒ srp_rport_del”…”�”}”(hjz”h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjv”ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjU”h²hh³jg”h´MìubjÊ)�”}”(hŒ(struct srp_rport *rport)”h]”jÐ)�”}”(hŒstruct srp_rport *rport”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj–”h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj’”ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£”h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj’”ubh)�”}”(hhh]”j“)�”}”(hŒ srp_rport”h]”hŒ srp_rport”…”�”}”(hj´”h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj±”ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j¶”Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j j|”sbŒc.srp_rport_del”†”asbuh1hhj’”ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔ”h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj’”ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjâ”h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj’”ubj“)�”}”(hŒrport”h]”hŒrport”…”�”}”(hjï”h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj’”ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjŽ”ubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjU”h²hh³jg”h´Mìubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjQ”h²hh³jg”h´Mìubah}”(h]”jL”ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jg”h´MìhjN”h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒremove a SRP remote port”h]”hŒremove a SRP remote port”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´Mìhj•h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjN”h²hh³jg”h´Mìubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj1•jäj1•jå‰jæ‰jç‰uh1jXh²hhjº‡h³Nh´Nubjé)�”}”(hŒ€**Parameters** ``struct srp_rport *rport`` SRP remote port to remove **Description** Removes the specified SRP remote port.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj;•h]”hŒ Parameters”…”�”}”(hj=•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj9•ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´Mðhj5•ubj7)�”}”(hhh]”j<)�”}”(hŒ6``struct srp_rport *rport`` SRP remote port to remove ”h]”(jB)�”}”(hŒ``struct srp_rport *rport``”h]”jH)�”}”(hjZ•h]”hŒstruct srp_rport *rport”…”�”}”(hj\•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjX•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´MíhjT•ubj^)�”}”(hhh]”hì)�”}”(hŒSRP remote port to remove”h]”hŒSRP remote port to remove”…”�”}”(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•ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj5•ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hj••h]”hŒ Description”…”�”}”(hj—•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj“•ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´Mïhj5•ubhì)�”}”(hŒ&Removes the specified SRP remote port.”h]”hŒ&Removes the specified SRP remote port.”…”�”}”(hj«•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´Mîhj5•ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjº‡h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒsrp_remove_host (C function)”Œc.srp_remove_host”hNt”auh1jGhjº‡h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ.void srp_remove_host (struct Scsi_Host *shost)”h]”jd)�”}”(hŒ-void srp_remove_host(struct Scsi_Host *shost)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÚ•h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjÖ•h²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´Mubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjé•h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÖ•h²hh³jè•h´Mubj�)�”}”(hŒsrp_remove_host”h]”j“)�”}”(hŒsrp_remove_host”h]”hŒsrp_remove_host”…”�”}”(hjû•h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj÷•ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjÖ•h²hh³jè•h´MubjÊ)�”}”(hŒ(struct Scsi_Host *shost)”h]”jÐ)�”}”(hŒstruct Scsi_Host *shost”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj–ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$–h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj–ubh)�”}”(hhh]”j“)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hj5–h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj2–ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j7–Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jý•sbŒc.srp_remove_host”†”asbuh1hhj–ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjU–h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj–ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjc–h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj–ubj“)�”}”(hŒshost”h]”hŒshost”…”�”}”(hjp–h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj–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²ˆuh1jcj³j´hjÒ•h²hh³jè•h´Mubah}”(h]”jÍ•ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jè•h´MhjÏ•h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ+tear down a Scsi_Host's SRP data structures”h]”hŒ-tear down a Scsi_Host’s SRP data structures”…”�”}”(hjš–h²hh³Nh´•9`Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´Mhj—–h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjÏ•h²hh³jè•h´Mubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj²–jäj²–jå‰jæ‰jç‰uh1jXh²hhjº‡h³Nh´Nubjé)�”}”(hŒÉ**Parameters** ``struct Scsi_Host *shost`` Scsi Host that is torn down **Description** Removes all SRP remote ports for a given Scsi_Host. Must be called just before scsi_remove_host for SRP HBAs.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj¼–h]”hŒ Parameters”…”�”}”(hj¾–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjº–ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´M hj¶–ubj7)�”}”(hhh]”j<)�”}”(hŒ8``struct Scsi_Host *shost`` Scsi Host that is torn down ”h]”(jB)�”}”(hŒ``struct Scsi_Host *shost``”h]”jH)�”}”(hjÛ–h]”hŒstruct Scsi_Host *shost”…”�”}”(hjÝ–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjÙ–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´MhjÕ–ubj^)�”}”(hhh]”hì)�”}”(hŒScsi Host that is torn down”h]”hŒScsi Host that is torn down”…”�”}”(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&]”uh1j6hj¶–ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hj—h]”hŒ Description”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj—ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´Mhj¶–ubhì)�”}”(hŒmRemoves all SRP remote ports for a given Scsi_Host. Must be called just before scsi_remove_host for SRP HBAs.”h]”hŒmRemoves all SRP remote ports for a given Scsi_Host. Must be called just before scsi_remove_host for SRP HBAs.”…”�”}”(hj,—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´Mhj¶–ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjº‡h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ"srp_stop_rport_timers (C function)”Œc.srp_stop_rport_timers”hNt”auh1jGhjº‡h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ4void srp_stop_rport_timers (struct srp_rport *rport)”h]”jd)�”}”(hŒ3void srp_stop_rport_timers(struct srp_rport *rport)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj[—h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjW—h²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´Mubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjj—h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjW—h²hh³ji—h´Mubj�)�”}”(hŒsrp_stop_rport_timers”h]”j“)�”}”(hŒsrp_stop_rport_timers”h]”hŒsrp_stop_rport_timers”…”�”}”(hj|—h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjx—ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjW—h²hh³ji—h´MubjÊ)�”}”(hŒ(struct srp_rport *rport)”h]”jÐ)�”}”(hŒstruct srp_rport *rport”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj˜—h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj”—ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥—h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj”—ubh)�”}”(hhh]”j“)�”}”(hŒ srp_rport”h]”hŒ srp_rport”…”�”}”(hj¶—h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj³—ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j¸—Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j j~—sbŒc.srp_stop_rport_timers”†”asbuh1hhj”—ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖ—h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj”—ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjä—h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj”—ubj“)�”}”(hŒrport”h]”hŒrport”…”�”}”(hjñ—h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj”—ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj�—ubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjW—h²hh³ji—h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjS—h²hh³ji—h´Mubah}”(h]”jN—ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³ji—h´MhjP—h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ(stop the transport layer recovery timers”h]”hŒ(stop the transport layer recovery timers”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´Mhj˜h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjP—h²hh³ji—h´Mubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj3˜jäj3˜jå‰jæ‰jç‰uh1jXh²hhjº‡h³Nh´Nubjé)�”}”(hX**Parameters** ``struct srp_rport *rport`` SRP remote port for which to stop the timers. **Description** Must be called after srp_remove_host() and scsi_remove_host(). The caller must hold a reference on the rport (rport->dev) and on the SCSI host (rport->dev.parent).”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj=˜h]”hŒ Parameters”…”�”}”(hj?˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj;˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´Mhj7˜ubj7)�”}”(hhh]”j<)�”}”(hŒJ``struct srp_rport *rport`` SRP remote port for which to stop the timers. ”h]”(jB)�”}”(hŒ``struct srp_rport *rport``”h]”jH)�”}”(hj\˜h]”hŒstruct srp_rport *rport”…”�”}”(hj^˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjZ˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´MhjV˜ubj^)�”}”(hhh]”hì)�”}”(hŒ-SRP remote port for which to stop the timers.”h]”hŒ-SRP remote port for which to stop the timers.”…”�”}”(hju˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jq˜h´Mhjr˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjV˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jq˜h´MhjS˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj7˜ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hj—˜h]”hŒ Description”…”�”}”(hj™˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj•˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´Mhj7˜ubhì)�”}”(hŒ£Must be called after srp_remove_host() and scsi_remove_host(). The caller must hold a reference on the rport (rport->dev) and on the SCSI host (rport->dev.parent).”h]”hŒ£Must be called after srp_remove_host() and scsi_remove_host(). The caller must hold a reference on the rport (rport->dev) and on the SCSI host (rport->dev.parent).”…”�”}”(hj­˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´Mhj7˜ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjº‡h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ!srp_attach_transport (C function)”Œc.srp_attach_transport”hNt”auh1jGhjº‡h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒXstruct scsi_transport_template * srp_attach_transport (struct srp_function_template *ft)”h]”jd)�”}”(hŒVstruct scsi_transport_template *srp_attach_transport(struct srp_function_template *ft)”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjܘh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjؘh²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´M(ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjê˜h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjؘh²hh³jé˜h´M(ubh)�”}”(hhh]”j“)�”}”(hŒscsi_transport_template”h]”hŒscsi_transport_template”…”�”}”(hjû˜h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjø˜ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jý˜Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j Œsrp_attach_transport”sbŒc.srp_attach_transport”†”asbuh1hhjؘh²hh³jé˜h´M(ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjؘh²hh³jé˜h´M(ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj*™h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjؘh²hh³jé˜h´M(ubj�)�”}”(hŒsrp_attach_transport”h]”j“)�”}”(hj™h]”hŒsrp_attach_transport”…”�”}”(hj;™h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj7™ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjؘh²hh³jé˜h´M(ubjÊ)�”}”(hŒ"(struct srp_function_template *ft)”h]”jÐ)�”}”(hŒ struct srp_function_template *ft”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjV™h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjR™ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjc™h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjR™ubh)�”}”(hhh]”j“)�”}”(hŒsrp_function_template”h]”hŒsrp_function_template”…”�”}”(hjt™h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjq™ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jv™Œmodname”NŒ classname”Njôj÷)�”}”jú]”j™Œc.srp_attach_transport”†”asbuh1hhjR™ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’™h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjR™ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj ™h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjR™ubj“)�”}”(hŒft”h]”hŒft”…”�”}”(hj­™h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjR™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´M(ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjÔ˜h²hh³jé˜h´M(ubah}”(h]”jϘah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jé˜h´M(hjјh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ"instantiate SRP transport template”h]”hŒ"instantiate SRP transport template”…”�”}”(hj×™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´M(hjÔ™h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjјh²hh³jé˜h´M(ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjï™jäjï™jå‰jæ‰jç‰uh1jXh²hhjº‡h³Nh´Nubjé)�”}”(hŒ\**Parameters** ``struct srp_function_template *ft`` SRP transport class function template”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjù™h]”hŒ Parameters”…”�”}”(hjû™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj÷™ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´M,hjó™ubj7)�”}”(hhh]”j<)�”}”(hŒJ``struct srp_function_template *ft`` SRP transport class function template”h]”(jB)�”}”(hŒ$``struct srp_function_template *ft``”h]”jH)�”}”(hjšh]”hŒ struct srp_function_template *ft”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjšubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´M.hjšubj^)�”}”(hhh]”hì)�”}”(hŒ%SRP transport class function template”h]”hŒ%SRP transport class function template”…”�”}”(hj1šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.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&]”uh1j6hjó™ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjº‡h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ"srp_release_transport (C function)”Œc.srp_release_transport”hNt”auh1jGhjº‡h²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ>void srp_release_transport (struct scsi_transport_template *t)”h]”jd)�”}”(hŒ=void srp_release_transport(struct scsi_transport_template *t)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjršh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjnšh²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´MZubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�šh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjnšh²hh³j€šh´MZubj�)�”}”(hŒsrp_release_transport”h]”j“)�”}”(hŒsrp_release_transport”h]”hŒsrp_release_transport”…”�”}”(hj“šh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj�šubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjnšh²hh³j€šh´MZubjÊ)�”}”(hŒ#(struct scsi_transport_template *t)”h]”jÐ)�”}”(hŒ!struct scsi_transport_template *t”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj¯šh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj«šubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼šh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj«šubh)�”}”(hhh]”j“)�”}”(hŒscsi_transport_template”h]”hŒscsi_transport_template”…”�”}”(hjÍšh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÊšubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jÏšŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j j•šsbŒc.srp_release_transport”†”asbuh1hhj«šubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjíšh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj«šubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjûšh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj«šubj“)�”}”(hj€h]”hŒt”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj«šubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj§šubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjnšh²hh³j€šh´MZubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjjšh²hh³j€šh´MZubah}”(h]”ješah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j€šh´MZhjgšh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ'release SRP transport template instance”h]”hŒ'release SRP transport template instance”…”�”}”(hj1›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´MZhj.›h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjgšh²hh³j€šh´MZubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjI›jäjI›jå‰jæ‰jç‰uh1jXh²hhjº‡h³Nh´Nubjé)�”}”(hŒS**Parameters** ``struct scsi_transport_template *t`` transport template instance”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjS›h]”hŒ Parameters”…”�”}”(hjU›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjQ›ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´M^hjM›ubj7)�”}”(hhh]”j<)�”}”(hŒA``struct scsi_transport_template *t`` transport template instance”h]”(jB)�”}”(hŒ%``struct scsi_transport_template *t``”h]”jH)�”}”(hjr›h]”hŒ!struct scsi_transport_template *t”…”�”}”(hjt›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjp›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´M`hjl›ubj^)�”}”(hhh]”hì)�”}”(hŒtransport template instance”h]”hŒtransport template instance”…”�”}”(hj‹›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´M[hjˆ›ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjl›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j‡›h´M`hji›ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjM›ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjº‡h²hh³Nh´Nubeh}”(h]”Œscsi-rdma-srp-transport-class”ah ]”h"]”Œscsi rdma (srp) transport class”ah$]”h&]”uh1hµhjŒh²hh³hÊh´M'ubeh}”(h]”Œtransport-classes”ah ]”h"]”Œtransport classes”ah$]”h&]”uh1hµhjh²hh³hÊh´Käubeh}”(h]”Œscsi-mid-layer”ah ]”h"]”Œscsi mid layer”ah$]”h&]”uh1hµhh·h²hh³hÊh´KUubh¶)�”}”(hhh]”(h»)�”}”(hŒSCSI lower layer”h]”hŒSCSI lower layer”…”�”}”(hjΛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjË›h²hh³hÊh´M0ubh¶)�”}”(hhh]”(h»)�”}”(hŒ Host Bus Adapter transport types”h]”hŒ Host Bus Adapter transport types”…”�”}”(hjß›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjÜ›h²hh³hÊh´M3ubhì)�”}”(hŒ�Many modern device controllers use the SCSI command set as a protocol to communicate with their devices through many different types of physical connections.”h]”hŒ�Many modern device controllers use the SCSI command set as a protocol to communicate with their devices through many different types of physical connections.”…”�”}”(hjí›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M5hjÜ›h²hubhì)�”}”(hŒ¡In SCSI language a bus capable of carrying SCSI commands is called a "transport", and a controller connecting to such a bus is called a "host bus adapter" (HBA).”h]”hŒ©In SCSI language a bus capable of carrying SCSI commands is called a “transportâ€�, and a controller connecting to such a bus is called a “host bus adapterâ€� (HBA).”…”�”}”(hjû›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M9hjÜ›h²hubh¶)�”}”(hhh]”(h»)�”}”(hŒDebug transport”h]”hŒDebug transport”…”�”}”(hj œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj œh²hh³hÊh´M>ubhì)�”}”(hX(The file drivers/scsi/scsi_debug.c simulates a host adapter with a variable number of disks (or disk like devices) attached, sharing a common amount of RAM. Does a lot of checking to make sure that we are not getting blocks mixed up, and panics the kernel if anything out of the ordinary is seen.”h]”hX(The file drivers/scsi/scsi_debug.c simulates a host adapter with a variable number of disks (or disk like devices) attached, sharing a common amount of RAM. Does a lot of checking to make sure that we are not getting blocks mixed up, and panics the kernel if anything out of the ordinary is seen.”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M@hj œh²hubhì)�”}”(hŒWTo be more realistic, the simulated devices have the transport attributes of SAS disks.”h]”hŒWTo be more realistic, the simulated devices have the transport attributes of SAS disks.”…”�”}”(hj(œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MFhj œh²hubhì)�”}”(hŒ;For documentation see http://sg.danny.cz/sg/scsi_debug.html”h]”(hŒFor documentation see ”…”�”}”(hj6œh²hh³Nh´Nubj‚)�”}”(hŒ%http://sg.danny.cz/sg/scsi_debug.html”h]”hŒ%http://sg.danny.cz/sg/scsi_debug.html”…”�”}”(hj>œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”j@œuh1j�hj6œubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MIhj œh²hubeh}”(h]”Œdebug-transport”ah ]”h"]”Œdebug transport”ah$]”h&]”uh1hµhjÜ›h²hh³hÊh´M>ubh¶)�”}”(hhh]”(h»)�”}”(hŒtodo”h]”hŒtodo”…”�”}”(hj^œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj[œh²hh³hÊh´MLubhì)�”}”(hŒParallel (fast/wide/ultra) SCSI, USB, SATA, SAS, Fibre Channel, FireWire, ATAPI devices, Infiniband, Parallel ports, netlink...”h]”hŒParallel (fast/wide/ultra) SCSI, USB, SATA, SAS, Fibre Channel, FireWire, ATAPI devices, Infiniband, Parallel ports, netlink...”…”�”}”(hjlœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MNhj[œh²hubeh}”(h]”Œtodo”ah ]”h"]”Œtodo”ah$]”h&]”uh1hµhjÜ›h²hh³hÊh´MLubeh}”(h]”Œ host-bus-adapter-transport-types”ah ]”h"]”Œ host bus adapter transport types”ah$]”h&]”uh1hµhjË›h²hh³hÊh´M3ubeh}”(h]”Œscsi-lower-layer”ah ]”h"]”Œscsi lower layer”ah$]”h&]”uh1hµhh·h²hh³hÊh´M0ubeh}”(h]”Œscsi-interfaces-guide”ah ]”h"]”Œscsi 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”œj'j$jÜjÙjjjjjmjjj”j‘j»j¸jâjßj jjÈ›jÅ›j‰j†j j jÈ-jÅ-jã5jà5jéRjæRj_j_j¤ij¡ije¯jb¯jh²je²jwËjtËjcÏj`Ïj‡Új„Új®Új«Új±Ýj®Ýjðójíój�j~jÀ›j½›jÕ-jÒ-jÃJjÀJj°€j­€j×€jÔ€j·‡j´‡j¸›jµ›j�œjŒœj‡œj„œjXœjUœjœj|œuŒ nametypes”}”(j—œ‰j'‰j܉j‰j‰jm‰j”‰j»‰jâ‰j ‰jÈ›‰j‰‰j ‰jÈ-‰jã5‰jéR‰j_‰j¤i‰je¯‰jh²‰jwˉjcωj‡Ú‰j®Ú‰j±Ý‰jðó‰j�‰jÀ›‰jÕ-‰jÃJ‰j°€‰j×€‰j·‡‰j¸›‰j�œ‰j‡œ‰jXœ‰jœ‰uh}”(j”œh·j$j;jÙjLjjßjj*jjjIj‘jpj¸j—jßj¾jjåjÅ›jj†j%j j6jVj_jjjÂjÇj„j‰jj jo jÅ-j j5 j: j$j)jjj(j-jjj¤j©j%j*jdjijÕ!jÚ!j]$jb$j¾&jÃ&jZ*j_*jà5jË-j.j .j&0j+0j3j 3jæRjæ5j6j6j’7j—7jW9j\9jb;jg;j}?j‚?j§Aj¬AjÛCjàCj‰FjŽFjtIjyIjÏJjÔJjTMjYMjGPjLPj_jìRjSjSj¬Wj±WjŸ[j¤[j©]j®]j¡ij_jD_jI_j¹aj¾ajÙcjÞcjgjgjb¯j§ijÒij×ijLkjQkj¥pjªpjØrjÝrjëujðujÅxjÊxj zj%zj¡{j¦{j"}j'}j½‚j‚jňjʈjÕ‹jÚ‹jü�jŽj/�j4�jh’jm’j•j•j¸–j½–jR˜jW˜j šjšj\œjaœjÍžjÒžj] jb ju£jz£j ¤j¥¤j>§jC§jÜ©já©j¬j$¬je²jh¯j“¯j˜¯j±j±jtËjk²j–²j›²j\´ja´j ¶j¶j©·j®·j¹j$¹jzºjºjÕ»jÚ»jð½jõ½jÁjÁjÞÃjãÃjPÇjUÇjzÉjÉj|Êj�Êj`ÏjzËjºËj¿ËjfÍjkÍjhÎjmÎj„ÚjfÏj‘Ïj–ÏjvÑj{Ñj ÕjÕj ÙjÙj«ÚjŠÚj®Ýj±ÚjÜÚjáÚj7Üj<Üjíój´ÝjßÝjäÝj:ßj?ßjGâjLâjÐäjÕäj§æj¬æj=èjBèj˜éj�éjóêjøêjHíjMíj£îj¨îjÀðjÅðj~jóójôj#ôjdõjiõjc÷jh÷j ùj¥ùj‹üj�üjhÿjmÿjšjŸjjj½›jŒjÒ-j«jÖjÛj j" jAjFjijnjñjöj7j<j>jCj,j1j6j;jv!j{!j½#jÂ#jþ%j&j¦'j«'jN)jS)j+,j0,jÀJjØ-j.j.j—/jœ/j3j3jÆ6jË6jÒ9j×9jÇ;jÌ;jH=jM=jÉ>jÎ>jJ@jO@jËAjÐAjLCjQCjÑEjÖEjRGjWGjÓHjØHj­€jÆJjKj KjœLj¡LjDNjINjØOjÝOjuQjzQjöRjûRjwTj|Tj÷UjüUjlXjqXjíYjòYjŸ[j¤[j ]j%]jÜ^já^jMajRajPcjUcjÑdjÖdjƒfjˆfjhj hjÀijÅijVkj[kj€mj…mjªoj¯oj±qj¶qjTtjYtjÕujÚuj‡wjŒwjyj yj‰zjŽzj |j|jÆ}jË}j\jajÔ€j³€j´‡jÚ€j�j �j�‚j•‚j„j „jœ…j¡…jµ›jº‡jå‡jê‡jŠj Šj†‹j‹‹j[�j`�j1�j6�jŒ�j‘�jç‘jì‘jL”jQ”jÍ•jÒ•jN—jS—jϘjÔ˜ješjjšjŒœjË›j„œjÜ›jUœj œj|œj[œuŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.