€•Œ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´Mfubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj�h²hh³j¢h´Mfubj�)�”}”(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´MfubhŒ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´Mfubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj‰h²hh³j¢h´Mfubah}”(h]”j„ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j¢h´Mfhj†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´Mfhj\ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj†h²hh³j¢h´Mfubeh}”(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´Mjhj{ 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´Mghjš 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´Mghj¶ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjš ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jµ h´Mghj— ubah}”(h]”h ]”h"]”h$]”h&]”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´Mihj{ 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´Mhhj{ 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´Mkhj{ 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´M6ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj­h²hh³j¿h´M6ubj�)�”}”(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´M6ubjÊ)�”}”(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´M6ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj©h²hh³j¿h´M6ubah}”(h]”j¤ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j¿h´M6hj¦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´M6hjnh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj¦h²hh³j¿h´M6ubeh}”(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´M:hj�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´M7hj¬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´M7hjÈubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jÇh´M7hj©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´M9hj�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´M9hj�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´Mcubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj.h²hh³j@h´Mcubj�)�”}”(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´McubjÊ)�”}”(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´Mcubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj*h²hh³j@h´Mcubah}”(h]”j%ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j@h´Mchj'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´Mchj)h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj'h²hh³j@h´Mcubeh}”(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´MghjHubj7)�”}”(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´Mdhjgubj^)�”}”(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´Mdhjƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjgubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j‚h´Mdhjdubj<)�”}”(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´Mehj 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´Mehj¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j»h´Mehjdubj<)�”}”(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´MfhjÙ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´Mfhjõubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÙubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jôh´Mfhjdubeh}”(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´MhhjHubhì)�”}”(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´MghjHubeh}”(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´M{ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjmh²hh³jh´M{ubj�)�”}”(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´M{ubjÊ)�”}”(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´M{ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjih²hh³jh´M{ubah}”(h]”jdah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jh´M{hjfh²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´M{hje h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjfh²hh³jh´M{ubeh}”(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´Mhj„ 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´M€hj„ 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´Mhj„ 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´M2ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjs9h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj`9h²hh³jr9h´M2ubh)�”}”(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´M2ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥9h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj`9h²hh³jr9h´M2ubj�)�”}”(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´M2ubjÊ)�”}”(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´M2ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj\9h²hh³jr9h´M2ubah}”(h]”jW9ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jr9h´M2hjY9h²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´M2hjP:h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjY9h²hh³jr9h´M2ubeh}”(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´M6hjo: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´M3hjŽ: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´M3hjª:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjŽ:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j©:h´M3hj‹: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´M5hjo: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´M5hjè: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´M5hjû:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjè:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jú:h´M5hjå:ubah}”(h]”h ]”h"]”h$]”h&]”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´M7hjo: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´M8hj6;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jsh³jH;h´M8hjo: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´MIubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~;h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjk;h²hh³j};h´MIubj�)�”}”(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´MIubjÊ)�”}”(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´MIubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjg;h²hh³j};h´MIubah}”(h]”jb;ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j};h´MIhjd;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´MIhjd=h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjd;h²hh³j};h´MIubeh}”(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´MMhjƒ=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´MJhj¢=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´MJhj¾=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj¢=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j½=h´MJhjŸ=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´MKhjÛ=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´MKhj÷=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÛ=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jö=h´MKhjŸ=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´MLhj>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´MLhj0>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j/>h´MLhjŸ=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´MMhjM>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´MMhji>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjM>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jh>h´MMhjŸ=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´MNhj˜>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´MNhj´>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj˜>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j³>h´MNhjŸ=ubeh}”(h]”h ]”h"]”h$]”h&]”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´MPhjƒ=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´MOhjƒ=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´MRubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃAh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj°Ah²hh³jÂAh´MRubj�)�”}”(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´MRubjÊ)�”}”(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´MRubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj¬Ah²hh³jÂAh´MRubah}”(h]”j§Aah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jÂAh´MRhj©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´MRhjáBh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj©Ah²hh³jÂAh´MRubeh}”(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´MVhjCubj7)�”}”(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´MShjCubj^)�”}”(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´MShj;Cubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjCubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j:Ch´MShjCubj<)�”}”(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´MThjXCubj^)�”}”(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´MThjtCubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjXCubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jsCh´MThjCubeh}”(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´MVhjCubjt)�”}”(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´MVhj¯Cubah}”(h]”h ]”h"]”h$]”h&]”uh1jsh³jÁCh´MVhjCubeh}”(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´Mdubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷Ch²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjäCh²hh³jöCh´Mdubj�)�”}”(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´MdubjÊ)�”}”(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´Mdubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjàCh²hh³jöCh´Mdubah}”(h]”jÛCah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jöCh´MdhjÝ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´MdhjEh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjÝCh²hh³jöCh´Mdubeh}”(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&]”uh1jGhjcompatible. 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´Mhj…^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´K�ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`_h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjM_h²hh³j__h´K�ubj�)�”}”(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´K�ubjÊ)�”}”(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´K�ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjI_h²hh³j__h´K�ubah}”(h]”jD_ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j__h´K�hjF_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´K�hjC`h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjF_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é)�”}”(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´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_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´M ubjÊ)�”}”(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´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Œ&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´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é)�”}”(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´MhjÁ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´M hjà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´M hjübubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjàbubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jûbh´M hjÝ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´M hjcubj^)�”}”(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´M hj5cubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjcubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j4ch´M hjÝ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´MhjÁ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´MhjÁ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´MhjÁ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´Mnubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõch²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjâch²hh³jôch´Mnubj�)�”}”(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´MnubjÊ)�”}”(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´Mnubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjÞch²hh³jôch´Mnubah}”(h]”jÙcah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jôch´MnhjÛ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´Mnhj`eh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjÛch²hh³jôch´Mnubeh}”(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´Mrhjeubj7)�”}”(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´Mohjž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´Mohjºeubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjžeubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j¹eh´Mohj›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´Mphj×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´Mphjóeubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj×eubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jòeh´Mphj›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´Mqhjfubj^)�”}”(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´Mqhj,fubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjfubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j+fh´Mqhj›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´MrhjIfubj^)�”}”(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´Mrhjefubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjIfubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jdfh´Mrhj›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´Mthjeubhì)�”}”(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´Mthj fubhŒ.”…”�”}”(hj fh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÇfh´Mthjeubhì)�”}”(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´Mxhjeubhì)�”}”(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´Mxhjeubeh}”(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´M„ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×ph²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj®ph²hh³jÖph´M„ubj�)�”}”(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´M„ubjÊ)�”}”(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´M„ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjªph²hh³jÖph´M„ubah}”(h]”j¥pah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jÖph´M„hj§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´M„hj‚qh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj§ph²hh³jÖph´M„ubeh}”(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´M…hjÀ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´M…hjÜqubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÀqubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jÛqh´M…hj½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´M‡hj¡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´M†hj¡qubhì)�”}”(hŒ **Return**”h]”jó)�”}”(hj^rh]”hŒReturn”…”�”}”(hj`rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj\rubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ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´MŒhj§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´Mhj°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´MhjÏ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´Mhjëtubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÏtubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jêth´MhjÌ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´Mhjuubj^)�”}”(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´Mhj$uubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjuubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j#uh´MhjÌ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´MhjAuubj^)�”}”(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´Mhj]uubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjAuubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j\uh´MhjÌ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´Mhj°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´Mhj˜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´Mhj°tubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj§ih²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_done (C function)”Œ c.scsi_done”hNt”auh1jGhj§ih²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ&void scsi_done (struct scsi_cmnd *cmd)”h]”jd)�”}”(hŒ%void scsi_done(struct scsi_cmnd *cmd)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjøuh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjôuh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´Mubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjôuh²hh³jvh´Mubj�)�”}”(hŒ scsi_done”h]”j“)�”}”(hŒ scsi_done”h]”hŒ scsi_done”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjvubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjôuh²hh³jvh´MubjÊ)�”}”(hŒ(struct scsi_cmnd *cmd)”h]”jÐ)�”}”(hŒstruct scsi_cmnd *cmd”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj5vh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj1vubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBvh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj1vubh)�”}”(hhh]”j“)�”}”(hŒ scsi_cmnd”h]”hŒ scsi_cmnd”…”�”}”(hjSvh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjPvubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jUvŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jvsbŒ c.scsi_done”†”asbuh1hhj1vubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjsvh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj1vubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj�vh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj1vubj“)�”}”(hŒcmd”h]”hŒcmd”…”�”}”(hjŽvh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj1vubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj-vubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjôuh²hh³jvh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjðuh²hh³jvh´Mubah}”(h]”jëuah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jvh´Mhjíuh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ6Notify the SCSI mid-layer that a command has completed”h]”hŒ6Notify the SCSI mid-layer that a command has completed”…”�”}”(hj¸vh²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µvh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjíuh²hh³jvh´Mubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjÐvjäjÐvjå‰jæ‰jç‰uh1jXh²hhj§ih³Nh´Nubjé)�”}”(hX‰**Parameters** ``struct scsi_cmnd *cmd`` Completed SCSI command **Description** Called by a SCSI low-level driver to notify the SCSI mid-layer that the command has completed. There are two cases: - The SCSI error handler does not own **cmd**. In this case scsi_complete() decides how to complete the command based on the value of **cmd->result**. - The SCSI error handler owns **cmd** because scsi_timeout() has set SCMD_STATE_COMPLETE. In this case this function has no effect, **cmd->result** is ignored and the SCSI error handler decides whether to retry or fail **cmd**. See also scmd_eh_abort_handler() and scsi_eh_flush_done_q().”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjÚvh]”hŒ Parameters”…”�”}”(hjÜvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjØvubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MhjÔvubj7)�”}”(hhh]”j<)�”}”(hŒ1``struct scsi_cmnd *cmd`` Completed SCSI command ”h]”(jB)�”}”(hŒ``struct scsi_cmnd *cmd``”h]”jH)�”}”(hjùvh]”hŒstruct scsi_cmnd *cmd”…”�”}”(hjûvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj÷vubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´Mhjóvubj^)�”}”(hhh]”hì)�”}”(hŒCompleted SCSI command”h]”hŒCompleted SCSI command”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jwh´Mhjwubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjóvubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jwh´Mhjðvubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjÔvubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hj4wh]”hŒ Description”…”�”}”(hj6wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj2wubah}”(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Ôvubhì)�”}”(hŒsCalled by a SCSI low-level driver to notify the SCSI mid-layer that the command has completed. There are two cases:”h]”hŒsCalled by a SCSI low-level driver to notify the SCSI mid-layer that the command has completed. There are two cases:”…”�”}”(hjJwh²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ÔvubjT)�”}”(hhh]”(jY)�”}”(hŒ”The SCSI error handler does not own **cmd**. In this case scsi_complete() decides how to complete the command based on the value of **cmd->result**.”h]”hì)�”}”(hŒ”The SCSI error handler does not own **cmd**. In this case scsi_complete() decides how to complete the command based on the value of **cmd->result**.”h]”(hŒ$The SCSI error handler does not own ”…”�”}”(hj`wh²hh³Nh´Nubjó)�”}”(hŒ**cmd**”h]”hŒcmd”…”�”}”(hjhwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj`wubhŒY. In this case scsi_complete() decides how to complete the command based on the value of ”…”�”}”(hj`wh²hh³Nh´Nubjó)�”}”(hŒ**cmd->result**”h]”hŒ cmd->result”…”�”}”(hjzwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj`wubhŒ.”…”�”}”(hj`wh²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´Mhj\wubah}”(h]”h ]”h"]”h$]”h&]”uh1jXhjYwubjY)�”}”(hXThe SCSI error handler owns **cmd** because scsi_timeout() has set SCMD_STATE_COMPLETE. In this case this function has no effect, **cmd->result** is ignored and the SCSI error handler decides whether to retry or fail **cmd**. See also scmd_eh_abort_handler() and scsi_eh_flush_done_q().”h]”hì)�”}”(hXThe SCSI error handler owns **cmd** because scsi_timeout() has set SCMD_STATE_COMPLETE. In this case this function has no effect, **cmd->result** is ignored and the SCSI error handler decides whether to retry or fail **cmd**. See also scmd_eh_abort_handler() and scsi_eh_flush_done_q().”h]”(hŒThe SCSI error handler owns ”…”�”}”(hj�wh²hh³Nh´Nubjó)�”}”(hŒ**cmd**”h]”hŒcmd”…”�”}”(hj¥wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj�wubhŒ_ because scsi_timeout() has set SCMD_STATE_COMPLETE. In this case this function has no effect, ”…”�”}”(hj�wh²hh³Nh´Nubjó)�”}”(hŒ**cmd->result**”h]”hŒ cmd->result”…”�”}”(hj·wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj�wubhŒH is ignored and the SCSI error handler decides whether to retry or fail ”…”�”}”(hj�wh²hh³Nh´Nubjó)�”}”(hŒ**cmd**”h]”hŒcmd”…”�”}”(hjÉwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj�wubhŒ>. See also scmd_eh_abort_handler() and scsi_eh_flush_done_q().”…”�”}”(hj�wh²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´Mhj™wubah}”(h]”h ]”h"]”h$]”h&]”uh1jXhjYwubeh}”(h]”h ]”h"]”h$]”h&]”j©Œ-”uh1jSh³j’wh´MhjÔvubeh}”(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”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj xh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M”ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj xh²hh³jxh´M”ubh)�”}”(hhh]”j“)�”}”(hŒ scsi_cmnd”h]”hŒ scsi_cmnd”…”�”}”(hj.xh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj+xubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j0xŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j Œscsi_get_internal_cmd”sbŒc.scsi_get_internal_cmd”†”asbuh1hhj xh²hh³jxh´M”ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjOxh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj xh²hh³jxh´M”ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj]xh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj xh²hh³jxh´M”ubj�)�”}”(hŒscsi_get_internal_cmd”h]”j“)�”}”(hjLxh]”hŒscsi_get_internal_cmd”…”�”}”(hjnxh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjjxubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj xh²hh³jxh´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”…”�”}”(hj‰xh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj…xubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–xh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj…xubh)�”}”(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ú]”jJxŒc.scsi_get_internal_cmd”†”asbuh1hhj…xubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅxh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj…xubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjÓxh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj…xubj“)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hjàxh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj…xubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj�xubjÐ)�”}”(hŒ&enum dma_data_direction data_direction”h]”(jj)�”}”(hjf9h]”hŒenum”…”�”}”(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õxubh)�”}”(hhh]”j“)�”}”(hŒdma_data_direction”h]”hŒdma_data_direction”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjyubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jyŒmodname”NŒ classname”Njôj÷)�”}”jú]”jJxŒc.scsi_get_internal_cmd”†”asbuh1hhjõxubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5yh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjõxubj“)�”}”(hŒdata_direction”h]”hŒdata_direction”…”�”}”(hjCyh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjõxubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj�xubjÐ)�”}”(hŒblk_mq_req_flags_t flags”h]”(h)�”}”(hhh]”j“)�”}”(hŒblk_mq_req_flags_t”h]”hŒblk_mq_req_flags_t”…”�”}”(hj_yh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj\yubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jayŒmodname”NŒ classname”Njôj÷)�”}”jú]”jJxŒc.scsi_get_internal_cmd”†”asbuh1hhjXyubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}yh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjXyubj“)�”}”(hŒflags”h]”hŒflags”…”�”}”(hj‹yh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjXyubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj�xubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhj xh²hh³jxh´M”ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjxh²hh³jxh´M”ubah}”(h]”jxah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jxh´M”hjxh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ"Allocate an internal SCSI command.”h]”hŒ"Allocate 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Àhjxh²hh³jxh´M”ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjÍyjäjÍyjå‰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×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ŒL``struct scsi_device *sdev`` SCSI device from which to allocate the command ”h]”(jB)�”}”(hŒ``struct scsi_device *sdev``”h]”jH)�”}”(hjöyh]”hŒstruct scsi_device *sdev”…”�”}”(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 device from which to allocate the command”h]”hŒ.SCSI device from which to allocate the command”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j zh´M•hj zubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjðyubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j zh´M•hjíyubj<)�”}”(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)�”}”(hj/zh]”hŒ&enum dma_data_direction data_direction”…”�”}”(hj1zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj-zubah}”(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)zubj^)�”}”(hhh]”hì)�”}”(hŒ(Data direction for the allocated command”h]”hŒ(Data direction for the allocated command”…”�”}”(hjHzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jDzh´M–hjEzubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj)zubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jDzh´M–hjíyubj<)�”}”(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)�”}”(hjhzh]”hŒblk_mq_req_flags_t flags”…”�”}”(hjjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjfzubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M˜hjbzubj^)�”}”(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.”…”�”}”(hj�zh²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~zubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjbzubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j}zh´M˜hjíyubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjÑyubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hj¤zh]”hŒ Description”…”�”}”(hj¦zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj¢zubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MšhjÑyubhì)�”}”(hŒ/Allocates a SCSI command for internal LLDD use.”h]”hŒ/Allocates a SCSI command for internal LLDD use.”…”�”}”(hjºzh²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Ñyubeh}”(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é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øzh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjåzh²hh³j÷zh´M°ubj�)�”}”(hŒscsi_put_internal_cmd”h]”j“)�”}”(hŒscsi_put_internal_cmd”h]”hŒscsi_put_internal_cmd”…”�”}”(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åzh²hh³j÷zh´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Œ ”…”�”}”(hj3{h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj"{ubh)�”}”(hhh]”j“)�”}”(hŒ scsi_cmnd”h]”hŒ scsi_cmnd”…”�”}”(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_put_internal_cmd”†”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Œ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Éhjåzh²hh³j÷zh´M°ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjázh²hh³j÷zh´M°ubah}”(h]”jÜzah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j÷zh´M°hjÞzh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒFree an internal SCSI command.”h]”hŒFree an internal SCSI command.”…”�”}”(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Þzh²hh³j÷zh´M°ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjÁ{jäjÁ{jå‰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Ë{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Œ3``struct scsi_cmnd *scmd`` SCSI command to be freed”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³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M¶hjä{ubj^)�”}”(hhh]”hì)�”}”(hŒSCSI command to be freed”h]”hŒSCSI command to be freed”…”�”}”(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&]”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§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”…”�”}”(hjD|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Œ ”…”�”}”(hjS|h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj@|h²hh³jR|h´MÎubj�)�”}”(hŒscsi_block_requests”h]”j“)�”}”(hŒscsi_block_requests”h]”hŒscsi_block_requests”…”�”}”(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 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 jg|sbŒc.scsi_block_requests”†”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Ï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ŒgUtility function used by low-level drivers to prevent further commands from being queued to the device.”h]”hŒgUtility function used by low-level drivers to prevent further commands from being queued to the 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À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§ih³Nh´Nubjé)�”}”(hŒÛ**Parameters** ``struct Scsi_Host *shost`` host in question **Description** There is no timer nor any other means by which the requests get unblocked other than the low-level driver calling scsi_unblock_requests().”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj&}h]”hŒ Parameters”…”�”}”(hj(}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj$}ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ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_Host *shost`` host in question ”h]”(jB)�”}”(hŒ``struct Scsi_Host *shost``”h]”jH)�”}”(hjE}h]”hŒstruct Scsi_Host *shost”…”�”}”(hjG}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjC}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Œhost in question”h]”hŒhost in question”…”�”}”(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Œ**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ŒŠThere is no timer nor any other means by which the requests get unblocked other than the low-level driver calling scsi_unblock_requests().”h]”hŒŠThere is no timer nor any other means by which the requests get unblocked other than the low-level driver calling scsi_unblock_requests().”…”�”}”(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_unblock_requests (C function)”Œc.scsi_unblock_requests”hNt”auh1jGhj§ih²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ4void scsi_unblock_requests (struct Scsi_Host *shost)”h]”jd)�”}”(hŒ3void scsi_unblock_requests(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³Œ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_unblock_requests”h]”j“)�”}”(hŒscsi_unblock_requests”h]”hŒscsi_unblock_requests”…”�”}”(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_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_unblock_requests”†”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Œ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´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Œ`Utility function used by low-level drivers to allow further commands to be queued to the device.”h]”hŒ`Utility function used by low-level drivers to allow further commands to be queued to the 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é)�”}”(hXt**Parameters** ``struct Scsi_Host *shost`` host in question **Description** There is no timer nor any other means by which the requests get unblocked other than the low-level driver calling scsi_unblock_requests(). This is done as an API function so that changes to the internals of the scsi mid-layer won't require wholesale changes to drivers that use this feature.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(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_Host *shost`` host in question ”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Œhost in question”h]”hŒhost in question”…”�”}”(hjß~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³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ó)�”}”(hjh]”hŒ Description”…”�”}”(hjh²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ì)�”}”(hX#There is no timer nor any other means by which the requests get unblocked other than the low-level driver calling scsi_unblock_requests(). This is done as an API function so that changes to the internals of the scsi mid-layer won't require wholesale changes to drivers that use this feature.”h]”hX%There is no timer nor any other means by which the requests get unblocked other than the low-level driver calling scsi_unblock_requests(). This is done as an API function so that changes to the internals of the scsi mid-layer won’t require wholesale changes to drivers that use this feature.”…”�”}”(hjh²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_mode_select (C function)”Œc.scsi_mode_select”hNt”auh1jGhj§ih²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ´int scsi_mode_select (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]”jd)�”}”(hŒ³int scsi_mode_select(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Œint”h]”hŒint”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjBh²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´Mòubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjBh²hh³jTh´Mòubj�)�”}”(hŒscsi_mode_select”h]”j“)�”}”(hŒscsi_mode_select”h]”hŒscsi_mode_select”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjcubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjBh²hh³jTh´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”…”�”}”(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 )�”}”j jisbŒc.scsi_mode_select”†”asbuh1hhjubj|)�”}”(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Œsdev”h]”hŒsdev”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj{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Ïhj{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Œ ”…”�”}”(hj8€h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj&€ubj“)�”}”(hŒsp”h]”hŒsp”…”�”}”(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Œ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Œ ”…”�”}”(hjm€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Œ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”…”�”}”(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Ï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Œ ”…”�”}”(hj5�h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj#�ubj“)�”}”(hŒretries”h]”hŒretries”…”�”}”(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Œstruct scsi_mode_data *data”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_mode_data”h]”hŒscsi_mode_data”…”�”}”(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_mode_select”†”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Œdata”h]”hŒdata”…”�”}”(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Œstruct scsi_sense_hdr *sshdr”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjÌ�h²hh³Nh´Nuba• h}”(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Ïhj{ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjBh²hh³jTh´Mòubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj>h²hh³jTh´Mòubah}”(h]”j9ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jTh´Mòhj;h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒissue a mode select”h]”hŒissue a mode select”…”�”}”(hjM‚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òhjJ‚h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj;h²hh³jTh´Mòubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãje‚jäje‚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ó)�”}”(hjo‚h]”hŒ Parameters”…”�”}”(hjq‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjm‚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öhji‚ubj7)�”}”(hhh]”(j<)�”}”(hŒ7``struct scsi_device *sdev`` SCSI device to be queried ”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 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]hjˆ‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j£‚h´Móhj…‚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ôhj…‚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õhj…‚ubj<)�”}”(hŒO``unsigned char *buffer`` request buffer (may not be smaller than eight bytes) ”h]”(jB)�”}”(hŒ``unsigned char *buffer``”h]”jH)�”}”(hj9ƒh]”hŒunsigned char *buffer”…”�”}”(hj;ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj7ƒ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öhj3ƒubj^)�”}”(hhh]”hì)�”}”(hŒ4request buffer (may not be smaller than eight bytes)”h]”hŒ4request buffer (may not be smaller than eight bytes)”…”�”}”(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öhj…‚ubj<)�”}”(hŒ&``int len`` length of request buffer. ”h]”(jB)�”}”(hŒ ``int len``”h]”jH)�”}”(hjrƒh]”hŒint len”…”�”}”(hjtƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjpƒ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÷hjlƒ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³j‡ƒh´M÷hjˆƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjlƒ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”…”�”}”(hjýƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jùƒh´Mùhjúƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÞƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jùƒh´Mùhj…‚ubj<)�”}”(hŒU``struct 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”…”�”}”(hj6„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j2„h´Múhj3„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j2„h´Múhj…‚ubj<)�”}”(hŒƒ``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)�”}”(hjV„h]”hŒstruct scsi_sense_hdr *sshdr”…”�”}”(hjX„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjT„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ühjP„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.”…”�”}”(hjo„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ûhjl„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjP„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jk„h´Mühj…‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hji‚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þhji‚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ýhji‚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´MD ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjð„h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÝ„h²hh³jï„h´MD 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´MD 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’hj9…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Œ ”…”�”}”(hj\…h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj…ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjj…h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj…ubj“)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hjw…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”…”�”}”(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Œdbd”h]”hŒdbd”…”�”}”(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 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”…”�”}”(hjK†h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj+†ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjY†h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj+†ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjg†h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj+†ubj“)�”}”(hŒbuffer”h]”hŒbuffer”…”�”}”(hjt†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”…”�”}”(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Ï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Œ ”…”�”}”(hj9‡h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj(‡ubh)�”}”(hhh]”j“)�”}”(hŒscsi_mode_data”h]”hŒscsi_mode_data”…”�”}”(hjJ‡h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjG‡ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jL‡Œmodname”NŒ classname”Njôj÷)�”}”jú]”jX…Œc.scsi_mode_sense”†”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Œ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…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ú]”jX…Œ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´MD ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjÙ„h²hh³jï„h´MD ubah}”(h]”jÔ„ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jï„h´MD 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´MD hjˆh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjÖ„h²hh³jï„h´MD ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj5ˆjäj5ˆ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”…”�”}”(hjAˆ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´MH hj9ˆubj7)�”}”(hhh]”(j<)�”}”(hŒ7``struct scsi_device *sdev`` SCSI device to be queried ”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´ME hjXˆubj^)�”}”(hhh]”hì)�”}”(hŒSCSI device to be queried”h]”hŒSCSI device to be queried”…”�”}”(hjwˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jsˆh´ME hjtˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjXˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jsˆh´ME hjUˆ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´MF hj‘ˆ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´MF hj­ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj‘ˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j¬ˆh´MF hjUˆ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´MG 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´MG hjæˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjʈubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jåˆh´MG hjUˆ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´MH 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´MH hj‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j‰h´MH hjUˆubj<)�”}”(hŒO``unsigned char *buffer`` request buffer (may not be smaller than eight bytes) ”h]”(jB)�”}”(hŒ``unsigned char *buffer``”h]”jH)�”}”(hjB‰h]”hŒunsigned char *buffer”…”�”}”(hjD‰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´MI 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³jW‰h´MI hjX‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj<‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jW‰h´MI hjUˆ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´MJ hju‰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³j�‰h´MJ hj‘‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hju‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j�‰h´MJ hjUˆ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´MK 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´MK hjʉubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj®‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jɉh´MK hjUˆ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´ML 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´ML hjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjç‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jŠh´ML hjUˆ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´MM 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´MM hj<Šubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj Šubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j;Šh´MM hjUˆ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´MO hjYŠ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´MN hjuŠubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjYŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jtŠh´MO hjUˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hj9ˆ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´MQ hj9ˆ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´MP hj±Šubah}”(h]”h ]”h"]”h$]”h&]”uh1jsh³jŠh´MP hj9ˆ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Œ ”…”�”}”(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_test_unit_ready”†”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‹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ú]”j`‹Œ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Œ*”…”�”}”(hjLŒh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjþ‹ubj“)�”}”(hŒsshdr”h]”hŒsshdr”…”�”}”(hjYŒ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Œtest if unit is ready”h]”hŒtest if unit is ready”…”�”}”(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 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)�”}”(hj6�h]”hŒ int retries”…”�”}”(hj8�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj4�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Ì hj0�ubj^)�”}”(hhh]”hì)�”}”(hŒ number of retries before failing”h]”hŒ number of retries before failing”…”�”}”(hjO�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jK�h´MÌ hjL�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj0�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jK�h´MÌ hj»Œubj<)�”}”(hŒP``struct scsi_sense_hdr *sshdr`` outpout pointer for decoded sense information. ”h]”(jB)�”}”(hŒ ``struct scsi_sense_hdr *sshdr``”h]”jH)�”}”(hjo�h]”hŒstruct scsi_sense_hdr *sshdr”…”�”}”(hjq�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjm�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Í hji�ubj^)�”}”(hhh]”hì)�”}”(hŒ.outpout pointer for decoded sense information.”h]”hŒ.outpout pointer for decoded sense information.”…”�”}”(hjˆ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j„�h´MÍ hj…�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hji�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j„�h´MÍ hj»Œubeh}”(h]”h ]”h"]”h$]”h&]”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”…”�”}”(hj6Žh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj2Žubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCŽh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj2Žubh)�”}”(hhh]”j“)�”}”(hŒ scsi_device”h]”hŒ scsi_device”…”�”}”(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 jŽsbŒc.scsi_device_set_state”†”asbuh1hhj2Žubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjtŽh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj2Žubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj‚Žh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj2Žubj“)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hj�Žh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj2Ž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ú]”jpŽŒ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ãj4�jäj4�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ñ hj8�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î hjW�ubj^)�”}”(hhh]”hì)�”}”(hŒ#scsi device to change the state of.”h]”hŒ#scsi device to change the state of.”…”�”}”(hjv�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jr�h´Mî hjs�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjW�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jr�h´Mî hjT�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ï hj��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]hj��ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j«�h´Mï hjT�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hj8�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ñ hj8�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ð hj8�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”…”�”}”(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Œ2(struct scsi_device *sdev, struct scsi_event *evt)”h]”(jÐ)�”}”(hŒstruct scsi_device *sdev”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj]�h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjY�ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjj�h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjY�ubh)�”}”(hhh]”j“)�”}”(hŒ scsi_device”h]”hŒ scsi_device”…”�”}”(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 jC�sbŒc.sdev_evt_send”†”asbuh1hhjY�ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›�h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjY�ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj©�h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjY�ubj“)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hj¶�h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjY�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjU�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ÏhjU�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”…”�”}”(hjP‘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Å hjM‘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§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ó)�”}”(hjr‘h]”hŒ Parameters”…”�”}”(hjt‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjp‘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É hjl‘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³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 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Ç hjˆ‘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³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MÉ hjl‘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È hjl‘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”…”�”}”(hjS’h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjO’h²hh³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´Má ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hja’h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjO’h²hh³j`’h´Má ubh)�”}”(hhh]”j“)�”}”(hŒ scsi_event”h]”hŒ scsi_event”…”�”}”(hjr’h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjo’ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jt’Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j Œsdev_evt_alloc”sbŒc.sdev_evt_alloc”†”asbuh1hhjO’h²hh³j`’h´Má ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“’h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjO’h²hh³j`’h´Má ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj¡’h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjO’h²hh³j`’h´Má ubj�)�”}”(hŒsdev_evt_alloc”h]”j“)�”}”(hj�’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ŒhjO’h²hh³j`’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ú]”jŽ’Œ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”…”�”}”(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ú]”jŽ’Œc.sdev_evt_alloc”†”asbuh1hhj,“ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQ“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ÉhjO’h²hh³j`’h´Má ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjK’h²hh³j`’h´Má ubah}”(h]”jF’ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j`’h´Má hjH’h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒallocate a new scsi event”h]”hŒallocate a new scsi event”…”�”}”(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ÀhjH’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** ``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ì)�”}”(hjV”h]”hŒ'Allocates and returns a new scsi_event.”…”�”}”(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ä hjT”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jsh³je”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”…”�”}”(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_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Œhjˆ”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&]”uh1jihj7•ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjH•h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj7•ubh)�”}”(hhh]”j“)�”}”(hŒscsi_device_event”h]”hŒscsi_device_event”…”�”}”(hjY•h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjV•ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j[•Œmodname”NŒ classname”Njôj÷)�”}”jú]”j•Œc.sdev_evt_send_simple”†”asbuh1hhj7•ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjw•h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj7•ubj“)�”}”(hŒevt_type”h]”hŒevt_type”…”�”}”(hj…•h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj7•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É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”…”�”}”(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 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)�”}”(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 event occurred on”h]”hŒscsi_device event occurred on”…”�”}”(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Œ:``enum scsi_device_event evt_type`` type of event to send ”h]”(jB)�”}”(hŒ#``enum scsi_device_event evt_type``”h]”jH)�”}”(hjq–h]”hŒenum scsi_device_event evt_type”…”�”}”(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Œtype of event to send”h]”hŒtype of 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]hjk–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Œ=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”…”�”}”(hj3—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Œ ”…”�”}”(hjB—h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj/—h²hh³jA—h´M ubj�)�”}”(hŒscsi_device_quiesce”h]”j“)�”}”(hŒscsi_device_quiesce”h]”hŒscsi_device_quiesce”…”�”}”(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³jA—h´M ubjÊ)�”}”(hŒ(struct scsi_device *sdev)”h]”jÐ)�”}”(hŒstruct scsi_device *sdev”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjp—h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjl—ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}—h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjl—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 jV—sbŒc.scsi_device_quiesce”†”asbuh1hhjl—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Œsdev”h]”hŒsdev”…”�”}”(hjÉ—h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjl—ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjh—ubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhj/—h²hh³jA—h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj+—h²hh³jA—h´M ubah}”(h]”j&—ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jA—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³jA—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)�”}”(hj4˜h]”hŒstruct scsi_device *sdev”…”�”}”(hj6˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj2˜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.”…”�”}”(hjM˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jI˜h´M hjJ˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj.˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jI˜h´M hj+˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj˜ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjo˜h]”hŒ Description”…”�”}”(hjq˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjm˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ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.”…”�”}”(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…˜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$ 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_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´MQ ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjë˜h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjؘh²hh³jê˜h´MQ 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´MQ 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”…”�”}”(hj7™h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj4™ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j9™Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jÿ˜sbŒc.scsi_device_resume”†”asbuh1hhj™ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjW™h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj™ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hje™h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj™ubj“)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hjr™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´MQ ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjÔ˜h²hh³jê˜h´MQ ubah}”(h]”jϘah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jê˜h´MQ 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´MQ hj™™h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjјh²hh³jê˜h´MQ 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´MU 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´MR 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´MR hjó™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj×™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jò™h´MR 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´MT 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.”…”�”}”(hj2š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´MS hj.šubhì)�”}”(hŒ,Must be called with user context, may sleep.”h]”hŒ,Must be called with user context, may sleep.”…”�”}”(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´MV hj.šubeh}”(h]”h ]”h"]”h$]”h&]”uh1jsh³j@šh´MS 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”…”�”}”(hjvšh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjrš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{hjršh²hh³j„š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Œhjrš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_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Éhjršh²hh³j„šh´MŸ ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjnšh²hh³j„šh´MŸ ubah}”(h]”jišah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j„šh´MŸ hjkšh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ)try to transition to the SDEV_BLOCK state”h]”hŒ)try to transition to the SDEV_BLOCK state”…”�”}”(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Àhjkš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`` 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ó)�”}”(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Œ-``struct scsi_device *sdev`` device to block ”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Œdevice to block”h]”hŒdevice to block”…”�”}”(hj�›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jŒ›h´M  hj�›ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjq›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jŒ›h´M  hjn›ubah}”(h]”h ]”h"]”h$]”h&]”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³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M¢ hjR›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¡ hjR›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£ hjR›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¥ hjR›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¦ hjR›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”…”�”}”(hjNœh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjJœ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”…”�”}”(hjjœh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjfœubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwœh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjfœ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 jPœsbŒ%c.scsi_internal_device_unblock_nowait”†”asbuh1hhjfœubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨œh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjfœubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj¶œh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjfœubj“)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjfœubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjbœ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Ïhjbœ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”…”�”}”(hjP�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á hjM�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§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ó)�”}”(hjr�h]”hŒ Parameters”…”�”}”(hjt�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjp�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å hjl�ubj7)�”}”(hhh]”(j<)�”}”(hŒ.``struct scsi_device *sdev`` 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Œ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]hj‹�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j¦�h´Mâ hjˆ�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ã hjˆ�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³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´Må hjl�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ä hjl�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ç hjl�ubhì)�”}”(hŒ **Notes**”h]”jó)�”}”(hj;žh]”hŒNotes”…”�”}”(hj=žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj9ž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é hjl�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.”…”�”}”(hjQž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ê hjl�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”…”�”}”(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_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Œhj|žh²hh³jŽž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”…”�”}”(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÷žŒc.scsi_block_targets”†”asbuh1hhj+Ÿubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjkŸh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj+Ÿubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjyŸ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Ï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´hjxžh²hh³jŽžh´M: ubah}”(h]”jsžah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jŽžh´M: hjuž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Àhjuž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_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”…”�”}”(hjC h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j? h´M; hj@ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj$ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j? h´M; hjèŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjÌŸubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hje h]”hŒ Description”…”�”}”(hjg h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjc ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ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 ”…”�”}”(hj{ h²hh³Nh´Nubjó)�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hjƒ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj{ 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.”…”�”}”(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Œ**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´MA 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´MB 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´Mi ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjí h²hh³jÿ h´Mi 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´Mi 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”…”�”}”(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 )�”}”j j¡sbŒc.scsi_host_block”†”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Œ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´Mi ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjé h²hh³jÿ h´Mi ubah}”(h]”jä ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jÿ h´Mi 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´Mi hj®¡h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjæ h²hh³jÿ h´Mi 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´Mm 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´Mj 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´Mj hj¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjì¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j¢h´Mj 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´Ml 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.”…”�”}”(hjC¢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´Mk 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.”…”�”}”(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´Mn 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”…”�”}”(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% )�”}”(hj( h]”hŒ*”…”�”}”(hjž¢h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj}¢h²hh³j�¢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Œhj}¢h²hh³j�¢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‘hj9£ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjK£h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj9£ubj“)�”}”(hŒsg_count”h]”hŒsg_count”…”�”}”(hjY£h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj9£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”…”�”}”(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£Œc.scsi_kmap_atomic_sg”†”asbuh1hhjn£ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“£h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjn£ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj¡£h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjn£ubj“)�”}”(hŒoffset”h]”hŒoffset”…”�”}”(hj®£h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjn£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Éhj}¢h²hh³j�¢h´Mž ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjy¢h²hh³j�¢h´Mž ubah}”(h]”jt¢ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j�¢h´Mž hjv¢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Àhjv¢h²hh³j�¢h´Mž ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjE¤jäjE¤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ó)�”}”(hjO¤h]”hŒ Parameters”…”�”}”(hjQ¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjM¤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¢ hjI¤ubj7)�”}”(hhh]”(j<)�”}”(hŒ0``struct scatterlist *sgl`` scatter-gather list ”h]”(jB)�”}”(hŒ``struct scatterlist *sgl``”h]”jH)�”}”(hjn¤h]”hŒstruct scatterlist *sgl”…”�”}”(hjp¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjl¤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Ÿ hjh¤ubj^)�”}”(hhh]”hì)�”}”(hŒscatter-gather list”h]”hŒscatter-gather list”…”�”}”(hj‡¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jƒ¤h´MŸ hj„¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjh¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jƒ¤h´MŸ hje¤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  hje¤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¡ hje¤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”…”�”}”(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¢ hje¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjI¤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³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´M¤ hjI¤ubhì)�”}”(hŒ7Returns virtual address of the start of the mapped page”h]”hŒ7Returns virtual address of the start of the mapped page”…”�”}”(hjj¥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¤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´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Œ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ÀhjŽ¥h²hh³j§¥h´MÏ ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjA¦jäjA¦jå‰jæ‰jç‰uh1jXh²hhj§ih³Nh´Nubjé)�”}”(hŒ?**Parameters** ``void *virt`` virtual address to be unmapped”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³ŒX/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:144: ./drivers/scsi/scsi_lib.c”h´MÓ hjE¦ubj7)�”}”(hhh]”j<)�”}”(hŒ-``void *virt`` virtual address to be unmapped”h]”(jB)�”}”(hŒ``void *virt``”h]”jH)�”}”(hjj¦h]”hŒ void *virt”…”�”}”(hjl¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjh¦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Õ hjd¦ubj^)�”}”(hhh]”hì)�”}”(hŒvirtual address to be unmapped”h]”hŒvirtual address to be unmapped”…”�”}”(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&]”uh1j]hjd¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j¦h´MÕ hja¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjE¦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Œ*”…”�”}”(hjM§h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjý¦ubj“)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hjZ§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”…”�”}”(hjs§h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjo§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Œid”h]”hŒid”…”�”}”(hjœ§h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjo§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ó)�”}”(hj0¨h]”hŒ Parameters”…”�”}”(hj2¨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´M3 hj*¨ubj7)�”}”(hhh]”(j<)�”}”(hŒ)``struct scsi_device *sdev`` SCSI device ”h]”(jB)�”}”(hŒ``struct scsi_device *sdev``”h]”jH)�”}”(hjO¨h]”hŒstruct scsi_device *sdev”…”�”}”(hjQ¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjM¨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 hjI¨ubj^)�”}”(hhh]”hì)�”}”(hŒ SCSI device”h]”hŒ SCSI device”…”�”}”(hjh¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jd¨h´M0 hje¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjI¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jd¨h´M0 hjF¨ubj<)�”}”(hŒ+``char *id`` buffer for the identification ”h]”(jB)�”}”(hŒ ``char *id``”h]”jH)�”}”(hjˆ¨h]”hŒchar *id”…”�”}”(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Œbuffer for the identification”h]”hŒbuffer for the identification”…”�”}”(hj¡¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j�¨h´M1 hjž¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj‚¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j�¨h´M1 hjF¨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´M2 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´M2 hjרubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj»¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jÖ¨h´M2 hjF¨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´M4 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´M3 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.”…”�”}”(hj3©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´M7 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”…”�”}”(hjb©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Œ ”…”�”}”(hjq©h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj^©h²hh³jp©h´M° ubj�)�”}”(hŒscsi_vpd_lun_serial”h]”j“)�”}”(hŒscsi_vpd_lun_serial”h]”hŒscsi_vpd_lun_serial”…”�”}”(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³jp©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 j…©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”…”�”}”(hjVªh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjSªubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jXªŒmodname”NŒ classname”Njôj÷)�”}”jú]”jÙ©Œc.scsi_vpd_lun_serial”†”asbuh1hhjOªubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjtªh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjOªubj“)�”}”(hŒsn_size”h]”hŒsn_size”…”�”}”(hj‚ªh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjOªubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj—©ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhj^©h²hh³jp©h´M° ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjZ©h²hh³jp©h´M° ubah}”(h]”jU©ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jp©h´M° hjW©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ÀhjW©h²hh³jp©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)�”}”(hj_«h]”hŒsize_t sn_size”…”�”}”(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³ hjY«ubj^)�”}”(hhh]”hì)�”}”(hŒsize of the buffer”h]”hŒsize of the buffer”…”�”}”(hjx«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jt«h´M³ hju«ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjY«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jt«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Œ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)�”}”(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 this directory”h]”hŒowner of this directory”…”�”}”(hjå¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³já¸h´K—hjâ¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjƸubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³já¸h´K—hjøubah}”(h]”h ]”h"]”h$]”h&]”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´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èhj´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”auh1jGhj´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”…”�”}”(hjL¹h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjH¹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{hjH¹h²hh³jZ¹h´KÂubj�)�”}”(hŒscsi_proc_hostdir_rm”h]”j“)�”}”(hŒscsi_proc_hostdir_rm”h]”hŒscsi_proc_hostdir_rm”…”�”}”(hjm¹h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hji¹ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjH¹h²hh³jZ¹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 jo¹sbŒc.scsi_proc_hostdir_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Œ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�¹ubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjH¹h²hh³jZ¹h´KÂubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjD¹h²hh³jZ¹h´KÂubah}”(h]”j?¹ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jZ¹h´KÂhjA¹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ÀhjA¹h²hh³jZ¹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ŒM**Parameters** ``const struct scsi_host_template *sht`` owner of directory”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Œ;``const struct scsi_host_template *sht`` owner of directory”h]”(jB)�”}”(hŒ(``const struct scsi_host_template *sht``”h]”jH)�”}”(hjhºh]”hŒ$const struct scsi_host_template *sht”…”�”}”(hjjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjfº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Èhjbº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]hjbº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èhj´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”auh1jGhj´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”…”�”}”(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_add”†”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Œshost”h]”hŒshost”…”�”}”(hjX»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Œ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²hhj´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”…”�”}”(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èhj´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”auh1jGhj´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”…”�”}”(hjZ¼h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjV¼ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjg¼h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjV¼ubh)�”}”(hhh]”j“)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hjx¼h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hju¼ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jz¼Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j j@¼sbŒc.scsi_proc_host_rm”†”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Œshost”h]”hŒshost”…”�”}”(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´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 this host's entry from /proc”h]”hŒ%remove this host’s entry from /proc”…”�”}”(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²hhj´h³Nh´Nubjé)�”}”(hŒ8**Parameters** ``struct Scsi_Host *shost`` which 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:164: ./drivers/scsi/scsi_proc.c”h´Kûhjù¼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”…”�”}”(hj7½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øhj4½ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j3½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Œ"proc_print_scsidevice (C function)”Œc.proc_print_scsidevice”hNt”auh1jGhj´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”…”�”}”(hjx½h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjt½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{hjt½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Œhjt½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Œ*”…”�”}”(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Ï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Œ ”…”�”}”(hj5¾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Œdata”h]”hŒdata”…”�”}”(hjP¾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Éhjt½h²hh³j†½h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjp½h²hh³j†½h´M ubah}”(h]”jk½ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j†½h´M hjm½h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒreturn data about this host”h]”hŒreturn data about this host”…”�”}”(hjz¾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 hjw¾h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjm½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 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 hjî¾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³j ¿h´M hj ¿ubhŒ to output to.”…”�”}”(hj ¿h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j ¿h´M hj ¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjî¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j ¿h´M hj²¾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³Œ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.”…”�”}”(hjd¿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èhj´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”auh1jGhj´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´MEubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢¿h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj�¿h²hh³j¡¿h´MEubj�)�”}”(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´MEubjÊ)�”}”(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”†”asbuh1hhjÌ¿ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjó¿h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÌ¿ubj“)�”}”(hŒhost”h]”hŒhost”…”�”}”(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 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_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”…”�”}”(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Œuint id”h]”(h)�”}”(hhh]”j“)�”}”(hŒuint”h]”hŒuint”…”�”}”(hjeÀh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjbÀubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jgÀŒmodname”NŒ classname”Njôj÷)�”}”jú]”jᅩ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ÏhjÈ¿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ú]”jᅩ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Œ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É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 probe for/add device”h]”hŒ/Respond to user request to probe for/add 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²hhj´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´MIhjÁubj7)�”}”(hhh]”(j<)�”}”(hŒ,``uint host`` user-supplied decimal integer ”h]”(jB)�”}”(hŒ ``uint host``”h]”jH)�”}”(hjDÁh]”hŒ uint host”…”�”}”(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´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³jYÁh´MFhjZÁubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj>Áubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jYÁ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´MGhjwÁ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]hjwÁ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)�”}”(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´MHhj°Á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´MHhjÌÁubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj°Áubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jËÁh´MHhj;Áubj<)�”}”(hŒ+``uint lun`` user-supplied decimal integer ”h]”(jB)�”}”(hŒ ``uint lun``”h]”jH)�”}”(hjïÁh]”hŒuint lun”…”�”}”(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´MIhjéÁ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]hjéÁ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Œ>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´MKhjÁ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()”…”�”}”(hjOÂ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´MMhjÁubhì)�”}”(hŒ**Note**”h]”jó)�”}”(hj`Âh]”hŒNote”…”�”}”(hjbÂ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´MPhjÁubhì)�”}”(hŒ;this seems to be aimed exclusively at SCSI parallel busses.”h]”hŒ;this seems to be aimed exclusively at SCSI parallel busses.”…”�”}”(hjvÂ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´MPhjÁubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj´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”auh1jGhj´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´Mfubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´Âh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj¡Âh²hh³j³Âh´Mfubj�)�”}”(hŒscsi_remove_single_device”h]”j“)�”}”(hŒscsi_remove_single_device”h]”hŒscsi_remove_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´MfubjÊ)�”}”(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_remove_single_device”†”asbuh1hhjÞÂubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÞÂubj“)�”}”(hŒhost”h]”hŒhost”…”�”}”(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 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”j1ÃŒmodname”NŒ classname”Njôj÷)�”}”jú]”jÃŒc.scsi_remove_single_device”†”asbuh1hhj(Ãubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjMÃ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”…”�”}”(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_remove_single_device”†”asbuh1hhjpÃubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•Ãh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjpÃubj“)�”}”(hŒid”h]”hŒid”…”�”}”(hj£Ãh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjpÃubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjÚÂ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ú]”jÃŒ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Œ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Éhj¡Âh²hh³j³Âh´Mfubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj�Âh²hh³j³Âh´Mfubah}”(h]”j˜Âah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j³Âh´MfhjšÂ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´MfhjÄh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjšÂh²hh³j³Âh´Mfubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj-Äjäj-Äjå‰jæ‰jç‰uh1jXh²hhj´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ó)�”}”(hj7Äh]”hŒ Parameters”…”�”}”(hj9Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj5Ä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´Mjhj1Äubj7)�”}”(hhh]”(j<)�”}”(hŒ,``uint host`` user-supplied decimal integer ”h]”(jB)�”}”(hŒ ``uint host``”h]”jH)�”}”(hjVÄh]”hŒ uint host”…”�”}”(hjXÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjTÄubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´MghjPÄubj^)�”}”(hhh]”hì)�”}”(hŒuser-supplied decimal integer”h]”hŒuser-supplied decimal integer”…”�”}”(hjoÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jkÄh´MghjlÄubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjPÄubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jkÄh´MghjMÄ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´Mhhj‰Ä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´Mhhj¥Äubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj‰Äubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j¤Äh´MhhjMÄ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´MihjÂÄ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]hjÂÄubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jÝÄh´MihjMÄubj<)�”}”(hŒ+``uint lun`` user-supplied decimal integer ”h]”(jB)�”}”(hŒ ``uint lun``”h]”jH)�”}”(hjÅh]”hŒuint lun”…”�”}”(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´MjhjûÄ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´MjhjÅubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjûÄubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jÅh´MjhjMÄubeh}”(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³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:164: ./drivers/scsi/scsi_proc.c”h´Mlhj1Ä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()”…”�”}”(hjRÅ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´Mlhj1Äubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj´h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒproc_scsi_write (C function)”Œc.proc_scsi_write”hNt”auh1jGhj´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&]”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_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Œfile”h]”hŒfile”…”�”}”(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Œconst char __user *buf”h]”(jj)�”}”(hj’Ph]”hŒconst”…”�”}”(hjCÆh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj?Æubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPÆ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Œ ”…”�”}”(hjlÆ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ÏhjËÅ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”…”�”}”(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Œ loff_t *ppos”h]”(h)�”}”(hhh]”j“)�”}”(hŒloff_t”h]”hŒloff_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% )�”}”(hj( h]”hŒ*”…”�”}”(hj)Çh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjöÆubj“)�”}”(hŒppos”h]”hŒppos”…”�”}”(hj6Ç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´hjyÅh²hh³j¥Åh´M„ubah}”(h]”jtÅah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j¥Åh´M„hjvÅ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ÀhjvÅh²hh³j¥Åh´M„ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjxÇjäjxÇjå‰jæ‰jç‰uh1jXh²hhj´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)�”}”(hjÚÇh]”hŒconst char __user *buf”…”�”}”(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Œbuffer to write”h]”hŒbuffer to write”…”�”}”(hjóÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jïÇh´M†hjðÇubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÔÇubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jïÇh´M†hj˜Çubj<)�”}”(hŒ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‡hj È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]hj È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)�”}”(hjLÈh]”hŒ loff_t *ppos”…”�”}”(hjNÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjJÈ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ˆhjFÈubj^)�”}”(hhh]”hì)�”}”(hŒnot used”h]”hŒnot used”…”�”}”(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³Œ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èhj´h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒproc_scsi_open (C function)”Œc.proc_scsi_open”hNt”auh1jGhj´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‘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_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’hjÉubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjïÈh²hh³jÉh´M ubjÊ)�”}”(hŒ((struct inode *inode, struct file *file)”h]”(jÐ)�”}”(hŒstruct inode *inode”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj0É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”…”�”}”(hjNÉh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjKÉubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jPÉŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jÉsbŒc.proc_scsi_open”†”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Œ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ú]”jjÉŒ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Œfile”h]”hŒfile”…”�”}”(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Œ 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À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 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ó)�”}”(hjEÊh]”hŒ Parameters”…”�”}”(hjGÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjCÊ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)�”}”(hjdÊh]”hŒstruct inode *inode”…”�”}”(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Œnot used”h]”hŒnot used”…”�”}”(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Œ.``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´Mhj—Ê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´Mhj³Êubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj—Êubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j²Êh´Mhj[Êubeh}”(h]”h ]”h"]”h$]”h&]”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Œ(Associates proc_scsi_show with this file”h]”hŒ(Associates proc_scsi_show with this file”…”�”}”(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èhj´h²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_init_procfs (C function)”Œc.scsi_init_procfs”hNt”auh1jGhj´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”…”�”}”(hjZËh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjVËubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjRË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Œ#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²hhj´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”…”�”}”(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Œ no arguments”h]”hŒ no arguments”…”�”}”(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´KhjÛË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_exit_procfs (C function)”Œc.scsi_exit_procfs”hNt”auh1jGhj´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‘hjXÌubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjTÌ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²hhj´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”…”�”}”(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´MAhjÁÌubj^)�”}”(hhh]”hì)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(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´KhjÝÌubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÁÌubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jÜÌh´MAhj¾Ìubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj¢Ìubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhj´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ºhjÍ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©hjÍh²hubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_nl_rcv_msg (C function)”Œc.scsi_nl_rcv_msg”hNt”auh1jGhjÍ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‘hjYÍh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:175: ./drivers/scsi/scsi_netlink.c”h´Kubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjlÍh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjYÍh²hh³jkÍ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’hjzÍubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjYÍh²hh³jkÍ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Œ ”…”�”}”(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Œ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ÉhjYÍh²hh³jkÍh´Kubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjUÍh²hh³jkÍh´Kubah}”(h]”jPÍah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jkÍh´KhjRÍ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ÀhjRÍh²hh³jkÍh´Kubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj5Îjäj5Îjå‰jæ‰jç‰uh1jXh²hhjÍ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”…”�”}”(hjAÎ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´Khj9Î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´KhjXÎubj^)�”}”(hhh]”hì)�”}”(hŒsocket receive buffer”h]”hŒsocket receive buffer”…”�”}”(hjwÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jsÎh´KhjtÎubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjXÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jsÎh´KhjUÎubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj9Î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´Khj9Î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”…”�”}”(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ÅÎ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&]”uh1j6hj9Îubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjÍh²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_netlink_init (C function)”Œc.scsi_netlink_init”hNt”auh1jGhjÍ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”…”�”}”(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´Kkubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÏ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ŒhjÏh²hh³jÏh´KkubjÊ)�”}”(hŒ(void)”h]”jÐ)�”}”(hŒvoid”h]”j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjFÏh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjBÏ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´Kkubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjÏh²hh³jÏh´Kkubah}”(h]”jüÎah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jÏh´KkhjþÎ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”…”�”}”(hjpÏ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´KkhjmÏh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjþÎh²hh³jÏh´Kkubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjˆÏjäjˆÏjå‰jæ‰jç‰uh1jXh²hhjÍ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”…”�”}”(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ÇÏubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj«Ïubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jÆÏh´Kqhj¨Ï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_netlink_exit (C function)”Œc.scsi_netlink_exit”hNt”auh1jGhjÍ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”…”�”}”(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´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_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ŒhjÐh²hh³jÐh´K„ubjÊ)�”}”(hŒ(void)”h]”jÐ)�”}”(hŒvoid”h]”j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjHÐh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjDÐ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´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ŒHCalled by SCSI subsystem to disable the SCSI transport netlink interface”h]”hŒHCalled by SCSI subsystem to disable the SCSI transport netlink interface”…”�”}”(hjrÐ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„hjoÐ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Œ'**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”…”�”}”(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ÉÐ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´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”…”�”}”(hjÿÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjüÐ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.”…”�”}”(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_sanitize_inquiry_string (C function)”Œc.scsi_sanitize_inquiry_string”hNt”auh1jGhjüÐ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&]”uh1jòhj6ÚubhŒ, ”…”�”}”(hj6Úh²hh³Nh´Nubjó)�”}”(hŒ **channel**”h]”hŒchannel”…”�”}”(hjPÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj6ÚubhŒ, and ”…”�”}”(hj6Úh²hh³Nh´Nubjó)�”}”(hŒ**id**”h]”hŒid”…”�”}”(hjbÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj6ÚubhŒ>. Scan at least LUN 0, and possibly all LUNs on the target id.”…”�”}”(hj6Ú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-hj2Ú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´M0hj2Úubeh}”(h]”h ]”h"]”h$]”h&]”uh1jsh³jzÚ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_scan_host (C function)”Œc.scsi_scan_host”hNt”auh1jGhjüÐ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’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_scan_host”†”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åÚ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”…”�”}”(hjpÛ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´MhjmÛ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Œ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”…”�”}”(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Œ **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´MhjŒÛubhì)�”}”(hŒ&Should be called after scsi_add_host()”h]”hŒ&Should be called after scsi_add_host()”…”�”}”(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ŒÛubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjüÐ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.”…”�”}”(hj1Ü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”…”�”}”(hjJÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjGÜh²hh³hÊh´KÌubhì)�”}”(hŒSCSI sysfs interface routines.”h]”hŒSCSI sysfs interface routines.”…”�”}”(hjXÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KÎhjGÜh²hubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_remove_device (C function)”Œc.scsi_remove_device”hNt”auh1jGhjGÜ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Œ ”…”�”}”(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_remove_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”…”�”}”(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´hjwÜh²hh³j�Üh´Mûubah}”(h]”jrÜah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j�Üh´MûhjtÜ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ÀhjtÜh²hh³j�Üh´Mûubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjWÝjäjWÝjå‰jæ‰jç‰uh1jXh²hhjGÜh³Nh´Nubjé)�”}”(hŒH**Parameters** ``struct scsi_device *sdev`` scsi_device to unregister”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjaÝh]”hŒ Parameters”…”�”}”(hjcÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj_Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/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´MhjzÝ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]hjzÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j•Ýh´MhjwÝubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj[Ýubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjGÜh²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_remove_target (C function)”Œc.scsi_remove_target”hNt”auh1jGhjGÜ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”…”�”}”(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_target”h]”j“)�”}”(hŒscsi_remove_target”h]”hŒscsi_remove_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ŒhjÖÝh²hh³jèÝ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”…”�”}”(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_remove_target”†”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Œdev”h]”hŒdev”…”�”}”(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´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Œ*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ÀhjÏÝh²hh³jèÝh´M(ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj²Þjäj²Þjå‰jæ‰jç‰uh1jXh²hhjGÜ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)�”}”(hjÛÞh]”hŒstruct device *dev”…”�”}”(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´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³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Œ**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èhjGÜ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”…”�”}”(hjMßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjJß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ÖhjJßh²hubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_remove_host (C function)”Œc.scsi_remove_host”hNt”auh1jGhjJß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Œ ”…”�”}”(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_remove_host”†”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´hjzßh²hh³j�ßh´K£ubah}”(h]”jußah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j�ßh´K£hjwßh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒremove a scsi host”h]”hŒremove a scsi host”…”�”}”(hjBà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Àhjwßh²hh³j�ßh´K£ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjZàjäjZàjå‰jæ‰jç‰uh1jXh²hhjJßh³Nh´Nubjé)�”}”(hŒP**Parameters** ``struct Scsi_Host *shost`` a pointer to a scsi host to remove”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjdàh]”hŒ Parameters”…”�”}”(hjfàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjbàubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ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©hjzàubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj^àubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjJß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”auh1jGhjJß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”…”�”}”(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_add_host_with_dma”h]”j“)�”}”(hŒscsi_add_host_with_dma”h]”hŒscsi_add_host_with_dma”…”�”}”(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Œ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”…”�”}”(hj8áh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj5á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_host_with_dma”†”asbuh1hhjáubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXáh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjáubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjfáh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjáubj“)�”}”(hŒshost”h]”hŒshost”…”�”}”(hjsá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ú]”jTáŒ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Œ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ÏhjáubjÐ)�”}”(hŒstruct device *dma_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ú]”jTáŒc.scsi_add_host_with_dma”†”asbuh1hhjøáubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8âh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjøáubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjFâh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjøáubj“)�”}”(hŒdma_dev”h]”hŒdma_dev”…”�”}”(hjSâ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Œ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Ðhjzâ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²hhjJß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”…”�”}”(hj×âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÓâh´KÑhjÔâubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj¸âubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jÓâh´KÑhjµâubj<)�”}”(hŒ:``struct device *dev`` a struct device of type scsi class ”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³Œ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”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j ãh´KÒhj ãubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjñâubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j ãh´KÒhjµâubj<)�”}”(hŒ3``struct device *dma_dev`` dma device for the host ”h]”(jB)�”}”(hŒ``struct device *dma_dev``”h]”jH)�”}”(hj0ãh]”hŒstruct device *dma_dev”…”�”}”(hj2ã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”…”�”}”(hjIãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jEãh´KÓhjFãubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj*ãubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jEãh´KÓhjµâubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hj™âubhì)�”}”(hŒ**Note**”h]”jó)�”}”(hjkãh]”hŒNote”…”�”}”(hjmãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjiã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èhjJßh²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_host_alloc (C function)”Œc.scsi_host_alloc”hNt”auh1jGhjJß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”…”�”}”(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_alloc”sbŒc.scsi_host_alloc”†”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Œ*”…”�”}”(hj8äh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjæãh²hh³j÷ãh´MŒubj�)�”}”(hŒscsi_host_alloc”h]”j“)�”}”(hj'äh]”hŒscsi_host_alloc”…”�”}”(hjIäh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjEäubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjæãh²hh³j÷ã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”…”�”}”(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`ä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Œ*”…”�”}”(hjÉä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”…”�”}”(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Œprivsize”h]”hŒprivsize”…”�”}”(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Œ®ister a scsi host adapter instance.”h]”hŒ®ister a scsi host adapter instance.”…”�”}”(hj5å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Œhj2å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ãjMåjäjMåjå‰jæ‰jç‰uh1jXh²hhjJß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ó)�”}”(hjWåh]”hŒ Parameters”…”�”}”(hjYåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjUå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�hjQå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)�”}”(hjvåh]”hŒ$const struct scsi_host_template *sht”…”�”}”(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 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]hjpåubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j‹åh´M�hjmå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”…”�”}”(hjÈåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÄåh´MŽhjÅåubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj©åubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jÄåh´MŽhjmåubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjQå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´M�hjQå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.”…”�”}”(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&]”uh1jsh³jæh´M�hjQå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”…”�”}”(hj2æ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&]”uh1j6hjQåubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjJßh²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_host_lookup (C function)”Œc.scsi_host_lookup”hNt”auh1jGhjJß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”…”�”}”(hjsæh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjoæ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{hjoæ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”†”asbuh1hhjoæh²hh³j€æh´M>ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³æh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjoæh²hh³j€æh´M>ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjÁæh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjoæ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’hjÎæubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjoæh²hh³j€æh´M>ubjÊ)�”}”(hŒ(unsigned int hostnum)”h]”jÐ)�”}”(hŒunsigned int hostnum”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Œhostnum”h]”hŒhostnum”…”�”}”(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Éhjoæh²hh³j€æh´M>ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjkæh²hh³j€æh´M>ubah}”(h]”jfæah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j€æh´M>hjhæ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”…”�”}”(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çh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjhæh²hh³j€æh´M>ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjgçjäjgçjå‰jæ‰jç‰uh1jXh²hhjJß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ó)�”}”(hjqçh]”hŒ Parameters”…”�”}”(hjsçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjoçubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´MBhjkç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&]”uh1j6hjkç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´MAhjkç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:”…”�”}”(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´MDhjäçubj^)�”}”(hhh]”(hì)�”}”(hŒ'A pointer to located Scsi_Host or NULL.”h]”hŒ'A pointer to located Scsi_Host or NULL.”…”�”}”(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´MAhj÷ç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().”…”�”}”(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´MChj÷çubeh}”(h]”h ]”h"]”h$]”h&]”uh1j]hjäçubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jöçh´MDhjáçubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjkçubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjJßh²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_host_get (C function)”Œc.scsi_host_get”hNt”auh1jGhjJß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”…”�”}”(hjJèh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjFèh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´MXubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXèh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjFèh²hh³jWèh´MXubh)�”}”(hhh]”j“)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hjièh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjfèubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jkèŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j Œ scsi_host_get”sbŒc.scsi_host_get”†”asbuh1hhjFèh²hh³jWèh´MXubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠèh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjFèh²hh³jWèh´MXubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj˜èh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjFèh²hh³jWèh´MXubj�)�”}”(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ŒhjFèh²hh³jWèh´MXubjÊ)�”}”(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…èŒc.scsi_host_get”†”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³jWèh´MXubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjBèh²hh³jWèh´MXubah}”(h]”j=èah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jWèh´MXhj?èh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒinc a Scsi_Host ref count”h]”hŒinc 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´MXhjBéh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj?èh²hh³jWèh´MXubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj]éjäj]éjå‰jæ‰jç‰uh1jXh²hhjJßh³Nh´Nubjé)�”}”(hŒJ**Parameters** ``struct Scsi_Host *shost`` Pointer to Scsi_Host to inc.”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³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´M\hjaé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´MYhjœé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&]”uh1j6hjaéubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjJßh²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_host_busy (C function)”Œc.scsi_host_busy”hNt”auh1jGhjJß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”…”�”}”(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´Mpubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïéh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÜéh²hh³jîéh´Mpubj�)�”}”(hŒscsi_host_busy”h]”j“)�”}”(hŒscsi_host_busy”h]”hŒscsi_host_busy”…”�”}”(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´MpubjÊ)�”}”(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’hj8ê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”†”asbuh1hhjêubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[êh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjêubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjiêh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjêubj“)�”}”(hŒshost”h]”hŒshost”…”�”}”(hjvê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´Mpubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjØéh²hh³jîéh´Mpubah}”(h]”jÓéah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jîéh´MphjÕé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´Mphj�êh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjÕéh²hh³jîéh´Mpubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj¸êjäj¸êjå‰jæ‰jç‰uh1jXh²hhjJß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´Mthj¼êubj7)�”}”(hhh]”j<)�”}”(hŒ0``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´MvhjÛê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³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´Mqhj÷êubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÛêubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jöêh´MvhjØêubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj¼êubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjJßh²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_host_put (C function)”Œc.scsi_host_put”hNt”auh1jGhjJß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‘hj7ëh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´M~ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJëh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj7ëh²hh³jIëh´M~ubj�)�”}”(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’hjXëubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj7ëh²hh³jIëh´M~ubjÊ)�”}”(hŒ(struct Scsi_Host *shost)”h]”jÐ)�”}”(hŒstruct Scsi_Host *shost”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjxëh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjtëubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…ëh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjtë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”†”asbuh1hhjtëubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶ëh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjtëubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjÄëh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjtëubj“)�”}”(hŒshost”h]”hŒshost”…”�”}”(hjÑëh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjtëubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjpëubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhj7ëh²hh³jIëh´M~ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj3ëh²hh³jIëh´M~ubah}”(h]”j.ëah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jIëh´M~hj0ëh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒdec a Scsi_Host ref count”h]”hŒdec 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´M~hjøëh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj0ëh²hh³jIëh´M~ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjìjäjìjå‰jæ‰jç‰uh1jXh²hhjJß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„hj6ìubj^)�”}”(hhh]”hì)�”}”(hŒPointer to Scsi_Host to dec.”h]”hŒPointer to Scsi_Host to dec.”…”�”}”(hjUì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´MhjRìubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj6ìubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jQìh´M„hj3ìubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjìubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjJßh²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_queue_work (C function)”Œc.scsi_queue_work”hNt”auh1jGhjJß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&]”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_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Œ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 work_struct *work”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Œ work_struct”h]”hŒ work_struct”…”�”}”(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_queue_work”†”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Œwork”h]”hŒwork”…”�”}”(hjœí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Œ&Queue work to the Scsi_Host workqueue.”h]”hŒ&Queue work to the Scsi_Host 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Àhj‹ìh²hh³j¤ìh´M™ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjÞíjäjÞíjå‰jæ‰jç‰uh1jXh²hhjJß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ó)�”}”(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Œ:``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”…”�”}”(hjBî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.”…”�”}”(hjYîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jUîh´M›hjVîubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj:îubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jUîh´M›hjþíubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjâí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³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´M�hjâí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&]”uh1j6hjâíubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjJßh²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_flush_work (C function)”Œc.scsi_flush_work”hNt”auh1jGhjJß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”…”�”}”(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_flush_work”h]”j“)�”}”(hŒscsi_flush_work”h]”hŒscsi_flush_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Œ(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Œ ”…”�”}”(hj5ïh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj$ïubh)�”}”(hhh]”j“)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(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.scsi_flush_work”†”asbuh1hhj$ïubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfïh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj$ïubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjtï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´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Œ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Àhjàîh²hh³jùîh´M²ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjÃïjäjÃïjå‰jæ‰jç‰uh1jXh²hhjJßh³Nh´Nubjé)�”}”(hŒC**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´M¶hjÇïubj7)�”}”(hhh]”j<)�”}”(hŒ1``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³Œ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èhjJß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”auh1jGhjJß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”…”�”}”(hjFðh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjBðh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:216: ./drivers/scsi/hosts.c”h´MÐubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUðh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjBðh²hh³jTðh´MÐubj�)�”}”(hŒscsi_host_complete_all_commands”h]”j“)�”}”(hŒscsi_host_complete_all_commands”h]”hŒscsi_host_complete_all_commands”…”�”}”(hjgðh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjcðubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjBðh²hh³jTð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 jið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Œ*”…”�”}”(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Œ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Œ ”…”�”}”(hjñ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’hjñ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Œ ”…”�”}”(hj1ñ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ÉhjBðh²hh³jTðh´MÐubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj>ðh²hh³jTðh´MÐubah}”(h]”j9ðah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jTðh´MÐhj;ðh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒTerminate all running commands”h]”hŒTerminate all running commands”…”�”}”(hjiñ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Ðhjfñ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ãj�ñjäj�ñjå‰jæ‰jç‰uh1jXh²hhjJß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)�”}”(hjãñh]”hŒenum scsi_host_status status”…”�”}”(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Œ,Status to be set for the terminated commands”h]”hŒ,Status to be set for the terminated commands”…”�”}”(hjüñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³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³Œ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.”…”�”}”(hj4ò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èhjJß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”auh1jGhjJß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”…”�”}”(hjcò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Œ ”…”�”}”(hjròh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj_òh²hh³jqò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³jqò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Œ ”…”�”}”(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Œ$bool (*fn)(struct scsi_cmnd*, void*)”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% )�”}”(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”…”�”}”(hjGóh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjóubj% )�”}”(hjjh]”hŒ)”…”�”}”(hjUóh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjóubj% )�”}”(hjAh]”hŒ(”…”�”}”(hjbóh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjóubjj)�”}”(hjmh]”hŒstruct”…”�”}”(hjoó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.scsi_host_busy_iter”†”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Œ*”…”�”}”(hjáó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˜òubjÐ)�”}”(hŒ void *priv”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Œpriv”h]”hŒpriv”…”�”}”(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³jqòh´Mïubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj[òh²hh³jqòh´Mïubah}”(h]”jVòah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jqòh´MïhjXòh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒIterate over all busy commands”h]”hŒIterate over all busy commands”…”�”}”(hjYô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ïhjVôh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjXòh²hh³jqòh´Mïubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjqôjäjqôjå‰jæ‰jç‰uh1jXh²hhjJß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òhjyô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óhjuô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ñhjÍôubj^)�”}”(hhh]”hì)�”}”(hŒ%Function to call on each busy command”h]”hŒ%Function to call on each busy command”…”�”}”(hjìôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³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 *priv`` Data pointer passed to **fn** ”h]”(jB)�”}”(hŒ``void *priv``”h]”jH)�”}”(hj õh]”hŒ void *priv”…”�”}”(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Œ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]hjõubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j!õh´Mòhj‘ôubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjuôubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjUõh]”hŒ Description”…”�”}”(hjWõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjSõ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ôhjuô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”…”�”}”(hjkõ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óhjuôubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjJß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Œ ”…”�”}”(hjÏõh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj½õh²hh³jÎõh´K5ubj’)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjÝõh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj½õh²hh³jÎõh´K5ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëõh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj½õh²hh³jÎõh´K5ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjùõh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj½õh²hh³jÎõh´K5ubj�)�”}”(hŒscsi_device_type”h]”j“)�”}”(hŒscsi_device_type”h]”hŒscsi_device_type”…”�”}”(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´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Œ ”…”�”}”(hj4öh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj"öubj“)�”}”(hŒtype”h]”hŒtype”…”�”}”(hjBö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´K5ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj¹õh²hh³jÎõh´K5ubah}”(h]”j´õah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jÎõh´K5hj¶õh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ-Return 17-char string indicating device type.”h]”hŒ-Return 17-char string indicating device type.”…”�”}”(hjlö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´K5hjiöh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj¶õh²hh³jÎõ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”…”�”}”(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´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”…”�”}”(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 Œscsilun_to_int”sbŒc.scsilun_to_int”†”asbuh1hhj÷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{hj÷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Œhj÷h²hh³j+÷h´KoubjÊ)�”}”(hŒ(struct scsi_lun *scsilun)”h]”jÐ)�”}”(hŒstruct scsi_lun *scsilun”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_lun”h]”hŒscsi_lun”…”�”}”(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.scsilun_to_int”†”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Œscsilun”h]”hŒscsilun”…”�”}”(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´Koubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjÿöh²hh³j+÷h´Koubah}”(h]”júöah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j+÷h´Kohjüöh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒconvert a scsi_lun to an int”h]”hŒconvert a scsi_lun to an int”…”�”}”(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´Kohj×÷h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjüö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ó)�”}”(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´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.”…”�”}”(hj4øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j0øh´Kphj1øubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjøubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j0øh´Kphjø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³Œ[/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 ”…”�”}”(hjpøh²hh³Nh´Nubjó)�”}”(hŒ **scsilun**”h]”hŒscsilun”…”�”}”(hjxøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjpø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.”…”�”}”(hjpø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´Krhjlø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”…”�”}”(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Œ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Œhjù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”…”�”}”(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.int_to_scsilun”†”asbuh1hhj?ùubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfùh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj?ùubj“)�”}”(hŒlun”h]”hŒlun”…”�”}”(hjtù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ú]”jbùŒc.int_to_scsilun”†”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;ù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Œreverts an int into a scsi_lun”h]”hŒreverts an int into a scsi_lun”…”�”}”(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é)�”}”(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ó)�”}”(hj0úh]”hŒ Parameters”…”�”}”(hj2ú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)�”}”(hjOúh]”hŒu64 lun”…”�”}”(hjQúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjMúubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´K‘hjIúubj^)�”}”(hhh]”hì)�”}”(hŒinteger to be reverted”h]”hŒinteger to be reverted”…”�”}”(hjhúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jdúh´K‘hjeúubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjIúubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jdúh´K‘hjFú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’hjFú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.”…”�”}”(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*ú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”…”�”}”(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*ú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”…”�”}”(hjCû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Œ ”…”�”}”(hjQûh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj?ûh²hh³jPûh´K­ubj�)�”}”(hŒscsi_normalize_sense”h]”j“)�”}”(hŒscsi_normalize_sense”h]”hŒscsi_normalize_sense”…”�”}”(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Œ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 jeû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Œ*”…”�”}”(hjËûh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj{ûubj“)�”}”(hŒ sense_buffer”h]”hŒ sense_buffer”…”�”}”(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 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Ïhjwû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Œ ”…”�”}”(hj3üh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj"üubh)�”}”(hhh]”j“)�”}”(hŒscsi_sense_hdr”h]”hŒscsi_sense_hdr”…”�”}”(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¹ûŒc.scsi_normalize_sense”†”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Œ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Ï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]”j6ûah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jPûh´K­hj8û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Àhj8ûh²hh³jPû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ó)�”}”(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ŒO``const u8 *sense_buffer`` byte array containing sense data returned by device ”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°hjâüubj^)�”}”(hhh]”hì)�”}”(hŒ3byte array containing sense data returned by device”h]”hŒ3byte array containing sense data returned by 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Œ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³j6ýh´K±hj7ýubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjýubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j6ýh´K±hjßü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)�”}”(hjZýh]”hŒstruct scsi_sense_hdr *sshdr”…”�”}”(hj\ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjXýubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´K³hjTý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.”…”�”}”(hjsý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²hjpýubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjTýubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³joýh´K³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ò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:”…”�”}”(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Œ7true if valid sense data information found, else false;”h]”hŒ7true if valid sense data information found, else false;”…”�”}”(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»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”…”�”}”(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 Œscsi_sense_desc_find”sbŒc.scsi_sense_desc_find”†”asbuh1hhj*þh²hh³j;þh´Kðubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnþ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“)�”}”(hjkþ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”…”�”}”(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_sense_desc_find”†”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Œ sense_buffer”h]”hŒ sense_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 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”…”�”}”(hj4ÿ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”…”�”}”(hjMÿh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjIÿubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[ÿh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjIÿubj“)�”}”(hŒ desc_type”h]”hŒ desc_type”…”�”}”(hjiÿh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjIÿ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ñhjÎÿubj^)�”}”(hhh]”hì)�”}”(hŒ*byte array of descriptor format sense data”h]”hŒ*byte array of descriptor format sense data”…”�”}”(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Œ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”…”�”}”(hjh²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òhjubj^)�”}”(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]hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j"h´KòhjËÿubj<)�”}”(hŒK``int desc_type`` value of descriptor type to find (e.g. 0 -> information) ”h]”(jB)�”}”(hŒ``int desc_type``”h]”jH)�”}”(hjFh]”hŒ int desc_type”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjDubah}”(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ô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ò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”…”�”}”(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ø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_set_sense_buffer (C function)”Œc.scsi_set_sense_buffer”hNt”auh1jGhj‰õh²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ@void scsi_set_sense_buffer (int desc, u8 *buf, u8 key, u16 code)”h]”jd)�”}”(hŒ?void scsi_set_sense_buffer(int desc, u8 *buf, u8 key, u16 code)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´Mubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjh²hh³jh´Mubj�)�”}”(hŒscsi_set_sense_buffer”h]”j“)�”}”(hŒscsi_set_sense_buffer”h]”hŒscsi_set_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Œhjh²hh³jh´MubjÊ)�”}”(hŒ%(int desc, u8 *buf, u8 key, u16 code)”h]”(jÐ)�”}”(hŒint desc”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjDubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjDubj“)�”}”(hŒdesc”h]”hŒdesc”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjDubeh}”(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_set_sense_buffer”†”asbuh1hhjyubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjyubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjyubj“)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjyubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj@ubjÐ)�”}”(hŒu8 key”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_set_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”…”�”}”(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Œu16 code”h]”(h)�”}”(hhh]”j“)�”}”(hŒu16”h]”hŒu16”…”�”}”(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œŒc.scsi_set_sense_buffer”†”asbuh1hhjubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjubj“)�”}”(hŒcode”h]”hŒcode”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj@ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjh²hh³jh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjh²hh³jh´Mubah}”(h]”jþah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jh´Mhjh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒbuild sense data in a buffer”h]”hŒbuild sense data in a buffer”…”�”}”(hjuh²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´Mhjrh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjh²hh³jh´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 ``u16 code`` Additional sense code and sense code qualifier”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(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´Mhj‘ubj7)�”}”(hhh]”(j<)�”}”(hŒM``int desc`` Sense format (non-zero == descriptor format, 0 == fixed format) ”h]”(jB)�”}”(hŒ ``int desc``”h]”jH)�”}”(hj¶h]”hŒint desc”…”�”}”(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 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]hj°ubeh}”(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³jh´Mhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjêubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jh´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”…”�”}”(hjBh²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Œ;``u16 code`` Additional sense code and sense code qualifier”h]”(jB)�”}”(hŒ ``u16 code``”h]”jH)�”}”(hjbh]”hŒu16 code”…”�”}”(hjdh²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Œ.Additional sense code and sense code qualifier”h]”hŒ.Additional sense code and sense code qualifier”…”�”}”(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´Mhjxubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jwh´Mhj­ubeh}”(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_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´M5ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj¸h²hh³jÊh´M5ubj�)�”}”(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´M5ubjÊ)�”}”(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Œ*”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjõubj“)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hj7h²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”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjLubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjLubj“)�”}”(hŒbuf_len”h]”hŒbuf_len”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjLubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjñubjÐ)�”}”(hŒu64 info”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_set_sense_information”†”asbuh1hhj�ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj�ubj“)�”}”(hŒinfo”h]”hŒinfo”…”�”}”(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´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Œ: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´M5hjÛh²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** ``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ó)�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²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´M9hjúubj7)�”}”(hhh]”(j<)�”}”(hŒ&``u8 *buf`` Where to build sense data ”h]”(jB)�”}”(hŒ ``u8 *buf``”h]”jH)�”}”(hjh]”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´M7hjubj^)�”}”(hhh]”hì)�”}”(hŒWhere to build sense data”h]”hŒWhere to build sense data”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j4h´M7hj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j4h´M7hjubj<)�”}”(hŒ``int buf_len`` buffer length ”h]”(jB)�”}”(hŒ``int buf_len``”h]”jH)�”}”(hjXh]”hŒ int buf_len”…”�”}”(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´M8hjRubj^)�”}”(hhh]”hì)�”}”(hŒ buffer length”h]”hŒ buffer length”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jmh´M8hjnubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjRubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jmh´M8hjubj<)�”}”(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&]”uh1jGhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´M9hj‹ubj^)�”}”(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´M9hj§ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j¦h´M9hjubeh}”(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´M;hjú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´M:hjå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´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_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‘hj8h²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´Meubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj8h²hh³jJh´Meubj�)�”}”(hŒscsi_set_sense_field_pointer”h]”j“)�”}”(hŒscsi_set_sense_field_pointer”h]”hŒscsi_set_sense_field_pointer”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjYubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj8h²hh³jJh´MeubjÊ)�”}”(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”…”�”}”(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 j_sbŒc.scsi_set_sense_field_pointer”†”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Œbuf”h]”hŒbuf”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjuubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjqubjÐ)�”}”(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ÏhjqubjÐ)�”}”(hŒu16 fp”h]”(h)�”}”(hhh]”j“)�”}”(hŒu16”h]”hŒu16”…”�”}”(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˜Œc.scsi_set_sense_field_pointer”†”asbuh1hhjubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjubj“)�”}”(hŒfp”h]”hŒfp”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjqubjÐ)�”}”(hŒu8 bp”h]”(h)�”}”(hhh]”j“)�”}”(hŒu8”h]”hŒu8”…”�”}”(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.scsi_set_sense_field_pointer”†”asbuh1hhjIubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjIubj“)�”}”(hŒbp”h]”hŒbp”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjIubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjqubjÐ)�”}”(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Ïhjqubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhj8h²hh³jJh´Meubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj4h²hh³jJh´Meubah}”(h]”j/ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jJh´Mehj1h²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´Mehj×h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj1h²hh³jJh´Meubeh}”(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´Mihjö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´Mghjubj^)�”}”(hhh]”hì)�”}”(hŒWhere to build sense data”h]”hŒWhere to build sense data”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j0h´Mghj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j0h´Mghjubj<)�”}”(hŒ``int buf_len`` buffer length ”h]”(jB)�”}”(hŒ``int buf_len``”h]”jH)�”}”(hjTh]”hŒ int buf_len”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjRubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´MhhjNubj^)�”}”(hhh]”hì)�”}”(hŒ buffer length”h]”hŒ buffer length”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jih´Mhhjjubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjNubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jih´Mhhjubj<)�”}”(hŒ#``u16 fp`` field pointer to be set ”h]”(jB)�”}”(hŒ ``u16 fp``”h]”jH)�”}”(hj�h]”hŒu16 fp”…”�”}”(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´Mihj‡ubj^)�”}”(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´Mihj£ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j¢h´Mihjubj<)�”}”(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´MjhjÀ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´MjhjÜubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÀubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jÛh´Mjhjubj<)�”}”(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´Mkhjùubj^)�”}”(hhh]”hì)�”}”(hŒcommand/data bit”h]”hŒcommand/data bit”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j h´Mkhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjùubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j h´Mkhjubeh}”(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òhj8 ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:224: ./drivers/scsi/scsi_common.c”h´Mmhjö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:”…”�”}”(hjW 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´MlhjS 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”…”�”}”(hji 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´Mmhjf ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjS ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³je h´MlhjP 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”…”�”}”(hjJ h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjF ubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjB 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”…”�”}”(hjt 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õhjq 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** ``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Œ ”…”�”}”(hjN h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj; h²hh³jM h´Mubj�)�”}”(hŒfc_host_post_fc_event”h]”j“)�”}”(hŒfc_host_post_fc_event”h]”hŒfc_host_post_fc_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Œhj; h²hh³jM 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”…”�”}”(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_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 jb sbŒc.fc_host_post_fc_event”†”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Œshost”h]”hŒshost”…”�”}”(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Œ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Ïhjt ubjÐ)�”}”(hŒ"enum fc_host_event_code event_code”h]”(jj)�”}”(hjf9h]”hŒenum”…”�”}”(hj6 h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj2 ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjC h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj2 ubh)�”}”(hhh]”j“)�”}”(hŒfc_host_event_code”h]”hŒfc_host_event_code”…”�”}”(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.fc_host_post_fc_event”†”asbuh1hhj2 ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjr h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj2 ubj“)�”}”(hŒ event_code”h]”hŒ event_code”…”�”}”(hj€ h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj2 ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjt 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Ïhjt 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Ïhjt 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Œ ”…”�”}”(hjD h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj ubj“)�”}”(hŒ vendor_id”h]”hŒ vendor_id”…”�”}”(hjR 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³jM h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj7 h²hh³jM h´Mubah}”(h]”j2 ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jM h´Mhj4 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.”…”�”}”(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´Mhjy h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj4 h²hh³jM 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()”…”�”}”(hjh²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”…”�”}”(hj1h²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”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jDh´MhjEubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jDh´Mhj´ ubj<)�”}”(hŒ1``u32 data_len`` amount, in bytes, of event data ”h]”(jB)�”}”(hŒ``u32 data_len``”h]”jH)�”}”(hjhh]”hŒ u32 data_len”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjfubah}”(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 hjbubj^)�”}”(hhh]”hì)�”}”(hŒamount, in bytes, of event data”h]”hŒamount, in bytes, of 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]hjbubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j}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ò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´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_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”…”�”}”(hjch²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´MRubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj_h²hh³jqh´MRubj�)�”}”(hŒfc_host_post_event”h]”j“)�”}”(hŒfc_host_post_event”h]”hŒfc_host_post_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Œhj_h²hh³jqh´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 j†sbŒ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’hjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jŒmodname”NŒ classname”Njôj÷)�”}”jú]”jÚŒc.fc_host_post_event”†”asbuh1hhjubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjubj“)�”}”(hŒ event_number”h]”hŒ event_number”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj˜ubjÐ)�”}”(hŒ"enum fc_host_event_code event_code”h]”(jj)�”}”(hjf9h]”hŒenum”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjVubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjVubh)�”}”(hhh]”j“)�”}”(hŒfc_host_event_code”h]”hŒfc_host_event_code”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjuubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jzŒmodname”NŒ classname”Njôj÷)�”}”jú]”jÚŒc.fc_host_post_event”†”asbuh1hhjVubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjVubj“)�”}”(hŒ event_code”h]”hŒ event_code”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjVubeh}”(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Éhj_h²hh³jqh´MRubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj[h²hh³jqh´MRubah}”(h]”jVah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jqh´MRhjXh²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´MRhjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjXh²hh³jqh´MRubeh}”(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 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ó)�”}”(hj8h]”hŒ Parameters”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj6ubah}”(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´MVhj2ubj7)�”}”(hhh]”(j<)�”}”(hŒ7``struct Scsi_Host *shost`` host the event occurred on ”h]”(jB)�”}”(hŒ``struct Scsi_Host *shost``”h]”jH)�”}”(hjWh]”hŒstruct Scsi_Host *shost”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjUubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´MShjQubj^)�”}”(hhh]”hì)�”}”(hŒhost the event occurred on”h]”hŒhost the event occurred on”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jlh´MShjmubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjQubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jlh´MShjNubj<)�”}”(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´MThjŠ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´MThj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j¥h´MThjNubj<)�”}”(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´MUhjNubj<)�”}”(hŒ=``u32 event_data`` 32bits of data for the event being posted ”h]”(jB)�”}”(hŒ``u32 event_data``”h]”jH)�”}”(hjh]”hŒu32 event_data”…”�”}”(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´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´MVhjNubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hj2ubhì)�”}”(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´MXhj2ubjt)�”}”(hŒ0This routine assumes no locks are held on entry.”h]”hì)�”}”(hjUh]”hŒ0This routine assumes no locks are held on entry.”…”�”}”(hjWh²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´MXhjSubah}”(h]”h ]”h"]”h$]”h&]”uh1jsh³jdh´MXhj2ubeh}”(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”…”�”}”(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´Mfubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj‡h²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Œhj‡h²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Œ ”…”�”}”(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Œ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”†”asbuh1hhj6ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj6ubj“)�”}”(hŒ event_number”h]”hŒ event_number”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj6ubeh}”(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_vendor_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”…”�”}”(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_vendor_event”†”asbuh1hhjubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjubj“)�”}”(hŒ vendor_id”h]”hŒ vendor_id”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjÀubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhj‡h²hh³j™h´Mfubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjƒh²hh³j™h´Mfubah}”(h]”j~ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j™h´Mfhj€h²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”…”�”}”(hjeh²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´Mfhjbh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj€h²hh³j™h´Mfubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj}jäj}jå‰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ó)�”}”(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´Mjhj�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´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´Mjhjubj^)�”}”(hhh]”hì)�”}”(hŒ'amount, in bytes, of vendor unique data”h]”hŒ'amount, in bytes, of vendor unique data”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j-h´Mjhj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j-h´Mjhj�ubj<)�”}”(hŒ2``char * data_buf`` pointer to vendor unique data ”h]”(jB)�”}”(hŒ``char * data_buf``”h]”jH)�”}”(hjQh]”hŒchar * data_buf”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjOubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´MkhjKubj^)�”}”(hhh]”hì)�”}”(hŒpointer to vendor unique data”h]”hŒpointer to vendor unique data”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jfh´Mkhjgubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjKubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jfh´Mkhj�ubj<)�”}”(hŒ``u64 vendor_id`` 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´Mlhj„ubj^)�”}”(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]hj„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jŸh´Mlhj�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´Mnhj�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´MnhjÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jsh³jìh´Mnhj�ubeh}”(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”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjh²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{hjh²hh³j h´M{ubh)�”}”(hhh]”j“)�”}”(hŒfc_rport”h]”hŒfc_rport”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj/ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j4Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j Œfc_find_rport_by_wwpn”sbŒc.fc_find_rport_by_wwpn”†”asbuh1hhjh²hh³j h´M{ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjh²hh³j h´M{ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjh²hh³j h´M{ubj�)�”}”(hŒfc_find_rport_by_wwpn”h]”j“)�”}”(hjPh]”hŒfc_find_rport_by_wwpn”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjnubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjh²hh³j h´M{ubjÊ)�”}”(hŒ#(struct Scsi_Host *shost, u64 wwpn)”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ú]”jNŒ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% )�”}”(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Œu64 wwpn”h]”(h)�”}”(hhh]”j“)�”}”(hŒu64”h]”hŒu64”…”�”}”(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ú]”jNŒc.fc_find_rport_by_wwpn”†”asbuh1hhjùubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjùubj“)�”}”(hŒwwpn”h]”hŒwwpn”…”�”}”(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Éhjh²hh³j h´M{ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj h²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Œ*find the fc_rport pointer for a given wwpn”h]”hŒ*find the fc_rport pointer for a given wwpn”…”�”}”(hjVh²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{hjSh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjh²hh³j h´M{ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjnjäjnjå‰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ó)�”}”(hjxh]”hŒ Parameters”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjvubah}”(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´Mhjrubj7)�”}”(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|hjŽubj<)�”}”(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}hjŽubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjrubhì)�”}”(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´Mhjrubjt)�”}”(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´Mhj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jsh³j2h´Mhjrubeh}”(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”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjUh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´Myubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjUh²hh³jgh´Myubj�)�”}”(hŒfc_host_fpin_rcv”h]”j“)�”}”(hŒfc_host_fpin_rcv”h]”hŒfc_host_fpin_rcv”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjvubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjUh²hh³jgh´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 j|sbŒ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ÏhjŽubjÐ)�”}”(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’hjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j Œmodname”NŒ classname”Njôj÷)�”}”jú]”jÐŒc.fc_host_fpin_rcv”†”asbuh1hhjubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjubj“)�”}”(hŒfpin_len”h]”hŒfpin_len”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjŽubjÐ)�”}”(hŒchar *fpin_buf”h]”(j’)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjLubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjLubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjLubj“)�”}”(hŒfpin_buf”h]”hŒfpin_buf”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjLubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjŽubjÐ)�”}”(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”†”asbuh1hhjŽubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjŽubj“)�”}”(hŒevent_acknowledge”h]”hŒevent_acknowledge”…”�”}”(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ÉhjUh²hh³jgh´Myubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjQh²hh³jgh´Myubah}”(h]”jLah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jgh´MyhjNh²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ÀhjNh²hh³jgh´Myubeh}”(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 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”…”�”}”(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}hjubj7)�”}”(hhh]”(j<)�”}”(hŒ:``struct Scsi_Host *shost`` host the FPIN was received 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´Mzhj&ubj^)�”}”(hhh]”hì)�”}”(hŒhost the FPIN was received on”h]”hŒhost the FPIN was received on”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jAh´MzhjBubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jAh´Mzhj#ubj<)�”}”(hŒ2``u32 fpin_len`` length of FPIN payload, in bytes ”h]”(jB)�”}”(hŒ``u32 fpin_len``”h]”jH)�”}”(hjeh]”hŒ u32 fpin_len”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjcubah}”(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Œ length of FPIN payload, in bytes”h]”hŒ length of FPIN payload, in bytes”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jzh´M{hj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jzh´M{hj#ubj<)�”}”(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|hj#ubj<)�”}”(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}hj#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjubhì)�”}”(hŒ **Notes**”h]”jó)�”}”(hjh]”hŒNotes”…”�”}”(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´Mhjubjt)�”}”(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³j9h´M~hjubeh}”(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”…”�”}”(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Œ ”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj\h²hh³jmh´Mö ubh)�”}”(hhh]”j“)�”}”(hŒscsi_timeout_action”h]”hŒscsi_timeout_action”…”�”}”(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 )�”}”j Œfc_eh_timed_out”sbŒc.fc_eh_timed_out”†”asbuh1hhj\h²hh³jmh´Mö ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj\h²hh³jmh´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Œhj\h²hh³jmh´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”…”�”}”(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³jmh´Mö ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjXh²hh³jmh´Mö ubah}”(h]”jSah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jmh´Mö hjUh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ*FC Transport I/O timeout intercept handler”h]”hŒ*FC Transport I/O timeout intercept handler”…”�”}”(hjNh²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ö hjKh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjUh²hh³jmh´Mö ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjfjäjfjå‰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ó)�”}”(hjph]”hŒ Parameters”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjnubah}”(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ú hjjubj7)�”}”(hhh]”j<)�”}”(hŒ<``struct scsi_cmnd *scmd`` The SCSI command which timed out ”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³Œ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 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]hj‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j¤h´M÷ hj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjjubhì)�”}”(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ù hjjubhì)�”}”(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ø hjjubhì)�”}”(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 hjjubhì)�”}”(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 hjjubjt)�”}”(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 hjjubeh}”(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”…”�”}”(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´MV ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjJh²hh³j\h´MV ubj�)�”}”(hŒfc_remove_host”h]”j“)�”}”(hŒfc_remove_host”h]”hŒfc_remove_host”…”�”}”(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´MV 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 jqsbŒc.fc_remove_host”†”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ÉhjJh²hh³j\h´MV ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjFh²hh³j\h´MV ubah}”(h]”jAah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j\h´MV hjCh²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.”…”�”}”(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´MV hj h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjCh²hh³j\h´MV 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`` 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ó)�”}”(hj0h]”hŒ Parameters”…”�”}”(hj2h²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*ubj7)�”}”(hhh]”j<)�”}”(hŒ6``struct Scsi_Host *shost`` Which :c:type:`Scsi_Host` ”h]”(jB)�”}”(hŒ``struct Scsi_Host *shost``”h]”jH)�”}”(hjOh]”hŒstruct Scsi_Host *shost”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjMubah}”(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 hjIubj^)�”}”(hhh]”hì)�”}”(hŒWhich :c:type:`Scsi_Host`”h]”(hŒWhich ”…”�”}”(hjhh²hh³Nh´Nubh)�”}”(hŒ:c:type:`Scsi_Host`”h]”jH)�”}”(hjrh]”hŒ Scsi_Host”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”(jâjÝŒc-type”eh"]”h$]”h&]”uh1jGhjpubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jîŒ refdomain”jÝŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jôjøjüŒ Scsi_Host”uh1hh³jdh´MW hjhubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jdh´MW hjeubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjIubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jdh´MW hjFubah}”(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´MY hj*ubhì)�”}”(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 hj*ubj7)�”}”(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&]”uh1j6hj*ubhì)�”}”(hŒ **Notes**”h]”jó)�”}”(hj h]”hŒNotes”…”�”}”(hj h²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´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´Ma hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jsh³j1h´Ma 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_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”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjTh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´Mz ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjTh²hh³jeh´Mz ubh)�”}”(hhh]”j“)�”}”(hŒfc_rport”h]”hŒfc_rport”…”�”}”(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 Œfc_remote_port_add”sbŒc.fc_remote_port_add”†”asbuh1hhjTh²hh³jeh´Mz ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjTh²hh³jeh´Mz ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjTh²hh³jeh´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ŒhjTh²hh³jeh´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Œ*”…”�”}”(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”…”�”}”(hjB h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj> ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjP 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Œ struct fc_rport_identifiers *ids”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjw 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Œ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”†”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Œids”h]”hŒids”…”�”}”(hjÎ h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjs ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjÊubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjTh²hh³jeh´Mz ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjPh²hh³jeh´Mz ubah}”(h]”jKah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jeh´Mz hjMh²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ÀhjMh²hh³jeh´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)�”}”(hj9!h]”hŒstruct Scsi_Host *shost”…”�”}”(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Œ*scsi host the remote port is connected to.”h]”hŒ*scsi host the remote port is connected to.”…”�”}”(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!ubj<)�”}”(hŒ4``int channel`` Channel on shost port connected to. ”h]”(jB)�”}”(hŒ``int channel``”h]”jH)�”}”(hjr!h]”hŒ int channel”…”�”}”(hjt!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjp!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| hjl!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]hjl!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j‡!h´M| hj0!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~ hj0!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.”…”�”}”(hj9"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ó)�”}”(hjJ"h]”hŒNotes”…”�”}”(hjL"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjH"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ì)�”}”(hjb"h]”hŒ0This routine assumes no locks are held on entry.”…”�”}”(hjd"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³jq"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]”j‹"ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j¦"h´MW hj�"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.”…”�”}”(hjX#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 hjU#h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj�"h²hh³j¦"h´MW ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjp#jäjp#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ó)�”}”(hjz#h]”hŒ Parameters”…”�”}”(hj|#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjx#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[ hjt#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&]”uh1j6hjt#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 hjt#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 hjt#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ù#hjt#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 hjt#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.”…”�”}”(hjI$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 hjt#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).”…”�”}”(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´Ms hjX$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.”…”�”}”(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} hjX$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jsh³jj$h´Ms hjt#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.”…”�”}”(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„ hjt#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† hjt#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‡ hjt#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’hj7%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Œ ”…”�”}”(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Œrport”h]”hŒrport”…”�”}”(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Œ u32 roles”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ú]”jV%Œc.fc_remote_port_rolechg”†”asbuh1hhjŠ%ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯%h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjŠ%ubj“)�”}”(hŒroles”h]”hŒroles”…”�”}”(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Œ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.”…”�”}”(hjA&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j=&h´MÄ hj>&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj"&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j=&h´MÄ hj&ubj<)�”}”(hŒ'``u32 roles`` New roles for this port. ”h]”(jB)�”}”(hŒ ``u32 roles``”h]”jH)�”}”(hja&h]”hŒ u32 roles”…”�”}”(hjc&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ŒNew roles for this port.”h]”hŒNew roles for this port.”…”�”}”(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Œ**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”…”�”}”(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 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&]”uh1jihjY'ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjj'h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjY'ubh)�”}”(hhh]”j“)�”}”(hŒfc_rport”h]”hŒfc_rport”…”�”}”(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 jC'sbŒc.fc_block_rport”†”asbuh1hhjY'ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›'h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjY'ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj©'h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjY'ubj“)�”}”(hŒrport”h]”hŒrport”…”�”}”(hj¶'h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjY'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjU'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³j6(h´MËhj7(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j6(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ò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ü'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.”…”�”}”(hjr(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_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Œ ”…”�”}”(hjC)h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj)ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjQ)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ý(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 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.”…”�”}”(hjA*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”…”�”}”(hjp*h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjl*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{hjl*h²hh³j}*h´M�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 Œfc_vport_create”sbŒc.fc_vport_create”†”asbuh1hhjl*h²hh³j}*h´M�ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°*h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjl*h²hh³j}*h´M�ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj¾*h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjl*h²hh³j}*h´M�ub•j�)�”}”(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Œhjl*h²hh³j}*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Œ*”…”�”}”(hj4+h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjæ*ubj“)�”}”(hŒshost”h]”hŒshost”…”�”}”(hjA+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”…”�”}”(hjZ+h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjV+ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh+h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjV+ubj“)�”}”(hŒchannel”h]”hŒchannel”…”�”}”(hjv+h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjV+ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjâ*ubjÐ)�”}”(hŒ struct fc_vport_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Œ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”†”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Éhjl*h²hh³j}*h´M�ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjh*h²hh³j}*h´M�ubah}”(h]”jc*ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j}*h´M�hje*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Àhje*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 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ó)�”}”(hj2,h]”hŒ Parameters”…”�”}”(hj4,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj0,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)�”}”(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³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:239: ./drivers/scsi/scsi_transport_fc.c”h´MžhjK,ubj^)�”}”(hhh]”hì)�”}”(hŒ+scsi host the virtual port is connected to.”h]”hŒ+scsi host the virtual port is connected to.”…”�”}”(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žhjH,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Ÿhj„,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]hj„,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jŸ,h´MŸhjH,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¡hjH,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”…”�”}”(hjM-h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjI-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{hjI-h²hh³j[-h´M´ubj�)�”}”(hŒfc_vport_terminate”h]”j“)�”}”(hŒfc_vport_terminate”h]”hŒfc_vport_terminate”…”�”}”(hjn-h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjj-ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjI-h²hh³j[-h´M´ubjÊ)�”}”(hŒ(struct fc_vport *vport)”h]”jÐ)�”}”(hŒstruct fc_vport *vport”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_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 jp-sbŒc.fc_vport_terminate”†”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Œvport”h]”hŒvport”…”�”}”(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ÉhjI-h²hh³j[-h´M´ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjE-h²hh³j[-h´M´ubah}”(h]”j@-ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j[-h´M´hjB-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ÀhjB-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_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”…”�”}”(hj1.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)�”}”(hjN.h]”hŒstruct fc_vport *vport”…”�”}”(hjP.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjL.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µhjH.ubj^)�”}”(hhh]”hì)�”}”(hŒfc_vport to be terminated”h]”hŒfc_vport to be terminated”…”�”}”(hjg.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jc.h´Mµhjd.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjH.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jc.h´MµhjE.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ì)�”}”(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Œ ”…”�”}”(hj3/h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj!/h²hh³j2/h´Mubh)�”}”(hhh]”j“)�”}”(hŒiscsi_endpoint”h]”hŒiscsi_endpoint”…”�”}”(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 Œiscsi_lookup_endpoint”sbŒc.iscsi_lookup_endpoint”†”asbuh1hhj!/h²hh³j2/h´Mubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hje/h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj!/h²hh³j2/h´Mubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjs/h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj!/h²hh³j2/h´Mubj�)�”}”(hŒiscsi_lookup_endpoint”h]”j“)�”}”(hjb/h]”hŒiscsi_lookup_endpoint”…”�”}”(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³j2/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ú]”j`/Œ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³j2/h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj/h²hh³j2/h´Mubah}”(h]”j/ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j2/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³j2/h´Mubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj0jäj0jå‰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ó)�”}”(hj0h]”hŒ Parameters”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj0ubah}”(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´Mhj0ubj7)�”}”(hhh]”j<)�”}”(hŒ``u64 handle`` endpoint handle ”h]”(jB)�”}”(hŒ``u64 handle``”h]”jH)�”}”(hj90h]”hŒ u64 handle”…”�”}”(hj;0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj70ubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´Mhj30ubj^)�”}”(hhh]”hì)�”}”(hŒendpoint handle”h]”hŒendpoint handle”…”�”}”(hjR0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jN0h´MhjO0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj30ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jN0h´Mhj00ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj0ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjt0h]”hŒ Description”…”�”}”(hjv0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjr0ubah}”(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´Mhj0ubhì)�”}”(hŒ$Caller must do a iscsi_put_endpoint.”h]”hŒ$Caller must do a iscsi_put_endpoint.”…”�”}”(hjŠ0h²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´Mhj0ubeh}”(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¹0h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjµ0h²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Ç0h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjµ0h²hh³jÆ0h´MÅubh)�”}”(hhh]”j“)�”}”(hŒiscsi_bus_flash_session”h]”hŒiscsi_bus_flash_session”…”�”}”(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 )�”}”j Œiscsi_create_flashnode_sess”sbŒc.iscsi_create_flashnode_sess”†”asbuh1hhjµ0h²hh³jÆ0h´MÅubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjù0h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjµ0h²hh³jÆ0h´MÅubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjµ0h²hh³jÆ0h´MÅubj�)�”}”(hŒiscsi_create_flashnode_sess”h]”j“)�”}”(hjö0h]”hŒiscsi_create_flashnode_sess”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj1ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjµ0h²hh³jÆ0h´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”…”�”}”(hj31h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj/1ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@1h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj/1ubh)�”}”(hhh]”j“)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hjQ1h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjN1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jS1Œmodname”NŒ classname”Njôj÷)�”}”jú]”jô0Œc.iscsi_create_flashnode_sess”†”asbuh1hhj/1ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjo1h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj/1ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj}1h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj/1ubj“)�”}”(hŒshost”h]”hŒshost”…”�”}”(hjŠ1h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj/1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj+1ubjÐ)�”}”(hŒ int index”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hj£1h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjŸ1ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±1h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjŸ1ubj“)�”}”(hŒindex”h]”hŒindex”…”�”}”(hj¿1h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjŸ1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj+1ubjÐ)�”}”(hŒ!struct iscsi_transport *transport”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjØ1h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjÔ1ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjå1h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÔ1ubh)�”}”(hhh]”j“)�”}”(hŒiscsi_transport”h]”hŒiscsi_transport”…”�”}”(hjö1h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjó1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jø1Œmodname”NŒ classname”Njôj÷)�”}”jú]”jô0Œc.iscsi_create_flashnode_sess”†”asbuh1hhjÔ1ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÔ1ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj"2h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjÔ1ubj“)�”}”(hŒ transport”h]”hŒ transport”…”�”}”(hj/2h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÔ1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj+1ubjÐ)�”}”(hŒ int dd_size”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hjH2h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjD2ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjV2h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjD2ubj“)�”}”(hŒdd_size”h]”hŒdd_size”…”�”}”(hjd2h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjD2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj+1ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjµ0h²hh³jÆ0h´MÅubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj±0h²hh³jÆ0h´MÅubah}”(h]”j¬0ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jÆ0h´MÅhj®0h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ$Add flashnode session entry in sysfs”h]”hŒ$Add flashnode session entry in sysfs”…”�”}”(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‹2h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj®0h²hh³jÆ0h´MÅubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj¦2jäj¦2jå‰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°2h]”hŒ Parameters”…”�”}”(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ª2ubj7)�”}”(hhh]”(j<)�”}”(hŒ1``struct Scsi_Host *shost`` pointer to host data ”h]”(jB)�”}”(hŒ``struct Scsi_Host *shost``”h]”jH)�”}”(hjÏ2h]”hŒstruct Scsi_Host *shost”…”�”}”(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 host data”h]”hŒpointer to host data”…”�”}”(hjè2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jä2h´MÆhjå2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÉ2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jä2h´MÆhjÆ2ubj<)�”}”(hŒ1``int index`` index of flashnode to add in sysfs ”h]”(jB)�”}”(hŒ ``int index``”h]”jH)�”}”(hj3h]”hŒ int index”…”�”}”(hj 3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj3ubah}”(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Çhj3ubj^)�”}”(hhh]”hì)�”}”(hŒ"index of flashnode to add in sysfs”h]”hŒ"index of flashnode to add in sysfs”…”�”}”(hj!3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j3h´MÇhj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j3h´MÇhjÆ2ubj<)�”}”(hŒ@``struct iscsi_transport *transport`` pointer to transport data ”h]”(jB)�”}”(hŒ%``struct iscsi_transport *transport``”h]”jH)�”}”(hjA3h]”hŒ!struct iscsi_transport *transport”…”�”}”(hjC3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj?3ubah}”(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;3ubj^)�”}”(hhh]”hì)�”}”(hŒpointer to transport data”h]”hŒpointer to transport data”…”�”}”(hjZ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jV3h´MÈhjW3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj;3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jV3h´MÈhjÆ2ubj<)�”}”(hŒ'``int dd_size`` total size to allocate ”h]”(jB)�”}”(hŒ``int dd_size``”h]”jH)�”}”(hjz3h]”hŒ int dd_size”…”�”}”(hj|3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjx3ubah}”(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Éhjt3ubj^)�”}”(hhh]”hì)�”}”(hŒtotal size to allocate”h]”hŒtotal size to allocate”…”�”}”(hj“3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j�3h´MÉhj�3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjt3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j�3h´MÉhjÆ2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjª2ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjµ3h]”hŒ Description”…”�”}”(hj·3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj³3ubah}”(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ª2ubhì)�”}”(hŒ7Adds a sysfs entry for the flashnode session attributes”h]”hŒ7Adds a sysfs entry for the flashnode session attributes”…”�”}”(hjË3h²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ª2ubhì)�”}”(hŒ **Return**”h]”jó)�”}”(hjÜ3h]”hŒReturn”…”�”}”(hjÞ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÚ3ubah}”(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ª2ubhì)�”}”(hŒBpointer to allocated flashnode sess on success ``NULL`` on failure”h]”(hŒ/pointer to allocated flashnode sess on success ”…”�”}”(hjò3h²hh³Nh´NubjH)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjú3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjò3ubhŒ on failure”…”�”}”(hjò3h²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ª2ubeh}”(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”…”�”}”(hj34h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj/4h²hh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´Mõubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjA4h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj/4h²hh³j@4h´Mõubh)�”}”(hhh]”j“)�”}”(hŒiscsi_bus_flash_conn”h]”hŒiscsi_bus_flash_conn”…”�”}”(hjR4h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjO4ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jT4Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j Œiscsi_create_flashnode_conn”sbŒc.iscsi_create_flashnode_conn”†”asbuh1hhj/4h²hh³j@4h´Mõubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjs4h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj/4h²hh³j@4h´Mõubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj�4h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj/4h²hh³j@4h´Mõubj�)�”}”(hŒiscsi_create_flashnode_conn”h]”j“)�”}”(hjp4h]”hŒiscsi_create_flashnode_conn”…”�”}”(hj’4h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjŽ4ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj/4h²hh³j@4h´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­4h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj©4ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjº4h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj©4ubh)�”}”(hhh]”j“)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(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ú]”jn4Œc.iscsi_create_flashnode_conn”†”asbuh1hhj©4ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjé4h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj©4ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj÷4h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj©4ubj“)�”}”(hŒshost”h]”hŒshost”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj©4ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj¥4ubjÐ)�”}”(hŒ*struct iscsi_bus_flash_session *fnode_sess”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj5ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*5h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj5ubh)�”}”(hhh]”j“)�”}”(hŒiscsi_bus_flash_session”h]”hŒiscsi_bus_flash_session”…”�”}”(hj;5h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj85ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j=5Œmodname”NŒ classname”Njôj÷)�”}”jú]”jn4Œc.iscsi_create_flashnode_conn”†”asbuh1hhj5ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjY5h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj5ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjg5h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj5ubj“)�”}”(hŒ fnode_sess”h]”hŒ fnode_sess”…”�”}”(hjt5h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj¥4ubjÐ)�”}”(hŒ!struct iscsi_transport *transport”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj�5h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj‰5ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjš5h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj‰5ubh)�”}”(hhh]”j“)�”}”(hŒiscsi_transport”h]”hŒiscsi_transport”…”�”}”(hj«5h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj¨5ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j­5Œmodname”NŒ classname”Njôj÷)�”}”jú]”jn4Œc.iscsi_create_flashnode_conn”†”asbuh1hhj‰5ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉ5h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj‰5ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj×5h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj‰5ubj“)�”}”(hŒ transport”h]”hŒ transport”…”�”}”(hjä5h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj‰5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj¥4ubjÐ)�”}”(hŒ int dd_size”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hjý5h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjù5ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj 6h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjù5ubj“)�”}”(hŒdd_size”h]”hŒdd_size”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjù5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj¥4ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhj/4h²hh³j@4h´Mõubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj+4h²hh³j@4h´Mõubah}”(h]”j&4ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j@4h´Mõhj(4h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ!Add flashnode conn entry in sysfs”h]”hŒ!Add flashnode conn entry in sysfs”…”�”}”(hjC6h²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@6h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj(4h²hh³j@4h´Mõubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj[6jäj[6jå‰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ó)�”}”(hje6h]”hŒ Parameters”…”�”}”(hjg6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjc6ubah}”(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_6ubj7)�”}”(hhh]”(j<)�”}”(hŒ1``struct Scsi_Host *shost`` pointer to host data ”h]”(jB)�”}”(hŒ``struct Scsi_Host *shost``”h]”jH)�”}”(hj„6h]”hŒstruct Scsi_Host *shost”…”�”}”(hj†6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj‚6ubah}”(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~6ubj^)�”}”(hhh]”hì)�”}”(hŒpointer to host data”h]”hŒpointer to host data”…”�”}”(hj�6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j™6h´Möhjš6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj~6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j™6h´Möhj{6ubj<)�”}”(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½6h]”hŒ*struct iscsi_bus_flash_session *fnode_sess”…”�”}”(hj¿6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj»6ubah}”(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·6ubj^)�”}”(hhh]”hì)�”}”(hŒ-pointer to the parent flashnode session entry”h]”hŒ-pointer to the parent flashnode session entry”…”�”}”(hjÖ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÒ6h´M÷hjÓ6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj·6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jÒ6h´M÷hj{6ubj<)�”}”(hŒ@``struct iscsi_transport *transport`` pointer to transport data ”h]”(jB)�”}”(hŒ%``struct iscsi_transport *transport``”h]”jH)�”}”(hjö6h]”hŒ!struct iscsi_transport *transport”…”�”}”(hjø6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjô6ubah}”(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ð6ubj^)�”}”(hhh]”hì)�”}”(hŒpointer to transport data”h]”hŒpointer to transport data”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j 7h´Møhj 7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjð6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j 7h´Møhj{6ubj<)�”}”(hŒ'``int dd_size`` total size to allocate ”h]”(jB)�”}”(hŒ``int dd_size``”h]”jH)�”}”(hj/7h]”hŒ int dd_size”…”�”}”(hj17h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj-7ubah}”(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)7ubj^)�”}”(hhh]”hì)�”}”(hŒtotal size to allocate”h]”hŒtotal size to allocate”…”�”}”(hjH7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jD7h´MùhjE7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj)7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jD7h´Mùhj{6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hj_6ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjj7h]”hŒ Description”…”�”}”(hjl7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjh7ubah}”(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_6ubhì)�”}”(hŒ:Adds a sysfs entry for the flashnode connection attributes”h]”hŒ:Adds a sysfs entry for the flashnode connection attributes”…”�”}”(hj€7h²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_6ubhì)�”}”(hŒ **Return**”h]”jó)�”}”(hj‘7h]”hŒReturn”…”�”}”(hj“7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj�7ubah}”(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_6ubhì)�”}”(hŒBpointer to allocated flashnode conn on success ``NULL`` on failure”h]”(hŒ/pointer to allocated flashnode conn on success ”…”�”}”(hj§7h²hh³Nh´NubjH)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj¯7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj§7ubhŒ on failure”…”�”}”(hj§7h²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_6ubeh}”(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è7h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjä7h²hh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´Mcubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjö7h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjä7h²hh³jõ7h´Mcubh)�”}”(hhh]”j“)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j 8Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j Œiscsi_find_flashnode_sess”sbŒc.iscsi_find_flashnode_sess”†”asbuh1hhjä7h²hh³jõ7h´Mcubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(8h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjä7h²hh³jõ7h´Mcubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj68h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjä7h²hh³jõ7h´Mcubj�)�”}”(hŒiscsi_find_flashnode_sess”h]”j“)�”}”(hj%8h]”hŒiscsi_find_flashnode_sess”…”�”}”(hjG8h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjC8ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjä7h²hh³jõ7h´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”…”�”}”(hjb8h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj^8ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjo8h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj^8ubh)�”}”(hhh]”j“)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hj€8h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj}8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j‚8Œmodname”NŒ classname”Njôj÷)�”}”jú]”j#8Œc.iscsi_find_flashnode_sess”†”asbuh1hhj^8ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjž8h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj^8ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj¬8h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj^8ubj“)�”}”(hŒshost”h]”hŒshost”…”�”}”(hj¹8h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj^8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjZ8ubjÐ)�”}”(hŒconst void *data”h]”(jj)�”}”(hj’Ph]”hŒconst”…”�”}”(hjÒ8h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjÎ8ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjß8h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÎ8ubj’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjí8h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjÎ8ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjû8h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÎ8ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj 9h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjÎ8ubj“)�”}”(hŒdata”h]”hŒdata”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÎ8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjZ8ubjÐ)�”}”(hŒdevice_match_t fn”h]”(h)�”}”(hhh]”j“)�”}”(hŒdevice_match_t”h]”hŒdevice_match_t”…”�”}”(hj29h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj/9ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j49Œmodname”NŒ classname”Njôj÷)�”}”jú]”j#8Œc.iscsi_find_flashnode_sess”†”asbuh1hhj+9ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjP9h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj+9ubj“)�”}”(hŒfn”h]”hŒfn”…”�”}”(hj^9h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj+9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjZ8ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjä7h²hh³jõ7h´Mcubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjà7h²hh³jõ7h´Mcubah}”(h]”jÛ7ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jõ7h´MchjÝ7h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒfinds flashnode session entry”h]”hŒfinds flashnode session entry”…”�”}”(hjˆ9h²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´Mchj…9h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjÝ7h²hh³jõ7h´Mcubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj 9jäj 9jå‰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ª9h]”hŒ Parameters”…”�”}”(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´Mghj¤9ubj7)�”}”(hhh]”(j<)�”}”(hŒ1``struct Scsi_Host *shost`` pointer to host data ”h]”(jB)�”}”(hŒ``struct Scsi_Host *shost``”h]”jH)�”}”(hjÉ9h]”hŒstruct Scsi_Host *shost”…”�”}”(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´MdhjÃ9ubj^)�”}”(hhh]”hì)�”}”(hŒpointer to host data”h]”hŒpointer to host data”…”�”}”(hjâ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÞ9h´Mdhjß9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÃ9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jÞ9h´MdhjÀ9ubj<)�”}”(hŒL``const void *data`` pointer to data containing value to use for comparison ”h]”(jB)�”}”(hŒ``const void *data``”h]”jH)�”}”(hj:h]”hŒconst void *data”…”�”}”(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´Mehjü9ubj^)�”}”(hhh]”hì)�”}”(hŒ6pointer to data containing value to use for comparison”h]”hŒ6pointer to data containing value to use for comparison”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j:h´Mehj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjü9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j:h´MehjÀ9ubj<)�”}”(hŒC``device_match_t fn`` function pointer that does actual comparison ”h]”(jB)�”}”(hŒ``device_match_t fn``”h]”jH)�”}”(hj;:h]”hŒdevice_match_t fn”…”�”}”(hj=:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj9: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´Mfhj5:ubj^)�”}”(hhh]”hì)�”}”(hŒ,function pointer that does actual comparison”h]”hŒ,function pointer that does actual comparison”…”�”}”(hjT:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jP:h´MfhjQ:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj5:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jP:h´MfhjÀ9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hj¤9ubhì)�”}”(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´Mhhj¤9ubhì)�”}”(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”…”�”}”(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´Mghj¤9ubhì)�”}”(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´Mjhj¤9ubhì)�”}”(hŒOpointer to found flashnode session device object on success ``NULL`` on failure”h]”(hŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³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”…”�”}”(hjj>h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjf>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Œ ”…”�”}”(hjy>h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjf>h²hh³jx>h´M±ubj�)�”}”(hŒiscsi_destroy_all_flashnode”h]”j“)�”}”(hŒiscsi_destroy_all_flashnode”h]”hŒiscsi_destroy_all_flashnode”…”�”}”(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Œ(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.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É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Œ%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Àhj_>h²hh³jx>h´M±ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjB?jäjB?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ó)�”}”(hjL?h]”hŒ Parameters”…”�”}”(hjN?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjJ?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µhjF?ubj7)�”}”(hhh]”j<)�”}”(hŒ1``struct Scsi_Host *shost`` pointer to host data ”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³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´M²hje?ubj^)�”}”(hhh]”hì)�”}”(hŒpointer to host data”h]”hŒpointer to host data”…”�”}”(hj„?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j€?h´M²hj�?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hje?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j€?h´M²hjb?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjF?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´hjF?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³hjF?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Œ ”…”�”}”(hj5@h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj$@ubh)�”}”(hhh]”j“)�”}”(hŒ scsi_cmnd”h]”hŒ scsi_cmnd”…”�”}”(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.iscsi_block_scsi_eh”†”asbuh1hhj$@ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjf@h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj$@ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjt@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 @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”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jAh´M2hjAubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjæ@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jAh´M2hjã@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjÇ@ubhì)�”}”(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´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=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´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”…”�”}”(hjlAh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjhAh²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{hjhAh²hh³jzAh´M‚ubj�)�”}”(hŒiscsi_unblock_session”h]”j“)�”}”(hŒiscsi_unblock_session”h]”hŒiscsi_unblock_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ŒhjhAh²hh³jzAh´M‚ubjÊ)�”}”(hŒ#(struct iscsi_cls_session *session)”h]”jÐ)�”}”(hŒ!struct iscsi_cls_session *session”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Œiscsi_cls_session”h]”hŒiscsi_cls_session”…”�”}”(hjÇAh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÄAubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jÉAŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j j�AsbŒc.iscsi_unblock_session”†”asbuh1hhj¥Aubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjçAh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj¥Aubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjõAh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj¥Aubj“)�”}”(hŒsession”h]”hŒsession”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj¥Aubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj¡Aubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjhAh²hh³jzAh´M‚ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjdAh²hh³jzAh´M‚ubah}”(h]”j_Aah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jzAh´M‚hjaAh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ(set a session as logged in and start IO.”h]”hŒ(set a session as logged in and start IO.”…”�”}”(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ÀhjaAh²hh³jzAh´M‚ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjDBjäjDBjå‰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ó)�”}”(hjNBh]”hŒ Parameters”…”�”}”(hjPBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjLBubah}”(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†hjHBubj7)�”}”(hhh]”j<)�”}”(hŒ4``struct iscsi_cls_session *session`` iscsi session ”h]”(jB)�”}”(hŒ%``struct iscsi_cls_session *session``”h]”jH)�”}”(hjmBh]”hŒ!struct iscsi_cls_session *session”…”�”}”(hjoBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjkBubah}”(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ƒhjgBubj^)�”}”(hhh]”hì)�”}”(hŒ iscsi session”h]”hŒ iscsi session”…”�”}”(hj†Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j‚Bh´MƒhjƒBubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjgBubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j‚Bh´MƒhjdBubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjHBubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hj¨Bh]”hŒ Description”…”�”}”(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…hjHBubhì)�”}”(hŒ%Mark a session as ready to accept IO.”h]”hŒ%Mark a session as ready to accept IO.”…”�”}”(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„hjHBubeh}”(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íBh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjéBh²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üBh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjéBh²hh³jûBh´M< ubj�)�”}”(hŒiscsi_force_destroy_session”h]”j“)�”}”(hŒiscsi_force_destroy_session”h]”hŒiscsi_force_destroy_session”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj Cubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjéBh²hh³jûBh´M< ubjÊ)�”}”(hŒ#(struct iscsi_cls_session *session)”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Œ ”…”�”}”(hj7Ch²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj&Cubh)�”}”(hhh]”j“)�”}”(hŒiscsi_cls_session”h]”hŒiscsi_cls_session”…”�”}”(hjHCh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjECubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jJCŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jCsbŒc.iscsi_force_destroy_session”†”asbuh1hhj&Cubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhCh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj&Cubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjvCh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj&Cubj“)�”}”(hŒsession”h]”hŒsession”…”�”}”(hjƒCh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj&Cubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj"Cubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjéBh²hh³jûBh´M< ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjåBh²hh³jûBh´M< ubah}”(h]”jàBah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jûBh´M< hjâBh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ!destroy a session from the kernel”h]”hŒ!destroy a session from the kernel”…”�”}”(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ªCh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjâBh²hh³jûBh´M< ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjÅCjäjÅCjå‰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ÏCh]”hŒ Parameters”…”�”}”(hjÑCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÍCubah}”(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ÉCubj7)�”}”(hhh]”j<)�”}”(hŒ9``struct iscsi_cls_session *session`` session to destroy ”h]”(jB)�”}”(hŒ%``struct iscsi_cls_session *session``”h]”jH)�”}”(hjîCh]”hŒ!struct iscsi_cls_session *session”…”�”}”(hjðCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjìCubah}”(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èCubj^)�”}”(hhh]”hì)�”}”(hŒsession to destroy”h]”hŒsession to destroy”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jDh´M= hjDubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjèCubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jDh´M= hjåCubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjÉCubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hj)Dh]”hŒ Description”…”�”}”(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´M? hjÉCubhì)�”}”(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?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´M> hjÉCubeh}”(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”…”�”}”(hjnDh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjjDh²hh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:249: ./drivers/scsi/scsi_transport_iscsi.c”h´Mc ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|Dh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjjDh²hh³j{Dh´Mc ubh)�”}”(hhh]”j“)�”}”(hŒiscsi_cls_conn”h]”hŒiscsi_cls_conn”…”�”}”(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 )�”}”j Œiscsi_alloc_conn”sbŒc.iscsi_alloc_conn”†”asbuh1hhjjDh²hh³j{Dh´Mc ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®Dh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjjDh²hh³j{Dh´Mc ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj¼Dh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjjDh²hh³j{Dh´Mc ubj�)�”}”(hŒiscsi_alloc_conn”h]”j“)�”}”(hj«Dh]”hŒiscsi_alloc_conn”…”�”}”(hjÍDh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÉDubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjjDh²hh³j{Dh´Mc 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è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Œiscsi_cls_session”h]”hŒiscsi_cls_session”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjEubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jEŒmodname”NŒ classname”Njôj÷)�”}”jú]”j©DŒc.iscsi_alloc_conn”†”asbuh1hhjäDubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$Eh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjäDubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj2Eh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjäDubj“)�”}”(hŒsession”h]”hŒsession”…”�”}”(hj?Eh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjäDubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjàDubjÐ)�”}”(hŒ int dd_size”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hjXEh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjTEubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfEh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjTEubj“)�”}”(hŒdd_size”h]”hŒdd_size”…”�”}”(hjtEh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjTEubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjàDubjÐ)�”}”(hŒ uint32_t cid”h]”(h)�”}”(hhh]”j“)�”}”(hŒuint32_t”h]”hŒuint32_t”…”�”}”(hj�Eh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj�Eubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j’EŒmodname”NŒ classname”Njôj÷)�”}”jú]”j©DŒc.iscsi_alloc_conn”†”asbuh1hhj‰Eubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®Eh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj‰Eubj“)�”}”(hŒcid”h]”hŒcid”…”�”}”(hj¼Eh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj‰Eubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjàDubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjjDh²hh³j{Dh´Mc ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjfDh²hh³j{Dh´Mc ubah}”(h]”jaDah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j{Dh´Mc hjcDh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒalloc iscsi class connection”h]”hŒalloc iscsi class connection”…”�”}”(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´Mc hjãEh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjcDh²hh³j{Dh´Mc ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjþEjäjþEjå‰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ó)�”}”(hjFh]”hŒ Parameters”…”�”}”(hj Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjFubah}”(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´Mg hjFubj7)�”}”(hhh]”(j<)�”}”(hŒ8``struct iscsi_cls_session *session`` iscsi cls session ”h]”(jB)�”}”(hŒ%``struct iscsi_cls_session *session``”h]”jH)�”}”(hj'Fh]”hŒ!struct iscsi_cls_session *session”…”�”}”(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´Md hj!Fubj^)�”}”(hhh]”hì)�”}”(hŒiscsi cls session”h]”hŒiscsi cls session”…”�”}”(hj@Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j(struct iscsi_cls_session *session, enum iscsi_uevent_e event)”h]”(jÐ)�”}”(hŒ!struct iscsi_cls_session *session”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj2Jh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj.Jubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?Jh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj.Jubh)�”}”(hhh]”j“)�”}”(hŒiscsi_cls_session”h]”hŒiscsi_cls_session”…”�”}”(hjPJh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjMJubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jRJŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jJsbŒc.iscsi_session_event”†”asbuh1hhj.Jubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjpJh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj.Jubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj~Jh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj.Jubj“)�”}”(hŒsession”h]”hŒsession”…”�”}”(hj‹Jh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj.Jubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj*JubjÐ)�”}”(hŒenum iscsi_uevent_e event”h]”(jj)�”}”(hjf9h]”hŒenum”…”�”}”(hj¤Jh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj Jubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±Jh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj Jubh)�”}”(hhh]”j“)�”}”(hŒiscsi_uevent_e”h]”hŒiscsi_uevent_e”…”�”}”(hjÂJh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj¿Jubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jÄJŒmodname”NŒ classname”Njôj÷)�”}”jú]”jlJŒc.iscsi_session_event”†”asbuh1hhj Jubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjàJh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj Jubj“)�”}”(hŒevent”h]”hŒevent”…”�”}”(hjîJh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj Jubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj*Jubeh}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjñIh²hh³jJh´M' ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjíIh²hh³jJh´M' ubah}”(h]”jèIah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jJh´M' hjêIh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ$send session destr. completion event”h]”hŒ$send session destr. completion event”…”�”}”(hjKh²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' hjKh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjêIh²hh³jJh´M' ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj0Kjäj0Kjå‰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:Kh]”hŒ Parameters”…”�”}”(hjMh]”hŒstruct device *dev”…”�”}”(hj@Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj^h²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´MCubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQ^h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj>^h²hh³jP^h´MCubj�)�”}”(hŒscsi_is_sas_phy”h]”j“)�”}”(hŒscsi_is_sas_phy”h]”hŒscsi_is_sas_phy”…”�”}”(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´MCubjÊ)�”}”(hŒ(const struct device *dev)”h]”jÐ)�”}”(hŒconst struct device *dev”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Œ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 je^sbŒc.scsi_is_sas_phy”†”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Ïhjw^ubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhj>^h²hh³jP^h´MCubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj:^h²hh³jP^h´MCubah}”(h]”j5^ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jP^h´MChj7^h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ-check if a struct device represents a SAS PHY”h]”hŒ-check if a struct device represents a SAS PHY”…”�”}”(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´MChj_h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj7^h²hh³jP^h´MCubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj5_jäj5_jå‰jæ‰jç‰uh1jXh²hhjÛKh³Nh´Nubjé)�”}”(hŒ€**Parameters** ``const struct device *dev`` device to check **Return** ``1`` if the device represents a SAS PHY, ``0`` else”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj?_h]”hŒ Parameters”…”�”}”(hjA_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj=_ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´MGhj9_ubj7)�”}”(hhh]”j<)�”}”(hŒ-``const struct device *dev`` device to check ”h]”(jB)�”}”(hŒ``const struct device *dev``”h]”jH)�”}”(hj^_h]”hŒconst struct device *dev”…”�”}”(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:276: ./drivers/scsi/scsi_transport_sas.c”h´MDhjX_ubj^)�”}”(hhh]”hì)�”}”(hŒdevice to check”h]”hŒdevice to check”…”�”}”(hjw_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³js_h´MDhjt_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjX_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³js_h´MDhjU_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj9_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³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´MFhj9_ubhì)�”}”(hŒ4``1`` if the device represents a SAS PHY, ``0`` else”h]”(jH)�”}”(hŒ``1``”h]”hŒ1”…”�”}”(hj³_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj¯_ubhŒ% if the device represents a SAS PHY, ”…”�”}”(hj¯_h²hh³Nh´NubjH)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hjÅ_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj¯_ubhŒ else”…”�”}”(hj¯_h²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´MFhj9_ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjÛKh²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒsas_port_alloc (C function)”Œc.sas_port_alloc”hNt”auh1jGhjÛKh²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒEstruct sas_port * sas_port_alloc (struct device *parent, int port_id)”h]”jd)�”}”(hŒCstruct sas_port *sas_port_alloc(struct device *parent, int port_id)”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:276: ./drivers/scsi/scsi_transport_sas.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Œsas_port”h]”hŒsas_port”…”�”}”(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 Œsas_port_alloc”sbŒc.sas_port_alloc”†”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Œ*”…”�”}”(hjL`h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjú_h²hh³j `h´M�ubj�)�”}”(hŒsas_port_alloc”h]”j“)�”}”(hj;`h]”hŒsas_port_alloc”…”�”}”(hj]`h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjY`ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjú_h²hh³j `h´M�ubjÊ)�”}”(hŒ$(struct device *parent, int port_id)”h]”(jÐ)�”}”(hŒstruct device *parent”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjx`h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjt`ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…`h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjt`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ú]”j9`Œc.sas_port_alloc”†”asbuh1hhjt`ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´`h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjt`ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjÂ`h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjt`ubj“)�”}”(hŒparent”h]”hŒparent”…”�”}”(hjÏ`h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjt`ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjp`ubjÐ)�”}”(hŒ int port_id”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Œport_id”h]”hŒport_id”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjä`ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjp`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Œ,allocate and initialize a SAS port structure”h]”hŒ,allocate and initialize a SAS port structure”…”�”}”(hj.ah²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+ah²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjó_h²hh³j `h´M�ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjFajäjFajå‰jæ‰jç‰uh1jXh²hhjÛKh³Nh´Nubjé)�”}”(hX2**Parameters** ``struct device *parent`` parent device ``int port_id`` port number **Description** Allocates a SAS port structure. It will be added to the device tree below the device specified by **parent** which must be either a Scsi_Host or a sas_expander_device. **Return** ``NULL`` on error”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjPah]”hŒ Parameters”…”�”}”(hjRah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjNaubah}”(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¡hjJaubj7)�”}”(hhh]”(j<)�”}”(hŒ(``struct device *parent`` parent device ”h]”(jB)�”}”(hŒ``struct device *parent``”h]”jH)�”}”(hjoah]”hŒstruct device *parent”…”�”}”(hjqah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjmaubah}”(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Ÿhjiaubj^)�”}”(hhh]”hì)�”}”(hŒ parent device”h]”hŒ parent device”…”�”}”(hjˆah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j„ah´MŸhj…aubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjiaubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j„ah´MŸhjfaubj<)�”}”(hŒ``int port_id`` port number ”h]”(jB)�”}”(hŒ``int port_id``”h]”jH)�”}”(hj¨ah]”hŒ int port_id”…”�”}”(hjªah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj¦aubah}”(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¢aubj^)�”}”(hhh]”hì)�”}”(hŒ port number”h]”hŒ port number”…”�”}”(hjÁah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j½ah´M hj¾aubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj¢aubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j½ah´M hjfaubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjJaubhì)�”}”(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³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´M¢hjJaubhì)�”}”(hŒ¨Allocates a SAS port structure. It will be added to the device tree below the device specified by **parent** which must be either a Scsi_Host or a sas_expander_device.”h]”(hŒcAllocates a SAS port structure. It will be added to the device tree below the device specified by ”…”�”}”(hjùah²hh³Nh´Nubjó)�”}”(hŒ **parent**”h]”hŒparent”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjùaubhŒ; which must be either a Scsi_Host or a sas_expander_device.”…”�”}”(hjùah²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¡hjJaubhì)�”}”(hŒ **Return**”h]”jó)�”}”(hjbh]”hŒReturn”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjbubah}”(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¥hjJaubhì)�”}”(hŒ``NULL`` on error”h]”(jH)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj6bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj2bubhŒ on error”…”�”}”(hj2bh²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¦hjJaubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjÛKh²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒsas_port_alloc_num (C function)”Œc.sas_port_alloc_num”hNt”auh1jGhjÛKh²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒstruct sas_rphy *sas_end_device_alloc(struct sas_port *parent)”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjÌph²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjÈph²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Úph²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÈph²hh³jÙph´MÐubh)�”}”(hhh]”j“)�”}”(hŒsas_rphy”h]”hŒsas_rphy”…”�”}”(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 Œsas_end_device_alloc”sbŒc.sas_end_device_alloc”†”asbuh1hhjÈph²hh³jÙph´MÐubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj qh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÈph²hh³jÙph´MÐubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjÈph²hh³jÙph´MÐubj�)�”}”(hŒsas_end_device_alloc”h]”j“)�”}”(hj qh]”hŒsas_end_device_alloc”…”�”}”(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Èph²hh³jÙph´MÐubjÊ)�”}”(hŒ(struct sas_port *parent)”h]”jÐ)�”}”(hŒstruct sas_port *parent”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjFqh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjBqubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSqh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjBqubh)�”}”(hhh]”j“)�”}”(hŒsas_port”h]”hŒsas_port”…”�”}”(hjdqh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjaqubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jfqŒmodname”NŒ classname”Njôj÷)�”}”jú]”jqŒc.sas_end_device_alloc”†”asbuh1hhjBqubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚qh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjBqubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj�qh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjBqubj“)�”}”(hŒparent”h]”hŒparent”…”�”}”(hj�qh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjBqubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj>qubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjÈph²hh³jÙph´MÐubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjÄph²hh³jÙph´MÐubah}”(h]”j¿pah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jÙph´MÐhjÁph²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ"allocate an rphy for an end device”h]”hŒ"allocate an rphy for an end device”…”�”}”(hjÇqh²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Äqh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjÁph²hh³jÙph´MÐubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjßqjäjßqjå‰jæ‰jç‰uh1jXh²hhjÛKh³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éqh]”hŒ Parameters”…”�”}”(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´MÔhjãqubj7)�”}”(hhh]”j<)�”}”(hŒ'``struct sas_port *parent`` which port ”h]”(jB)�”}”(hŒ``struct sas_port *parent``”h]”jH)�”}”(hjrh]”hŒstruct sas_port *parent”…”�”}”(hj rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjrubah}”(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Ñhjrubj^)�”}”(hhh]”hì)�”}”(hŒ which port”h]”hŒ which port”…”�”}”(hj!rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jrh´MÑhjrubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjrubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jrh´MÑhjÿqubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjãqubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjCrh]”hŒ Description”…”�”}”(hjErh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjArubah}”(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ãqubhì)�”}”(hŒ?Allocates an SAS remote PHY structure, connected to **parent**.”h]”(hŒ4Allocates an SAS remote PHY structure, connected to ”…”�”}”(hjYrh²hh³Nh´Nubjó)�”}”(hŒ **parent**”h]”hŒparent”…”�”}”(hjarh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjYrubhŒ.”…”�”}”(hjYrh²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ãqubhì)�”}”(hŒ **Return**”h]”jó)�”}”(hj|rh]”hŒReturn”…”�”}”(hj~rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjzrubah}”(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ãqubhì)�”}”(hŒ7SAS PHY allocated or ``NULL`` if the allocation failed.”h]”(hŒSAS PHY allocated or ”…”�”}”(hj’rh²hh³Nh´NubjH)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjšrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj’rubhŒ if the allocation failed.”…”�”}”(hj’rh²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ãqubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjÛKh²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒsas_expander_alloc (C function)”Œc.sas_expander_alloc”hNt”auh1jGhjÛKh²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Órh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjÏ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Œ ”…”�”}”(hjárh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÏrh²hh³jàrh´Möubh)�”}”(hhh]”j“)�”}”(hŒsas_rphy”h]”hŒsas_rphy”…”�”}”(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 )�”}”j Œsas_expander_alloc”sbŒc.sas_expander_alloc”†”asbuh1hhjÏrh²hh³jàrh´Möubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjÏrh²hh³jàrh´Möubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj!sh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjÏrh²hh³jàrh´Möubj�)�”}”(hŒsas_expander_alloc”h]”j“)�”}”(hjsh]”hŒsas_expander_alloc”…”�”}”(hj2sh²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Œ4(struct sas_port *parent, enum sas_device_type type)”h]”(jÐ)�”}”(hŒstruct sas_port *parent”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjMsh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjIsubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZsh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjIsubh)�”}”(hhh]”j“)�”}”(hŒsas_port”h]”hŒsas_port”…”�”}”(hjksh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjhsubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jmsŒmodname”NŒ classname”Njôj÷)�”}”jú]”jsŒc.sas_expander_alloc”†”asbuh1hhjIsubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰sh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjIsubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj—sh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjIsubj“)�”}”(hŒparent”h]”hŒparent”…”�”}”(hj¤sh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjIsubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjEsubjÐ)�”}”(hŒenum sas_device_type type”h]”(jj)�”}”(hjf9h]”hŒenum”…”�”}”(hj½sh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj¹subj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊsh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj¹subh)�”}”(hhh]”j“)�”}”(hŒsas_device_type”h]”hŒsas_device_type”…”�”}”(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ú]”jsŒc.sas_expander_alloc”†”asbuh1hhj¹subj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùsh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj¹subj“)�”}”(hŒtype”h]”hŒtype”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj¹subeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjEsubeh}”(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Œ"allocate an rphy for an end device”h]”hŒ"allocate an rphy for an end device”…”�”}”(hj1th²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.th²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjÈrh²hh³jàrh´Möubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjItjäjItjå‰jæ‰jç‰uh1jXh²hhjÛKh³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ó)�”}”(hjSth]”hŒ Parameters”…”�”}”(hjUth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjQtubah}”(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úhjMtubj7)�”}”(hhh]”(j<)�”}”(hŒ'``struct sas_port *parent`` which port ”h]”(jB)�”}”(hŒ``struct sas_port *parent``”h]”jH)�”}”(hjrth]”hŒstruct sas_port *parent”…”�”}”(hjtth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjptubah}”(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÷hjltubj^)�”}”(hhh]”hì)�”}”(hŒ which port”h]”hŒ which port”…”�”}”(hj‹th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j‡th´M÷hjˆtubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjltubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j‡th´M÷hjitubj<)�”}”(hŒU``enum sas_device_type type`` SAS_EDGE_EXPANDER_DEVICE or SAS_FANOUT_EXPANDER_DEVICE ”h]”(jB)�”}”(hŒ``enum sas_device_type type``”h]”jH)�”}”(hj«th]”hŒenum sas_device_type type”…”�”}”(hj­th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj©tubah}”(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¥tubj^)�”}”(hhh]”hì)�”}”(hŒ6SAS_EDGE_EXPANDER_DEVICE or SAS_FANOUT_EXPANDER_DEVICE”h]”hŒ6SAS_EDGE_EXPANDER_DEVICE or SAS_FANOUT_EXPANDER_DEVICE”…”�”}”(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øhjitubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjMtubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjæth]”hŒ Description”…”�”}”(hjèth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjätubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´MúhjMtubhì)�”}”(hŒ?Allocates an SAS remote PHY structure, connected to **parent**.”h]”(hŒ4Allocates an SAS remote PHY structure, connected to ”…”�”}”(hjüth²hh³Nh´Nubjó)�”}”(hŒ **parent**”h]”hŒparent”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjütubhŒ.”…”�”}”(hjüth²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ùhjMtubhì)�”}”(hŒ **Return**”h]”jó)�”}”(hjuh]”hŒReturn”…”�”}”(hj!uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjuubah}”(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ûhjMtubhì)�”}”(hŒ7SAS PHY allocated or ``NULL`` if the allocation failed.”h]”(hŒSAS PHY allocated or ”…”�”}”(hj5uh²hh³Nh´NubjH)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj=uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj5uubhŒ if the allocation failed.”…”�”}”(hj5uh²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ühjMtubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjÛKh²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒsas_rphy_add (C function)”Œc.sas_rphy_add”hNt”auh1jGhjÛKh²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ(int sas_rphy_add (struct sas_rphy *rphy)”h]”jd)�”}”(hŒ'int sas_rphy_add(struct sas_rphy *rphy)”h]”(j’)�”}”(hŒint”h]”hŒint”…”�”}”(hjvuh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjruh²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´Mubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…uh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjruh²hh³j„uh´Mubj�)�”}”(hŒ sas_rphy_add”h]”j“)�”}”(hŒ sas_rphy_add”h]”hŒ sas_rphy_add”…”�”}”(hj—uh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj“uubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjruh²hh³j„uh´MubjÊ)�”}”(hŒ(struct sas_rphy *rphy)”h]”jÐ)�”}”(hŒstruct sas_rphy *rphy”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj³uh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj¯uubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀuh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj¯uubh)�”}”(hhh]”j“)�”}”(hŒsas_rphy”h]”hŒsas_rphy”…”�”}”(hjÑuh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjÎuubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jÓuŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j j™usbŒc.sas_rphy_add”†”asbuh1hhj¯uubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñuh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj¯uubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjÿuh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj¯uubj“)�”}”(hŒrphy”h]”hŒrphy”…”�”}”(hj vh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj¯uubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj«uubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjruh²hh³j„uh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjnuh²hh³j„uh´Mubah}”(h]”jiuah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j„uh´Mhjkuh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ,add a SAS remote PHY to the device hierarchy”h]”hŒ,add a SAS remote PHY to the device hierarchy”…”�”}”(hj6vh²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´Mhj3vh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjkuh²hh³j„uh´Mubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjNvjäjNvjå‰jæ‰jç‰uh1jXh²hhjÛKh³Nh´Nubjé)�”}”(hŒŽ**Parameters** ``struct sas_rphy *rphy`` The remote PHY to be added **Description** Publishes a SAS remote PHY to the rest of the system.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hjXvh]”hŒ Parameters”…”�”}”(hjZvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjVvubah}”(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#hjRvubj7)�”}”(hhh]”j<)�”}”(hŒ5``struct sas_rphy *rphy`` The remote PHY to be added ”h]”(jB)�”}”(hŒ``struct sas_rphy *rphy``”h]”jH)�”}”(hjwvh]”hŒstruct sas_rphy *rphy”…”�”}”(hjyvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjuvubah}”(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 hjqvubj^)�”}”(hhh]”hì)�”}”(hŒThe remote PHY to be added”h]”hŒThe remote PHY to be added”…”�”}”(hj�vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jŒvh´M hj�vubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjqvubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jŒvh´M hjnvubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjRvubhì)�”}”(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³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´M"hjRvubhì)�”}”(hŒ5Publishes a SAS remote PHY to the rest of the system.”h]”hŒ5Publishes a SAS remote PHY to the rest of the system.”…”�”}”(hjÈvh²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!hjRvubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjÛKh²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒsas_rphy_free (C function)”Œc.sas_rphy_free”hNt”auh1jGhjÛKh²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ*void sas_rphy_free (struct sas_rphy *rphy)”h]”jd)�”}”(hŒ)void sas_rphy_free(struct sas_rphy *rphy)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj÷vh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjóvh²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´MUubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjóvh²hh³jwh´MUubj�)�”}”(hŒ sas_rphy_free”h]”j“)�”}”(hŒ sas_rphy_free”h]”hŒ sas_rphy_free”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjwubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjóvh²hh³jwh´MUubjÊ)�”}”(hŒ(struct sas_rphy *rphy)”h]”jÐ)�”}”(hŒstruct sas_rphy *rphy”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hj4wh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihj0wubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjAwh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj0wubh)�”}”(hhh]”j“)�”}”(hŒsas_rphy”h]”hŒsas_rphy”…”�”}”(hjRwh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjOwubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jTwŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jwsbŒc.sas_rphy_free”†”asbuh1hhj0wubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrwh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj0wubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj€wh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj0wubj“)�”}”(hŒrphy”h]”hŒrphy”…”�”}”(hj�wh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj0wubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj,wubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhjóvh²hh³jwh´MUubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjïvh²hh³jwh´MUubah}”(h]”jêvah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jwh´MUhjìvh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒfree a SAS remote PHY”h]”hŒfree a SAS remote PHY”…”�”}”(hj·wh²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´MUhj´wh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjìvh²hh³jwh´MUubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjÏwjäjÏwjå‰jæ‰jç‰uh1jXh²hhjÛKh³Nh´Nubjé)�”}”(hX**Parameters** ``struct sas_rphy *rphy`` SAS remote PHY to free **Description** Frees the specified SAS remote PHY. **Note** This function must only be called on a remote PHY that has not successfully been added using sas_rphy_add() (or has been sas_rphy_remove()'d)”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³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´MYhjÓwubj7)�”}”(hhh]”j<)�”}”(hŒ1``struct sas_rphy *rphy`` SAS remote PHY to free ”h]”(jB)�”}”(hŒ``struct sas_rphy *rphy``”h]”jH)�”}”(hjøwh]”hŒstruct sas_rphy *rphy”…”�”}”(hjúwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjöwubah}”(h]”h ]”h"]”h$]”h&]”uh1jAh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´MVhjòwubj^)�”}”(hhh]”hì)�”}”(hŒSAS remote PHY to free”h]”hŒSAS remote PHY to free”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j xh´MVhjxubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjòwubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j xh´MVhjïwubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjÓwubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hj3xh]”hŒ Description”…”�”}”(hj5xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj1xubah}”(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´MXhjÓwubhì)�”}”(hŒ#Frees the specified SAS remote PHY.”h]”hŒ#Frees the specified SAS remote PHY.”…”�”}”(hjIxh²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Ówubhì)�”}”(hŒ**Note**”h]”jó)�”}”(hjZxh]”hŒNote”…”�”}”(hj\xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjXxubah}”(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Ówubjt)�”}”(hŒ�This function must only be called on a remote PHY that has not successfully been added using sas_rphy_add() (or has been sas_rphy_remove()'d)”h]”hì)�”}”(hŒ�This function must only be called on a remote PHY that has not successfully been added using sas_rphy_add() (or has been sas_rphy_remove()'d)”h]”hŒ�This function must only be called on a remote PHY that has not successfully been added using sas_rphy_add() (or has been sas_rphy_remove()’d)”…”�”}”(hjtxh²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´MZhjpxubah}”(h]”h ]”h"]”h$]”h&]”uh1jsh³j‚xh´MZhjÓwubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjÛKh²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒsas_rphy_delete (C function)”Œc.sas_rphy_delete”hNt”auh1jGhjÛKh²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ,void sas_rphy_delete (struct sas_rphy *rphy)”h]”jd)�”}”(hŒ+void sas_rphy_delete(struct sas_rphy *rphy)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj©xh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj¥xh²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´Mpubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸xh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj¥xh²hh³j·xh´Mpubj�)�”}”(hŒsas_rphy_delete”h]”j“)�”}”(hŒsas_rphy_delete”h]”hŒsas_rphy_delete”…”�”}”(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´MpubjÊ)�”}”(hŒ(struct sas_rphy *rphy)”h]”jÐ)�”}”(hŒstruct sas_rphy *rphy”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjæxh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjâxubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóxh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjâxubh)�”}”(hhh]”j“)�”}”(hŒsas_rphy”h]”hŒsas_rphy”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjyubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jyŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jÌxsbŒc.sas_rphy_delete”†”asbuh1hhjâxubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$yh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjâxubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj2yh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjâxubj“)�”}”(hŒrphy”h]”hŒrphy”…”�”}”(hj?yh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjâxubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjÞxubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhj¥xh²hh³j·xh´Mpubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj¡xh²hh³j·xh´Mpubah}”(h]”jœxah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j·xh´Mphjžxh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒremove and free SAS remote PHY”h]”hŒremove and free SAS remote PHY”…”�”}”(hjiyh²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´Mphjfyh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjžxh²hh³j·xh´Mpubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj�yjäj�yjå‰jæ‰jç‰uh1jXh²hhjÛKh³Nh´Nubjé)�”}”(hŒ’**Parameters** ``struct sas_rphy *rphy`` SAS remote PHY to remove and free **Description** Removes the specified SAS remote PHY and frees it.”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³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´Mthj…yubj7)�”}”(hhh]”j<)�”}”(hŒ<``struct sas_rphy *rphy`` SAS remote PHY to remove and free ”h]”(jB)�”}”(hŒ``struct sas_rphy *rphy``”h]”jH)�”}”(hjªyh]”hŒstruct sas_rphy *rphy”…”�”}”(hj¬yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj¨yubah}”(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¤yubj^)�”}”(hhh]”hì)�”}”(hŒ!SAS remote PHY to remove and free”h]”hŒ!SAS remote PHY to remove and free”…”�”}”(hjÃyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¿yh´MqhjÀyubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj¤yubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j¿yh´Mqhj¡yubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj…yubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjåyh]”hŒ Description”…”�”}”(hjçyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjãyubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´Mshj…yubhì)�”}”(hŒ2Removes the specified SAS remote PHY and frees it.”h]”hŒ2Removes the specified SAS remote PHY and frees it.”…”�”}”(hjûyh²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…yubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjÛKh²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒsas_rphy_unlink (C function)”Œc.sas_rphy_unlink”hNt”auh1jGhjÛKh²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ,void sas_rphy_unlink (struct sas_rphy *rphy)”h]”jd)�”}”(hŒ+void sas_rphy_unlink(struct sas_rphy *rphy)”h]”(j’)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj*zh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hj&zh²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´M~ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9zh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj&zh²hh³j8zh´M~ubj�)�”}”(hŒsas_rphy_unlink”h]”j“)�”}”(hŒsas_rphy_unlink”h]”hŒsas_rphy_unlink”…”�”}”(hjKzh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjGzubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj&zh²hh³j8zh´M~ubjÊ)�”}”(hŒ(struct sas_rphy *rphy)”h]”jÐ)�”}”(hŒstruct sas_rphy *rphy”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjgzh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjczubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjtzh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjczubh)�”}”(hhh]”j“)�”}”(hŒsas_rphy”h]”hŒsas_rphy”…”�”}”(hj…zh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj‚zubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”j‡zŒmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j jMzsbŒc.sas_rphy_unlink”†”asbuh1hhjczubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥zh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjczubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj³zh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjczubj“)�”}”(hŒrphy”h]”hŒrphy”…”�”}”(hjÀzh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjczubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhj_zubah}”(h]”h ]”h"]”h$]”h&]”jªj«uh1jÉhj&zh²hh³j8zh´M~ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj"zh²hh³j8zh´M~ubah}”(h]”jzah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j8zh´M~hjzh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒunlink SAS remote PHY”h]”hŒunlink SAS remote PHY”…”�”}”(hjêzh²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çzh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjzh²hh³j8zh´M~ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj{jäj{jå‰jæ‰jç‰uh1jXh²hhjÛKh³Nh´Nubjé)�”}”(hŒ�**Parameters** ``struct sas_rphy *rphy`` SAS remote phy to unlink from its parent port **Description** Removes port reference to an rphy”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(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:276: ./drivers/scsi/scsi_transport_sas.c”h´M‚hj{ubj7)�”}”(hhh]”j<)�”}”(hŒH``struct sas_rphy *rphy`` SAS remote phy to unlink from its parent port ”h]”(jB)�”}”(hŒ``struct sas_rphy *rphy``”h]”jH)�”}”(hj+{h]”hŒstruct sas_rphy *rphy”…”�”}”(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:276: ./drivers/scsi/scsi_transport_sas.c”h´Mhj%{ubj^)�”}”(hhh]”hì)�”}”(hŒ-SAS remote phy to unlink from its parent port”h]”hŒ-SAS remote phy to unlink from its parent port”…”�”}”(hjD{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j@{h´MhjA{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ó)�”}”(hjf{h]”hŒ Description”…”�”}”(hjh{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjd{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�hj{ubhì)�”}”(hŒ!Removes port reference to an rphy”h]”hŒ!Removes port reference to an rphy”…”�”}”(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´M€hj{ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjÛKh²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒsas_rphy_remove (C function)”Œc.sas_rphy_remove”hNt”auh1jGhjÛKh²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ,void sas_rphy_remove (struct sas_rphy *rphy)”h]”jd)�”}”(hŒ+void sas_rphy_remove(struct sas_rphy *rphy)”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:276: ./drivers/scsi/scsi_transport_sas.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Œsas_rphy_remove”h]”j“)�”}”(hŒsas_rphy_remove”h]”hŒsas_rphy_remove”…”�”}”(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 sas_rphy *rphy)”h]”jÐ)�”}”(hŒstruct sas_rphy *rphy”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Œsas_rphy”h]”hŒsas_rphy”…”�”}”(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_rphy_remove”†”asbuh1hhjä{ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&|h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjä{ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj4|h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjä{ubj“)�”}”(hŒrphy”h]”hŒrphy”…”�”}”(hjA|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Œremove SAS remote PHY”h]”hŒremove SAS remote PHY”…”�”}”(hjk|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´MŒhjh|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ÛKh³Nh´Nubjé)�”}”(hŒ|**Parameters** ``struct sas_rphy *rphy`` SAS remote phy to remove **Description** Removes the specified SAS remote PHY.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(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:276: ./drivers/scsi/scsi_transport_sas.c”h´M�hj‡|ubj7)�”}”(hhh]”j<)�”}”(hŒ3``struct sas_rphy *rphy`` SAS remote phy to remove ”h]”(jB)�”}”(hŒ``struct sas_rphy *rphy``”h]”jH)�”}”(hj¬|h]”hŒstruct sas_rphy *rphy”…”�”}”(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:276: ./drivers/scsi/scsi_transport_sas.c”h´M�hj¦|ubj^)�”}”(hhh]”hì)�”}”(hŒSAS remote phy to remove”h]”hŒSAS remote phy to remove”…”�”}”(hjÅ|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÁ|h´M�hjÂ|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj¦|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jÁ|h´M�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³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´M�hj‡|ubhì)�”}”(hŒ%Removes the specified SAS remote PHY.”h]”hŒ%Removes the specified SAS remote PHY.”…”�”}”(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´MŽhj‡|ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjÛKh²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒscsi_is_sas_rphy (C function)”Œc.scsi_is_sas_rphy”hNt”auh1jGhjÛKh²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ/int scsi_is_sas_rphy (const struct device *dev)”h]”jd)�”}”(hŒ.int scsi_is_sas_rphy(const struct device *dev)”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:276: ./drivers/scsi/scsi_transport_sas.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_is_sas_rphy”h]”j“)�”}”(hŒscsi_is_sas_rphy”h]”hŒscsi_is_sas_rphy”…”�”}”(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´MªubjÊ)�”}”(hŒ(const struct device *dev)”h]”jÐ)�”}”(hŒconst struct device *dev”h]”(jj)�”}”(hj’Ph]”hŒconst”…”�”}”(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}ubjj)�”}”(hjmh]”hŒstruct”…”�”}”(hj„}h²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihje}ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘}h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hje}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 jO}sbŒc.scsi_is_sas_rphy”†”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Œdev”h]”hŒdev”…”�”}”(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´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Œ4check if a struct device represents a SAS remote PHY”h]”hŒ4check if a struct device represents a SAS remote PHY”…”�”}”(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´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ÛKh³Nh´Nubjé)�”}”(hŒ‡**Parameters** ``const struct device *dev`` device to check **Return** ``1`` if the device represents a SAS remote PHY, ``0`` else”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(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:276: ./drivers/scsi/scsi_transport_sas.c”h´M®hj#~ubj7)�”}”(hhh]”j<)�”}”(hŒ-``const struct device *dev`` device to check ”h]”(jB)�”}”(hŒ``const struct device *dev``”h]”jH)�”}”(hjH~h]”hŒconst struct device *dev”…”�”}”(hjJ~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjF~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´M«hjB~ubj^)�”}”(hhh]”hì)�”}”(hŒdevice to check”h]”hŒdevice to check”…”�”}”(hja~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j]~h´M«hj^~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjB~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j]~h´M«hj?~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj#~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³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´M­hj#~ubhì)�”}”(hŒ;``1`` if the device represents a SAS remote PHY, ``0`` else”h]”(jH)�”}”(hŒ``1``”h]”hŒ1”…”�”}”(hj�~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj™~ubhŒ, if the device represents a SAS remote PHY, ”…”�”}”(hj™~h²hh³Nh´NubjH)�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hj¯~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj™~ubhŒ else”…”�”}”(hj™~h²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#~ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjÛKh²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ!sas_attach_transport (C function)”Œc.sas_attach_transport”hNt”auh1jGhjÛKh²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒXstruct scsi_transport_template * sas_attach_transport (struct sas_function_template *ft)”h]”jd)�”}”(hŒVstruct scsi_transport_template *sas_attach_transport(struct sas_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:276: ./drivers/scsi/scsi_transport_sas.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Œscsi_transport_template”h]”hŒscsi_transport_template”…”�”}”(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 Œsas_attach_transport”sbŒc.sas_attach_transport”†”asbuh1hhjä~h²hh³jõ~h´Mubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjä~h²hh³jõ~h´Mubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjä~h²hh³jõ~h´Mubj�)�”}”(hŒsas_attach_transport”h]”j“)�”}”(hj%h]”hŒsas_attach_transport”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjCubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjä~h²hh³jõ~h´MubjÊ)�”}”(hŒ"(struct sas_function_template *ft)”h]”jÐ)�”}”(hŒ struct sas_function_template *ft”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Œsas_function_template”h]”hŒsas_function_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.sas_attach_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Œft”h]”hŒft”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hj^ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjZubah}”(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Œ"instantiate SAS transport template”h]”hŒ"instantiate SAS transport template”…”�”}”(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´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ÛKh³Nh´Nubjé)�”}”(hŒ\**Parameters** ``struct sas_function_template *ft`` SAS 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:276: ./drivers/scsi/scsi_transport_sas.c”h´Mhjÿubj7)�”}”(hhh]”j<)�”}”(hŒJ``struct sas_function_template *ft`` SAS transport class function template”h]”(jB)�”}”(hŒ$``struct sas_function_template *ft``”h]”jH)�”}”(hj$€h]”hŒ struct sas_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:276: ./drivers/scsi/scsi_transport_sas.c”h´Mhj€ubj^)�”}”(hhh]”hì)�”}”(hŒ%SAS transport class function template”h]”hŒ%SAS transport class function template”…”�”}”(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´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ÿubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjÛKh²hh³Nh´NubjH)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jTŒ"sas_release_transport (C function)”Œc.sas_release_transport”hNt”auh1jGhjÛKh²hh³Nh´NubjY)�”}”(hhh]”(j^)�”}”(hŒ>void 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”…”�”}”(hj~€h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjz€h²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�€h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjz€h²hh³jŒ€h´M{ubj�)�”}”(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Œhjz€h²hh³jŒ€h´M{ubjÊ)�”}”(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Éhjz€h²hh³jŒ€h´M{ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjv€h²hh³jŒ€h´M{ubah}”(h]”jq€ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³jŒ€h´M{hjs€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´M{hj;�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjs€h²hh³jŒ€h´M{ubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjV�jäjV�jå‰jæ‰jç‰uh1jXh²hhjÛKh³Nh´Nubjé)�”}”(hŒS**Parameters** ``struct scsi_transport_template *t`` transport template instance”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(hj`�h]”hŒ Parameters”…”�”}”(hjb�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj^�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:276: ./drivers/scsi/scsi_transport_sas.c”h´MhjZ�ubj7)�”}”(hhh]”j<)�”}”(hŒA``struct scsi_transport_template *t`` transport template instance”h]”(jB)�”}”(hŒ%``struct scsi_transport_template *t``”h]”jH)�”}”(hj�h]”hŒ!struct scsi_transport_template *t”…”�”}”(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:276: ./drivers/scsi/scsi_transport_sas.c”h´M�hjy�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´M|hj•�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjy�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j”�h´M�hjv�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjZ�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jèhjÛKh²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Œ ”…”�”}”(hj6‚h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj#‚h²hh³j5‚h´MÛubj�)�”}”(hŒ spi_dv_device”h]”j“)�”}”(hŒ spi_dv_device”h]”hŒ spi_dv_device”…”�”}”(hjH‚h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjD‚ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj#‚h²hh³j5‚h´MÛubjÊ)�”}”(hŒ(struct scsi_device *sdev)”h]”jÐ)�”}”(hŒstruct scsi_device *sdev”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_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 jJ‚sbŒc.spi_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”…”�”}”(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³j5‚h´MÛubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj‚h²hh³j5‚h´MÛubah}”(h]”j‚ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j5‚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³j5‚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”…”�”}”(hjAƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j=ƒh´MÜhj>ƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj"ƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j=ƒh´MÜhjƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjƒubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjcƒh]”hŒ Description”…”�”}”(hjeƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjaƒubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ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.”…”�”}”(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Ýhjyƒ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Œ#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”…”�”}”(hjH„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”…”�”}”(hjr„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=hjo„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_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´MAhjŽ„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&]”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:291: ./drivers/scsi/scsi_transport_spi.c”h´M@hjŽ„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´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Œ'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]”hŒstruct scsi_target *starget”…”�”}”(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´Mchj8†ubj^)�”}”(hhh]”hì)�”}”(hŒ-The target for which to display the agreement”h]”hŒ-The target for which to display the agreement”…”�”}”(hjW†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jS†h´MchjT†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj8†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jS†h´Mchj5†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj†ubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjy†h]”hŒ Description”…”�”}”(hj{†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjw†ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:291: ./drivers/scsi/scsi_transport_spi.c”h´Mehj†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.”…”�”}”(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´Mdhj†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Œ*”…”�”}”(hj3‡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”…”�”}”(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_cmnd”h]”hŒ scsi_cmnd”…”�”}”(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.spi_populate_tag_msg”†”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Œcmd”h]”hŒcmd”…”�”}”(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Œplace a tag message in a buffer”h]”hŒplace a tag message in a buffer”…”�”}”(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é)�”}”(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”…”�”}”(hj6ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j2ˆh´MÅhj3ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j2ˆh´MÅhjˆubj<)�”}”(hŒB``struct scsi_cmnd *cmd`` pointer to the scsi command for the tag ”h]”(jB)�”}”(hŒ``struct scsi_cmnd *cmd``”h]”jH)�”}”(hjVˆh]”hŒstruct scsi_cmnd *cmd”…”�”}”(hjXˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjTˆ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ÆhjPˆubj^)�”}”(hhh]”hì)�”}”(hŒ'pointer to the scsi command for the tag”h]”hŒ'pointer to the scsi command for the tag”…”�”}”(hjoˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jkˆh´MÆhjlˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjPˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jkˆh´MÆhjˆ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³Œ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”…”�”}”(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Œreconnect_delay”h]”hŒreconnect_delay”…”�”}”(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 fast_io_fail_tmo”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Œfast_io_fail_tmo”h]”hŒfast_io_fail_tmo”…”�”}”(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Œ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)�”}”(hj5Šh]”hŒint reconnect_delay”…”�”}”(hj7Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj3Š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.”…”�”}”(hjNŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jJŠh´KIhjKŠubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj/Šubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jJŠ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)�”}”(hjnŠh]”hŒint fast_io_fail_tmo”…”�”}”(hjpŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjlŠ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´KJhjhŠubj^)�”}”(hhh]”hì)�”}”(hŒ!Fast I/O fail timeout in seconds.”h]”hŒ!Fast I/O fail timeout in seconds.”…”�”}”(hj‡Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jƒŠh´KJhj„Šubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjhŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jƒŠ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Œ ”…”�”}”(hj6‹h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj#‹h²hh³j5‹h´Mðubj�)�”}”(hŒsrp_start_tl_fail_timers”h]”j“)�”}”(hŒsrp_start_tl_fail_timers”h]”hŒsrp_start_tl_fail_timers”…”�”}”(hjH‹h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjD‹ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhj#‹h²hh³j5‹h´MðubjÊ)�”}”(hŒ(struct srp_rport *rport)”h]”jÐ)�”}”(hŒstruct srp_rport *rport”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Œ 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 jJ‹sbŒc.srp_start_tl_fail_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Éhj#‹h²hh³j5‹h´Mðubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj‹h²hh³j5‹h´Mðubah}”(h]”j‹ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j5‹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³j5‹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.”…”�”}”(hjAŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j=Œh´Mñhj>Œubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj"Œubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j=Œh´MñhjŒubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjŒubhì)�”}”(hŒ**Description**”h]”jó)�”}”(hjcŒh]”hŒ Description”…”�”}”(hjeŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjaŒubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ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.”…”�”}”(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ò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Œ*”…”�”}”(hj1�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”…”�”}”(hjh�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ÿhje�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 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ó)�”}”(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´Mhj„�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&]”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ì)�”}”(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´Mhj„�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´Mhj„�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).”…”�”}”(hjAŽ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©jîwuh1jSh³j6Ž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_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”…”�”}”(hj|Žh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjxŽh²hh³Œb/var/lib/git/docbuild/linux/Documentation/driver-api/scsi:300: ./drivers/scsi/scsi_transport_srp.c”h´MQubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠŽh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjxŽh²hh³j‰Ž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”†”asbuh1hhjxŽh²hh³j‰Žh´MQubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼Žh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjxŽh²hh³j‰Ž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ŒhjxŽh²hh³j‰Ž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Œ*”…”�”}”(hj3�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ÉhjxŽh²hh³j‰Žh´MQubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjtŽh²hh³j‰Žh´MQubah}”(h]”joŽah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j‰Žh´MQhjqŽh²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ.SRP transport intercept of the SCSI timeout EH”h]”hŒ.SRP transport intercept of the SCSI timeout EH”…”�”}”(hjj�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´MQhjg�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhjqŽh²hh³j‰Žh´MQubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj‚�jäj‚�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ó)�”}”(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´MUhj†�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&]”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´MThj†�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´MShj†�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´MWhj†�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´MXhj†�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”…”�”}”(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´M�ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hja�h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjN�h²hh³j`�h´M�ubj�)�”}”(hŒ srp_rport_get”h]”j“)�”}”(hŒ srp_rport_get”h]”hŒ srp_rport_get”…”�”}”(hjs�h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjo�ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjN�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 ju�sbŒc.srp_rport_get”†”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ÉhjN�h²hh³j`�h´M�ubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjJ�h²hh³j`�h´M�ubah}”(h]”jE�ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j`�h´M�hjG�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ÀhjG�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.”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³Œ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)�”}”(hjS‘h]”hŒstruct srp_rport *rport”…”�”}”(hjU‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjQ‘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£hjM‘ubj^)�”}”(hhh]”hì)�”}”(hŒSRP target port.”h]”hŒSRP target port.”…”�”}”(hjl‘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ž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ψ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Œ*”…”�”}”(hj6’h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjæ‘ubj“)�”}”(hŒrport”h]”hŒrport”…”�”}”(hjC’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”…”�”}”(hjm’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§hjj’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.”h]”(hì)�”}”(hŒ**Parameters**”h]”jó)�”}”(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³Œ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_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Œ ”…”�”}”(hjH“h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj“h²hh³j“h´M±ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjV“h²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hj“h²hh³j“h´M±ubj�)�”}”(hŒ srp_rport_add”h]”j“)�”}”(hjE“h]”hŒ srp_rport_add”…”�”}”(hjg“h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjc“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”…”�”}”(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ú]”jC“Œ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Œ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Ïhjz“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ú]”jC“Œ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”…”�”}”(hjI”h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjî“ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjz“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”…”�”}”(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ãj‹”jäj‹”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”…”�”}”(hjm•h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hji•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{hji•h²hh³j{•h´Mìubj�)�”}”(hŒ srp_rport_del”h]”j“)�”}”(hŒ srp_rport_del”h]”hŒ srp_rport_del”…”�”}”(hjŽ•h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjŠ•ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhji•h²hh³j{•h´MìubjÊ)�”}”(hŒ(struct srp_rport *rport)”h]”jÐ)�”}”(hŒstruct srp_rport *rport”•avh]”(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Éhji•h²hh³j{•h´Mìubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hje•h²hh³j{•h´Mìubah}”(h]”j`•ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j{•h´Mìhjb•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Àhjb•h²hh³j{•h´Mìubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjE–jäjE–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ó)�”}”(hjO–h]”hŒ Parameters”…”�”}”(hjQ–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjM–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ðhjI–ubj7)�”}”(hhh]”j<)�”}”(hŒ6``struct srp_rport *rport`` SRP remote port to remove ”h]”(jB)�”}”(hŒ``struct srp_rport *rport``”h]”jH)�”}”(hjn–h]”hŒstruct srp_rport *rport”…”�”}”(hjp–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjl–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íhjh–ubj^)�”}”(hhh]”hì)�”}”(hŒSRP remote port to remove”h]”hŒSRP remote port to remove”…”�”}”(hj‡–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jƒ–h´Míhj„–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjh–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jƒ–h´Míhje–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjI–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ïhjI–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îhjI–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Œ ”…”�”}”(hj8—h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj'—ubh)�”}”(hhh]”j“)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hjI—h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjF—ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÝŒreftype”j Œ reftarget”jK—Œmodname”NŒ classname”Njôj÷)�”}”jú]”j )�”}”j j—sbŒc.srp_remove_host”†”asbuh1hhj'—ubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hji—h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj'—ubj% )�”}”(hj( h]”hŒ*”…”�”}”(hjw—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Œ+tear down a Scsi_Host's SRP data structures”h]”hŒ-tear down a Scsi_Host’s SRP data structures”…”�”}”(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À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”…”�”}”(hjo˜h²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j‘hjk˜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{hjk˜h²hh³j}˜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’hjŒ˜ubah}”(h]”h ]”(j¥j¦eh"]”h$]”h&]”jªj«uh1jŒhjk˜h²hh³j}˜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Éhjk˜h²hh³j}˜h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hjg˜h²hh³j}˜h´Mubah}”(h]”jb˜ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j}˜h´Mhjd˜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Àhjd˜h²hh³j}˜h´Mubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãjG™jäjG™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ó)�”}”(hjQ™h]”hŒ Parameters”…”�”}”(hjS™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjO™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´MhjK™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)�”}”(hjp™h]”hŒstruct srp_rport *rport”…”�”}”(hjr™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjn™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´Mhjj™ubj^)�”}”(hhh]”hì)�”}”(hŒ-SRP remote port for which to stop the timers.”h]”hŒ-SRP remote port for which to stop the timers.”…”�”}”(hj‰™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j…™h´Mhj†™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjj™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j…™h´Mhjg™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjK™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´MhjK™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´MhjK™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Œ ”…”�”}”(hj0š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”…”�”}”(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´M(ubjÊ)�”}”(hŒ"(struct srp_function_template *ft)”h]”jÐ)�”}”(hŒ struct srp_function_template *ft”h]”(jj)�”}”(hjmh]”hŒstruct”…”�”}”(hjjšh²hh³Nh´Nubah}”(h]”h ]”jvah"]”h$]”h&]”uh1jihjfšubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwšh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjfšubh)�”}”(hhh]”j“)�”}”(hŒsrp_function_template”h]”hŒsrp_function_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.srp_attach_transport”†”asbuh1hhjfšubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦šh²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hjfšubj% )�”}”(hj( h]”hŒ*”…”�”}”(hj´šh²hh³Nh´Nubah}”(h]”h ]”j1 ah"]”h$]”h&]”uh1j$ hjfšubj“)�”}”(hŒft”h]”hŒft”…”�”}”(hjÁšh²hh³Nh´Nubah}”(h]”h ]”jžah"]”h$]”h&]”uh1j’hjfšubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjªj«uh1jÏhjbš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”…”�”}”(hjE›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)hjB›ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj&›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³jA›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”…”�”}”(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´MZubj|)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•›h²hh³Nh´Nubah}”(h]”h ]”jˆah"]”h$]”h&]”uh1j{hj‚›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Œhj‚›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Éhj‚›h²hh³j”›h´MZubeh}”(h]”h ]”h"]”h$]”h&]”jªj«j²ˆuh1jcj³j´hj~›h²hh³j”›h´MZubah}”(h]”jy›ah ]”(j¸j¹eh"]”h$]”h&]”j½ˆj¾)j¿huh1j]h³j”›h´MZhj{›h²hubjÁ)�”}”(hhh]”hì)�”}”(hŒ'release SRP transport template instance”h]”hŒ'release SRP transport template instance”…”�”}”(hjEœ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´MZhjBœh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÀhj{›h²hh³j”›h´MZubeh}”(h]”h ]”(jÝŒfunction”eh"]”h$]”h&]”jâjÝjãj]œjäj]œ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ó)�”}”(hjgœh]”hŒ Parameters”…”�”}”(hjiœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjeœ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^hjaœubj7)�”}”(hhh]”j<)�”}”(hŒA``struct scsi_transport_template *t`` transport template instance”h]”(jB)�”}”(hŒ%``struct scsi_transport_template *t``”h]”jH)�”}”(hj†œh]”hŒ!struct scsi_transport_template *t”…”�”}”(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Œ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]hj€œubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³j›œh´M`hj}œubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjaœ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 ”…”�”}”(hjJ�h²hh³Nh´Nubj‚)�”}”(hŒ%http://sg.danny.cz/sg/scsi_debug.html”h]”hŒ%http://sg.danny.cz/sg/scsi_debug.html”…”�”}”(hjR�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”jT�uh1j�hjJ�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”…”�”}”(hjr�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjo�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...”…”�”}”(hj€�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MNhjo�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¡ijû°jø°jþ³jû³j Íj ÍjùÐjöÐjÜjÜjDÜjAÜjGßjDßj†õjƒõj– j“ jÔœjÑœjê.jç.jØKjÕKjÅ�jÂ�jì�jé�j̈jɈjÌœjÉœj£�j �j›�j˜�jl�ji�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‰jû°‰jþ³‰j ͉jùЉj܉jD܉jG߉j†õ‰j– ‰jÔœ‰jê.‰jØK‰jÅ�‰jì�‰j̈‰jÌœ‰j£�‰j›�‰jl�‰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Þcjgjgjø°j§ijÒij×ijLkjQkj¥pjªpjØrjÝrjëujðujxjxjÜzjázj7|j<|j¸}j½}j9j>jÔ„jÙ„jÜŠjáŠjì�jñ�j�j�jF’jK’j”j„”j&—j+—jϘjÔ˜jišjnšj œj%œjsžjxžjä jé jt¢jy¢jŒ¥j‘¥j·¦j¼¦jU©jZ©jó«jø«j6®j;®jû³jþ°j)±j.±jª²j¯²j Íj´j,´j1´jòµj÷µj£·j¨·j?¹jD¹jµºjººj¼j¼jk½jp½j†¿j‹¿j˜Âj�ÂjtÅjyÅjæÈjëÈjËjËjÌjÌjöÐjÍjPÍjUÍjüÎjÏjþÏjÐjÜjüÐj'Ñj,Ñj ÓjÓj¡Öj¦Öj£Új¨ÚjAÜj ÜjDßjGÜjrÜjwÜjÍÝjÒÝjƒõjJßjußjzßjÐàjÕàjÝãjâãjfæjkæj=èjBèjÓéjØéj.ëj3ëj‰ìjŽìjÞîjãîj9ðj>ðjVòj[òj“ j‰õj´õj¹õjúöjÿöjùøjþøj6ûj;ûj!þj&þjþjj¯j´j/j4jÑœj¡ jç.jÀ jë jð j2 j7 jVj[j~jƒjj jLjQjSjXjAjFjKjPj‹"j�"jÒ$j×$j'j'j»(jÀ(jc*jh*j@-jE-jÕKjí.j/j/j¬0j±0j&4j+4jÛ7jà7jç:jì:jÜ<já<j]>jb>jÞ?jã?j_AjdAjàBjåBjaDjfDjæFjëFjgHjlHjèIjíIjÂ�jÛKj0Lj5Lj±Mj¶MjYOj^OjíPjòPjŠRj�Rj TjTjŒUj‘Uj WjWj�Yj†Yj[j[j´\j¹\j5^j:^jñ_jö_jbbjgbjedjjdjæejëej˜gj�gjijijÕjjÚjjkljplj•njšnj¿pjÄpjÆrjËrjiujnujêvjïvjœxj¡xjzj"zjž{j£{j}j$}jÛ~jà~jq€jv€jé�jÈ�jɈjï�j‚j‚j¥ƒjªƒj0…j5…j±†j¶†jÉœjψjúˆjÿˆj‹j‹j›Œj ŒjoŽjtŽjE�jJ�j ‘j¥‘jû’j“j`•je•já–jæ–jb˜jg˜jã™jè™jy›j~›j �jßœj˜�jðœji�j�j��jo�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.