- 06 6月, 2015 6 次提交
-
-
由 James Smart 提交于
Signed-off-by: NDick Kennedy <dick.kennedy@avagotech.com> Signed-off-by: NJames Smart <james.smart@avagotech.com> Reviewed-by: NHannes Reinecke <hare@suse.de> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 James Smart 提交于
Signed-off-by: NDick Kennedy <dick.kennedy@avagotech.com> Signed-off-by: NJames Smart <james.smart@avagotech.com> Reviewed-by: NHannes Reinecke <hare@suse.de> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 James Smart 提交于
Signed-off-by: NDick Kennedy <dick.kennedy@avagotech.com> Signed-off-by: NJames Smart <james.smart@avagotech.com> Reviewed-by: NHannes Reinecke <hare@suse.de> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 James Smart 提交于
Also has a little whitespace fixing. Signed-off-by: NDick Kennedy <dick.kennedy@avagotech.com> Signed-off-by: NJames Smart <james.smart@avagotech.com> Reviewed-by: NHannes Reinecke <hare@suse.de> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 James Smart 提交于
Fix incorrect reference counting Signed-off-by: NDick Kennedy <dick.kennedy@avagotech.com> Signed-off-by: NJames Smart <james.smart@avagotech.com> Reviewed-by: NHannes Reinecke <hare@suse.de> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 James Smart 提交于
The order (it's a shall, but hard to dictate after the fact) is given in FC-SCM - kind of. SCM indicates what shall be implemented, lists it as (a), (b), (c), but actually doesn't say it has to be in that order. The only hard requirement, called out in FCP-4, is that you must register your FC-4 Type (via RFT_ID) before registering FC-4 Type Features (via RFF_ID), which makes sense. We obviously violated this and there were some switches (or newer fw in them) that enforced it. The other rule of thumbs are: register your data with the switch first, then register for SCRs, then do queries about the fabric, with the SCRs telling you of changes post the queries. Signed-off-by: NDick Kennedy <dick.kennedy@avagotech.com> Signed-off-by: NJames Smart <james.smart@avagotech.com> Reviewed-by: NHannes Reinecke <hare@suse.de> Reviewed-by: NSebastian Herbszt <herbszt@gmx.de> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
- 03 6月, 2015 14 次提交
-
-
由 Sagi Grimberg 提交于
When creating a new endpoint, we look for a free id for the new endpoint. We baisically loop on possible ids and use the first id that class_find_device() returns NULL. However, we are missing a reference put when class_find_device() does find an existing device for a given id. Reported-by: NAlex Lyakas <alex@zadarastorage.com> Signed-off-by: NSagi Grimberg <sagig@mellanox.com> Reviewed-by: NMike Christie <michaelc@cs.wisc.edu> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 James Bottomley 提交于
non-x86 builds want the #warning in the IPS code about compiling on the wrong architecture removed because it keeps triggering on their platforms build farms. Transform from a compile time warning into a runtime one with taint to preserve the original intent of the authors. Acked-by: NArnd Bergmann <arnd@arndb.de> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Nilesh Javali 提交于
The driver waits for command completion event while cleanup of task within the frwd lock and back locks. The frwd lock was still held which caused the call trace while issuing a device reset. Release the frwd lock along with the back lock to avoid waiting in the lock context. Signed-off-by: NNilesh Javali <nilesh.javali@qlogic.com> Reviewed-by: NMike Christie <michaelc@cs.wisc.edu> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Tej Parkash 提交于
Fix the firmware assert, during target logout in case driver received FIN from target before waiting for asyncronous response. Signed-off-by: NTej Parkash <tej.parkash@qlogic.com> Signed-off-by: NNilesh Javali <nilesh.javali@qlogic.com> Reviewed-by: NMike Christie <michaelc@cs.wisc.edu> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Yaniv Gardi 提交于
Newer revisions of QUALCOMM Technologies UFS host controller may not advertise the correct version information in UFS HCI VER register. To handle this, enable UFSHCD_QUIRK_BROKEN_UFS_HCI_VERSION to let UFS standard host controller driver call into vendor specific operation to get right UFS HCI VER register value. Signed-off-by: NYaniv Gardi <ygardi@codeaurora.org> Reviewed-by: NAkinobu Mita <akinobu.mita@gmail.com> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Yaniv Gardi 提交于
Some host controller hardware controllers may not advertise correct version in UFS HCI VER register. To workaround this, add new quirk and call the host controller hardware vendor specific callback to get the correct UFS HCI version register value. Signed-off-by: NYaniv Gardi <ygardi@codeaurora.org> Reviewed-by: NAkinobu Mita <akinobu.mita@gmail.com> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Yaniv Gardi 提交于
Current version of host controller on QUALCOMM Technologies requires this quirk to be enabled, as DME commands to device must be sent only in AUTO mode (SLOW AUTO or FAST AUTO). Signed-off-by: NYaniv Gardi <ygardi@codeaurora.org> Reviewed-by: NAkinobu Mita <akinobu.mita@gmail.com> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Yaniv Gardi 提交于
Some UFS host controllers may only allow accessing the peer DME attribute in AUTO mode (FAST AUTO or SLOW AUTO) hence we had added a quirk for switching to AUTO power mode before accessing the peer DME attribute. Signed-off-by: NYaniv Gardi <ygardi@codeaurora.org> Reviewed-by: NAkinobu Mita <akinobu.mita@gmail.com> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Yaniv Gardi 提交于
With the G3 UFS devices, changing gear into HS is failing in UFS host controllers of version 0x2. The quirk solves the problem of changing gear into HS by enabling the attribute that specifies whether or not the inbound Link supports unterminated line in HS mode. Signed-off-by: NYaniv Gardi <ygardi@codeaurora.org> Reviewed-by: NAkinobu Mita <akinobu.mita@gmail.com> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Yaniv Gardi 提交于
The attribute PA_RXHSUNTERMCAP specifies whether or not the inbound Link supports unterminated line in HS mode. enabling this attribute to 1 fixes moving to HS gear. Signed-off-by: NYaniv Gardi <ygardi@codeaurora.org> Reviewed-by: NAkinobu Mita <akinobu.mita@gmail.com> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Yaniv Gardi 提交于
LCC (Line Control Command) are being used for communication between UFS host and UFS device. But UFS host controller on QUALCOMM Technologies have an issue with issuing the LCC commands to UFS device and hence this quirk is enabled in order to to disable LCC from the host side. Signed-off-by: NYaniv Gardi <ygardi@codeaurora.org> Reviewed-by: NAkinobu Mita <akinobu.mita@gmail.com> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Yaniv Gardi 提交于
LCC (Line Control Command) are being used for communication between UFS host and UFS device. New commercial UFS devices don't have the issues with LCC processing but UFS host controller might still have the issue with LCC processing, hence, added a routine to disable TX LCC on the device. Signed-off-by: NYaniv Gardi <ygardi@codeaurora.org> Reviewed-by: NAkinobu Mita <akinobu.mita@gmail.com> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Yaniv Gardi 提交于
Current versions of UFS host controllers on QUALCOMM Technologies have interrupt aggregation logic broken. Interrupt aggregation may not work if both threshold count and timeout is enabled. Hence disable interrupt aggregation by enabling UFSHCD_QUIRK_BROKEN_INTR_AGGR quirk until its fixed in the newer UFS host controller revisions. Signed-off-by: NYaniv Gardi <ygardi@codeaurora.org> Reviewed-by: NAkinobu Mita <akinobu.mita@gmail.com> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Yaniv Gardi 提交于
UFS HCI (Host Controller Interface) allows the transfer requests interrupts to be aggregated to generate the single interrupt but this can impact the performance. Hence introduce the capability which gives choice to use the interrupt aggregation capability or not. By default interrupt aggregation capability is kept disabled. This change also introduces a quirk for broken interrupt aggregation feature, as in some UFS controllers, this feature may not work. Signed-off-by: NYaniv Gardi <ygardi@codeaurora.org> Reviewed-by: NAkinobu Mita <akinobu.mita@gmail.com> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
- 02 6月, 2015 2 次提交
-
-
由 Brian King 提交于
Increase the default init stage change timeout from 15 seconds to 30 seconds. This resolves issues we have seen with some adapters not transitioning to the first init stage within 15 seconds, which results in adapter initialization failures. Cc: <stable@vger.kernel.org> Signed-off-by: NBrian King <brking@linux.vnet.ibm.com> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Seymour, Shane M 提交于
This patch implements tape statistics in the st module via sysfs. Current no statistics are available for tape I/O and there is no easy way to reuse the block layer statistics for tape as tape is a character device and does not have perform I/O in sector sized chunks (the size of the data written to tape can change). For tapes we also need extra stats related to things like tape movement (via other I/O). There have been multiple end users requesting statistics including AT&T (and some HP customers who have not given permission to be named). It is impossible for them to investigate any issues related to tape performance in a non-invasive way. [jejb: eliminate PRId64] Signed-off-by: NShane Seymour <shane.seymour@hp.com> Tested-by: NShane Seymour <shane.seymour@hp.com> Reviewed-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
- 01 6月, 2015 18 次提交
-
-
由 Bart Van Assche 提交于
Move the functions that are used by both the initiator and target subsystems into scsi_common.c/.h. This change will allow to remove the initiator SCSI header include directives from most SCSI target source files in a later patch. Signed-off-by: NBart Van Assche <bart.vanassche@sandisk.com> Reviewed-by: NHannes Reinecke <hare@suse.de> Reviewed-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
megaraid_sas : Modify return value of megasas_issue_blocked_cmd() and wait_and_poll() to consider command status returned by firmware This patch is rebased on top of recently sent 18 patches(submitted by me) for megaraid_sas driver. Change the return value of wait_and_poll() and megsas_issue_blocked_cmd() based on MFI_STAT returned by firmware for that command. Earlier driver always send return type based on command completion (but never check MFI_STAT_OK for that command), so even if command is failed by firmware still driver will return SUCCESS status from these functions wait_and_poll() and megsas_issue_blocked_cmd() and if caller of these functions does not check command status (MFI_STAT), then it may endup using invalid data returned in DMA buffers(one of the example is megasas_ld_list_query DCMD). Best thing to avoid this type of issue is do error handling and set proper return type from caller function wait_and_poll() and megsas_issue_blocked_cmd(). The change proposed in this patch will fix the regression introduced in patch- "90dc9d98 megaraid_sas : MFI MPT linked list corruption fix" inside function megasas_ld_list_query(). Prior to this MFI MPT linked list corruption fix patch, megasas_ld_list_query() function used to check DCMD status(returned by firmware) but with this linked list corruption fix patch, DCMD status will not be checked inside function megasas_ld_list_query() and introduced this issue of wrong data being used by function megasas_ld_list_query(). Cc: <stable@vger.kernel.org> Signed-off-by: NKashyap Desai <kashyap.desai@avagotech.com> Signed-off-by: NSumit Saxena <sumit.saxena@avagotech.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Hannes Reinecke 提交于
'0' is now used as the default cmd_per_lun value, so there's no need to explicitly set it to '1' in the host template. Signed-off-by: NHannes Reinecke <hare@suse.de> Reviewed-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Don Brace 提交于
update driver version Reviewed-by: NScott Teel <scott.teel@pmcs.com> Reviewed-by: NKevin Barnett <kevin.barnett@pmcs.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Reviewed-by: NHannes Reinecke <hare@Suse.de> Signed-off-by: NDon Brace <don.brace@pmcs.com> Reviewed-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Don Brace 提交于
add in support for latest PMC controller Reviewed-by: NScott Teel <scott.teel@pmcs.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Reviewed-by: NHannes Reinecke <hare@Suse.de> Signed-off-by: NDon Brace <don.brace@pmcs.com> Reviewed-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Webb Scales 提交于
Synchronize completion the reset with completion of outstanding commands Extending the newly-added synchronous abort functionality, now also synchronize resets with the completion of outstanding commands. Rename the wait queue to reflect the fact that it's being used for both types of waits. Also, don't complete commands which are terminated due to a reset operation. fix for controller lockup during reset Reviewed-by: NScott Teel <scott.teel@pmcs.com> Reviewed-by: NKevin Barnett <kevin.barnett@pmcs.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Reviewed-by: NHannes Reinecke <hare@Suse.de> Signed-off-by: NWebb Scales <webbnh@hp.com> Signed-off-by: NDon Brace <don.brace@pmcs.com> Reviewed-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Robert Elliott 提交于
If hpsa_wait_for_board_state fails, hpsa_kdump_soft_reset should propagate its return value (e.g., -ENODEV) rather than just returning -1. Reviewed-by: NScott Teel <scott.teel@pmcs.com> Reviewed-by: NKevin Barnett <kevin.barnett@pmcs.com> Reviewed-by: NHannes Reinecke <hare@Suse.de> Signed-off-by: NRobert Elliott <elliott@hp.com> Signed-off-by: NDon Brace <don.brace@pmcs.com> Reviewed-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Robert Elliott 提交于
Rather than numbering the hpsa controllers with an incrementing 0..n value (e.g., that shows up in /proc/interrupts), use the scsi midlayer host_no (e.g. matching /sys/class/scsi_host/hostNN). Reviewed-by: NScott Teel <scott.teel@pmcs.com> Reviewed-by: NKevin Barnett <kevin.barnett@pmcs.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Reviewed-by: NHannes Reinecke <hare@Suse.de> Signed-off-by: NRobert Elliott <elliott@hp.com> Signed-off-by: NDon Brace <don.brace@pmcs.com> Reviewed-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Webb Scales 提交于
Rework slave allocation: - separate the tagging support setup from the hostdata setup - make the hostdata setup act consistently when the lookup fails - make the hostdata setup act consistently when the device is not added - set up the queue depth consistently across these scenarios - if the block layer mq support is not available, explicitly enable and activate the SCSI layer tcq support (and do this at allocation-time so that the tags will be available for INQUIRY commands) Tweak slave configuration so that devices which are masked are also not attached. Reviewed-by: NScott Teel <scott.teel@pmcs.com> Reviewed-by: NKevin Barnett <kevin.barnett@pmcs.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Reviewed-by: NHannes Reinecke <hare@Suse.de> Signed-off-by: NWebb Scales <webbnh@hp.com> Signed-off-by: NDon Brace <don.brace@pmcs.com> Reviewed-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Robert Elliott 提交于
Add the interrupt number to the interrupt names that appear in /proc/interrupts, so they are unique Also, delete the IRQ and DAC prints. Other parts of the kernel already print the IRQ assignments, and dual-address-cycle support has not been interesting since the parallel PCI bus went from 32 to 64 bits wide. Reviewed-by: NScott Teel <scott.teel@pmcs.com> Reviewed-by: NKevin Barnett <kevin.barnett@pmcs.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Reviewed-by: NHannes Reinecke <hare@Suse.de> Signed-off-by: NRobert Elliott <elliott@hp.com> Signed-off-by: NDon Brace <don.brace@pmcs.com> Reviewed-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Robert Elliott 提交于
Don't create the resubmit workqueue in hpsa_init_one until everything else is ready to use, so everything can be freed in reverse order of when they were allocated without risking freeing things while workqueue items are still active. Destroy the workqueue in the right order in hpsa_undo_allocations_after_kdump_soft_reset too. Reviewed-by: NScott Teel <scott.teel@pmcs.com> Reviewed-by: NKevin Barnett <kevin.barnett@pmcs.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Reviewed-by: NHannes Reinecke <hare@Suse.de> Signed-off-by: NRobert Elliott <elliott@hp.com> Signed-off-by: NDon Brace <don.brace@pmcs.com> Reviewed-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Robert Elliott 提交于
If registering the special interrupt handlers in hpsa_init_one before a soft reset fails, the error exit needs to deallocate everything that was allocated before. Reviewed-by: NScott Teel <scott.teel@pmcs.com> Reviewed-by: NKevin Barnett <kevin.barnett@pmcs.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Reviewed-by: NHannes Reinecke <hare@Suse.de> Signed-off-by: NRobert Elliott <elliott@hp.com> Signed-off-by: NDon Brace <don.brace@pmcs.com> Reviewed-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Robert Elliott 提交于
In hpsa_undo_allocations_after_kdump_soft_reset, the things allocated in hpsa_init_one step 2 - h->resubmit_wq and h->lockup_detected need to be freed, in the right order. Reviewed-by: NScott Teel <scott.teel@pmcs.com> Reviewed-by: NKevin Barnett <kevin.barnett@pmcs.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Reviewed-by: NHannes Reinecke <hare@Suse.de> Signed-off-by: NRobert Elliott <elliott@hp.com> Signed-off-by: NDon Brace <don.brace@pmcs.com> Reviewed-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Robert Elliott 提交于
If try_soft_reset fails to re-allocate irqs, the error exit starts with free_irq calls, which generate kernel WARN messages since they were already freed a few lines earlier. Jump to the next exit label to skip the free_irq calls. Reviewed-by: NScott Teel <scott.teel@pmcs.com> Reviewed-by: NKevin Barnett <kevin.barnett@pmcs.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Reviewed-by: NHannes Reinecke <hare@Suse.de> Signed-off-by: NRobert Elliott <elliott@hp.com> Signed-off-by: NDon Brace <don.brace@pmcs.com> Reviewed-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Robert Elliott 提交于
Despite the fact that PCI devices are enabled in this order: 1. pci_enable_device 2. pci_request_regions Documentation/PCI/pci.txt specifies that they be undone in this order 1. pci_disable_device 2. pci_release_regions Tested by injecting error in the call to pci_enable_device in hpsa_init_one -> hpsa_pci_init: [ 9.095001] hpsa 0000:04:00.0: failed to enable PCI device [ 9.095005] hpsa: probe of 0000:04:00.0 failed with error -22 (-22 is -EINVAL) and then in the call pci_request_regions: [ 9.178623] hpsa 0000:04:00.0: failed to obtain PCI resources [ 9.178671] hpsa: probe of 0000:04:00.0 failed with error -16 (-16 is -EBUSY) and then by adding reset_devices to the kernel command line and inject errors into the two calls to pci_enable_device and the call to pci_request_regions in hpsa_init_one -> hpsa_init_reset_devices. (inject on 6th call, 1st to hpsa2) [ 62.413750] hpsa 0000:04:00.0: Failed to enable PCI device (inject on 7th call, 2nd to hpsa2) [ 62.807571] hpsa 0000:04:00.0: failed to enable device. (inject on 8th call, 3rd to hpsa2) [ 62.697198] hpsa 0000:04:00.0: failed to obtain PCI resources [ 62.697234] hpsa: probe of 0000:04:00.0 failed with error -16 The reset_devices path calls return -ENODEV on failure rather than passing the result, which apparently doesn't cause the pci driver to print anything. Reviewed-by: NScott Teel <scott.teel@pmcs.com> Reviewed-by: NKevin Barnett <kevin.barnett@pmcs.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Reviewed-by: NHannes Reinecke <hare@Suse.de> Signed-off-by: NRobert Elliott <elliott@hp.com> Signed-off-by: NDon Brace <don.brace@pmcs.com> Reviewed-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Webb Scales 提交于
Divide the loop in hpsa_scatter_gather() into two, one for the initial SG list and a second one for the chained list, if any. This allows the conditional check which resets the indicies for the chained list to be performed outside the loop instead of being done on every iteration inside the loop. Reviewed-by: NScott Teel <scott.teel@pmcs.com> Reviewed-by: NKevin Barnett <kevin.barnett@pmcs.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Reviewed-by: NHannes Reinecke <hare@Suse.de> Signed-off-by: NWebb Scales <webbnh@hp.com> Signed-off-by: NDon Brace <don.brace@pmcs.com> Reviewed-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Webb Scales 提交于
Factor out the code which sends the TEST_UNIT_READY from wait_for_device_to_become_ready() into its own function. Move the code which waits for the TEST_UNIT_READY from wait_for_device_to_become_ready() into its own function. If a logical drive has failed, resetting it will ensure outstanding commands are completed, but polling it with TURs after the reset will not work because the TURs will never report good status. So successful TUR should not be a condition of success for the device reset error handler. Reviewed-by: NScott Teel <scott.teel@pmcs.com> Reviewed-by: NKevin Barnett <kevin.barnett@pmcs.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Reviewed-by: NHannes Reinecke <hare@Suse.de> Signed-off-by: NWebb Scales <webbnh@hp.com> Signed-off-by: NDon Brace <don.brace@pmcs.com> Reviewed-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-
由 Webb Scales 提交于
Don't return from the abort request until the target command is complete. Mark outstanding commands which have a pending abort, and do not send them to the host if we can avoid it. If the current command has been aborted, do not call the SCSI command completion routine from the I/O path: when the abort returns successfully, the SCSI mid-layer will handle the completion implicitly. The following race was possible in theory. 1. LLD is requested to abort a scsi command 2. scsi command completes 3. The struct CommandList associated with 2 is made available. 4. new io request to LLD to another LUN re-uses struct CommandList 5. abort handler follows scsi_cmnd->host_scribble and finds struct CommandList and tries to aborts it. Now we have aborted the wrong command. Fix by resetting the scsi_cmd field of struct CommandList upon completion and making the abort handler check that the scsi_cmd pointer in the CommadList struct matches the scsi_cmnd that it has been asked to abort. Reviewed-by: NScott Teel <scott.teel@pmcs.com> Reviewed-by: NKevin Barnett <kevin.barnett@pmcs.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Reviewed-by: NHannes Reinecke <hare@Suse.de> Signed-off-by: NWebb Scales <webbnh@hp.com> Signed-off-by: NDon Brace <don.brace@pmcs.com> Reviewed-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
-