summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* [SCSI] zfcp: Move code for managing zfcp_unit devices to new fileChristof Schmitt2010-09-166-213/+279
| | | | | | | | | | | Move the code for managing zfcp_unit devices to the new file zfcp_unit.c. This is in preparation for the change that zfcp_unit will only track the LUNs configured via unit_add, other data will be moved from zfcp_unit to the new struct zfcp_scsi_dev. Reviewed-by: Swen Schillig <swen@vnet.ibm.com> Signed-off-by: Christof Schmitt <christof.schmitt@de.ibm.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
* [SCSI] zfcp: Add zfcp private struct as SCSI device driver dataChristof Schmitt2010-09-162-0/+42
| | | | | | | | | | Add a new data structure zfcp_scsi_dev that holds zfcp private data for each SCSI device. Use scsi_transport_reserve_device to let the SCSI midlayer automatically allocate this with each SCSI device. Reviewed-by: Swen Schillig <swen@vnet.ibm.com> Signed-off-by: Christof Schmitt <christof.schmitt@de.ibm.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
* [SCSI] ibmvfc: Log link up/down eventsBrian King2010-09-162-24/+56
| | | | | | | | | | | By default, ibmvfc does not log any async events in order to avoid flooding the log with them. Improve on this by logging by default events that are not likely to flood the log, such as link up/down. Having these events in the log will improve the ability to debug issues with ibmvfc. Signed-off-by: Brian King <brking@linux.vnet.ibm.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
* [SCSI] qla2xxx: ROM lock recovery if fw hangs while holding the lock.Shyam Sundar2010-09-161-3/+36
| | | | | Signed-off-by: Giridhar Malavali <giridhar.malavali@qlogic.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
* [SCSI] aacraid: semaphore cleanupThomas Gleixner2010-09-162-2/+2
| | | | | | | | Get rid of init_MUTEX[_LOCKED]() and use sema_init() instead. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Cc: aacraid@adaptec.com Signed-off-by: James Bottomley <James.Bottomley@suse.de>
* [SCSI] scsi_debug: Convert to use root_device_register() and ↵Nicholas Bellinger2010-09-161-17/+8
| | | | | | | | | | | | | | | | | | | | | | root_device_unregister() This patch updates the scsi_debug virtual LLD to use root_device_register() and root_device_unregister() from include/linux/device.h instead of device_register() and device_unregister() respectively within scsi_debug_init() and scsi_debug_exit() This simply involved converting the static struct device pseudo_primary into a pointer that is setup by the call to root_device_register(). This patch also contains the correct IS_ERR() conditional check of root_device_register() from within scsi_debug_init(). Thanks to Richard Sharpe and Dmitry Torokhov for their help with this item. Signed-off-by: Nicholas A. Bellinger <nab@linux-iscsi.org> Acked-by: Douglas Gilbert <dgilbert@interlog.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
* [SCSI] scsi_transport_fc: fix blocked bsg request when fc object deletedJames Smart2010-09-091-0/+43
| | | | | | | | | | | | | | When an rport is "blocked" and a bsg request is received, the bsg request gets placed on the queue but the queue stalls. If the fc object is then deleted - the bsg queue never restarts and keeps the reference on the object, and stops the overall teardown. This patch restarts the bsg queue on teardown and drains any pending requests, allowing the teardown to succeed. Signed-off-by: Carl Lajeunesse <carl.lajeunesse@emulex.com> Signed-off-by: James Smart <james.smart@emulex.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
* [SCSI] zfcp: Reorder registration of initial SCSI deviceChristof Schmitt2010-09-091-1/+2
| | | | | | | | | | Make sure that the rport registration did complete and then register SCSI device directly. Otherwise the unit_enqueue would race with the call to zfcp_scsi_queue_unit_register. Reviewed-by: Swen Schillig <swen@vnet.ibm.com> Signed-off-by: Christof Schmitt <christof.schmitt@de.ibm.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
* [SCSI] ipr: reverse the isr optimization changesWayne Boyer2010-09-091-30/+33
| | | | | | | | | | | | | | | | | | The isr optimization patch that was submitted a few months ago exposed problems with receiving and handling spurious HRRQ interrutps. commit 64ffdb762241c0a9c0c8fac7ea92aa0ba1529334 Author: Wayne Boyer <wayneb@linux.vnet.ibm.com> Date: Wed May 19 11:56:13 2010 -0700 [SCSI] ipr: improve interrupt service routine performance That patch is reverted with this one. A new patch will be submitted once the issue is better understood and properly handled in the driver. Signed-off-by: Wayne Boyer <wayneb@linux.vnet.ibm.com> Acked-by: Brian King <brking@linux.vnet.ibm.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
* [SCSI] scsi_debug: Update thin provisioning supportMartin K. Petersen2010-09-091-31/+69
| | | | | | | | | | | | | | | | The previous thin provisioning support was not very user friendly because it depended on all the relevant options being set on the command line. Implement support for the Thin Provisioning VPD page from SBC3 r24 and add module options for TPU (UNMAP) and TPWS (WRITE SAME (16) with UNMAP bit). This allows us to have sane default and to enable thin provisioning with a simple tpu=1 or tpws=1 on the command line depending on whether we want UNMAP or WRITE SAME behavior. Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> Acked-by: Douglas Gilbert <dgilbert@interlog.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
* [SCSI] fix kconfig dependency warnings related to SCSI_SAS_ATTRSRandy Dunlap2010-09-091-1/+2
| | | | | | | | | Fix kconfig dependency warnings in scsi/Kconfig: warning: (SCSI_SAS_LIBSAS && SCSI || SCSI_MPT2SAS && SCSI_LOWLEVEL && PCI && SCSI || FUSION_SAS && FUSION && PCI && SCSI) selects SCSI_SAS_ATTRS which has unmet direct dependencies (SCSI && BLK_DEV_BSG) Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
* [SCSI] pm8001: handle allocation failuresDan Carpenter2010-09-091-0/+6
| | | | | | | | Return -ENOMEM if the allocations fail. Signed-off-by: Dan Carpenter <error27@gmail.com> Acked-by: Jack Wang <jack_wang@usish.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
* [SCSI] iscsi transport: fix kernel-doc notationRandy Dunlap2010-09-091-1/+1
| | | | | | | | | | Fix typo in scsi_transport_iscsi.c kernel-doc notation: Warning(drivers/scsi/scsi_transport_iscsi.c:548): No description found for parameter 'cmd' Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com> Acked-by: Mike Christie <michaelc@cs.wisc.edu> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
* [SCSI] qla2xxx: AER Support-Return recovered from mmio_enable function for 82XX.Saurav Kashyap2010-09-051-0/+3
| | | | | | | Return recovered from pci_mmio_enabled function if it is 82XX. Signed-off-by: Giridhar Malavali <giridhar.malavali@qlogic.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
* [SCSI] qla2xxx: Increase SG table size to support large IO size per scsi ↵Giridhar Malavali2010-09-052-2/+12
| | | | | | | | | | command. The sg table size is increased from 128 to 1024 to support multiple sg lists and number of sg elements per scsi command. Signed-off-by: Giridhar Malavali <giridhar.malavali@qlogic.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
* [SCSI] qla2xxx: Clear local references of rport on device loss timeout ↵Giridhar Malavali2010-09-051-9/+9
| | | | | | | | | | | notification from FC transport. The clearing of local references to rport was blocked when abort is active. This code clears the local references unconditionaly upon device loss timeout callback from FC transport. Signed-off-by: Giridhar Malavali <giridhar.malavali@qlogic.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
* [SCSI] qla2xxx: Handle MPI timeout indicated by AE8002Madhuranath Iyengar2010-09-055-1/+107
| | | | | | | | | | In case the MPI times out, the FW issues an async event AE8002 to indicate this to every FCoE function. The FC/FCoE driver is required to handle this, by doing a soft reset and issuing a Write MPI register mailbox command to reset the MPI. Signed-off-by: Giridhar Malavali <giridhar.malavali@qlogic.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
* [SCSI] qla2xxx: Update to AER support, do early abort commands.Lalit Chandivade2010-09-052-9/+13
| | | | | | | | | | | | Currently the IOs are returned back in slot reset, this could be late and can cause error handler to invoke. If error handler invokes, eh_abort fails and escalate to device/bus/host resets causing issues. The commands need to be returned back to upper layer in io_error_detected. Signed-off-by: Giridhar Malavali <giridhar.malavali@qlogic.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
* [SCSI] qla2xxx: Cleanup some dead-code and make some functions static.Giridhar Malavali2010-09-053-199/+202
| | | | | Signed-off-by: Giridhar Malavali <giridhar.malavali@qlogic.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
* [SCSI] qla2xxx: Return proper fabric name based on device state.Giridhar Malavali2010-09-051-5/+5
| | | | | Signed-off-by: Giridhar Malavali <giridhar.malavali@qlogic.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
* [SCSI] qla2xxx: Added AER support for ISP82xx.Lalit Chandivade2010-09-053-5/+138
| | | | | Signed-off-by: Giridhar Malavali <giridhar.malavali@qlogic.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
* [SCSI] qla2xxx: Pass first 64 bytes of MBX information when vendor commands ↵Giridhar Malavali2010-09-051-3/+2
| | | | | | | fail. Signed-off-by: Giridhar Malavali <giridhar.malavali@qlogic.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
* [SCSI] qla2xxx: Don't issue set or get port param MBC if port is not online.Giridhar Malavali2010-09-052-4/+6
| | | | | Signed-off-by: Giridhar Malavali <giridhar.malavali@qlogic.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
* [SCSI] scsi/block: increase flush/sync timeoutMike Christie2010-09-052-2/+3
| | | | | | | | | | | | | | | | | | We have been seeing the flush request timeout with a wide range of hardware from tgt+iser to FC targets from a major vendor. After discussions about if the value should be configurable and what the best value should be, this patch just increases the flush/sync cache timeout to 1 minute. 2 minutes was determined to be too long, and making it configurable was troublesome for users. This patch was made over Linus's tree. It is not made over scsi-misc or scsi-rc-fixes, because Linus's had block layer changes that my patch was built over. Signed-off-by: Mike Christie <michaelc@cs.wisc.edu> Acked-by: Jens Axboe <jaxboe@fusionio.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
* [SCSI] drivers/message/fusion: Return -ENOMEM on memory allocation failureJulia Lawall2010-09-051-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | In this code, 0 is returned on memory allocation failure, even though other failures return -ENOMEM or other similar values. A simplified version of the semantic match that finds this problem is as follows: (http://coccinelle.lip6.fr/) // <smpl> @@ expression ret; expression x,e1,e2,e3; @@ ret = 0 ... when != ret = e1 *x = \(kmalloc\|kcalloc\|kzalloc\)(...) ... when != ret = e2 if (x == NULL) { ... when != ret = e3 return ret; } // </smpl> Signed-off-by: Julia Lawall <julia@diku.dk> Acked-by: "Desai, Kashyap" <Kashyap.Desai@lsi.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
* [SCSI] bnx2i: Updated version to bnx2i-2.1.3Eddie Wai2010-09-051-3/+5
| | | | | | | Also updated maintainer info. Signed-off-by: Eddie Wai <eddie.wai@broadcom.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
* [SCSI] bnx2i: Added chip cleanup for the remove module pathEddie Wai2010-09-052-20/+37
| | | | | | | | | | | | | | | In the case when an ep_connect request is interrupted due to route request stall, if the iSCSI daemon is terminated by the user, the chip will be left in a state which will not get cleaned up upon module removal. Upon module reload, when the same context id is used for a new connection, chip panic would occur. This patch adds chip cleanup in the module removal path. Signed-off-by: Eddie Wai <eddie.wai@broadcom.com> Acked-by: Benjamin Li <benli@broadcom.com> Reviewed-by: Mike Christie <michaelc@cs.wisc.edu> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
* [SCSI] bnx2i: Recouple the CFC delete cleanup with cm_abort/close completionEddie Wai2010-09-051-4/+6
| | | | | | | | | | | | Specific to the Broadcom 10g chipset, the CFC delete operation must be coupled with the cm_abort/close with does the SRC delete/terminate offload operation prior. Signed-off-by: Eddie Wai <eddie.wai@broadcom.com> Reviewed-by: Michael Chan <mchan@broadcom.com> Acked-by: Benjamin Li <benli@broadcom.com> Reviewed-by: Mike Christie <michaelc@cs.wisc.edu> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
* [SCSI] bxn2i: Added support for other TMFs besides ABORT_TASKEddie Wai2010-09-051-28/+30
| | | | | | | | | | | Expanded the TMF request routine to support other TMFs such as LUN RESET, etc. Signed-off-by: Eddie Wai <eddie.wai@broadcom.com> Reviewed-by: Anil Veerabhadrappa <anilgv@broadcom.com> Reviewed-by: Benjamin Li <benli@broadcom.com> Reviewed-by: Mike Christie <michaelc@cs.wisc.edu> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
* [SCSI] bnx2i: Fixed a protocol violation on nopout responsesEddie Wai2010-09-053-6/+3
| | | | | | | | | According to RFC3720, nopout packet sent in response to unsolicited nopin packet requesting a response must retain the TTT of the requester. Signed-off-by: Eddie Wai <eddie.wai@broadcom.com> Reviewed-by: Mike Christie <michaelc@cs.wisc.edu> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
* [SCSI] ipr: Driver version 2.5.1Wayne Boyer2010-09-051-2/+2
| | | | | | | Bump the driver version. Signed-off-by: Wayne Boyer <wayneb@linux.vnet.ibm.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
* [SCSI] ipr: fix resource address formatting and add attribute for device IDWayne Boyer2010-09-052-2/+45
| | | | | | | | | | | This patch fixes a resource address formatting problem where the first byte was being zeroed out. Also, the device ID is now made available as a sysfs attribute. Signed-off-by: Wayne Boyer <wayneb@linux.vnet.ibm.com> Acked-by: Brian King <brking@linux.vnet.ibm.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
* [SCSI] cxgb3i: change cxgb3i to use libcxgbikxie@chelsio.com2010-09-0517-5142/+1488
| | | | | | Signed-off-by: Karen Xie <kxie@chelsio.com> Reviewed-by: Mike Christie <michaelc@cs.wisc.edu> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
* [SCSI] cxgb4i v5: iscsi driverkxie@chelsio.com2010-09-058-0/+1652
| | | | | | | | | | | | | | | Added cxgb4i iSCSI driver. This patch implements the cxgb4i iscsi connection acceleration for the open-iscsi initiator. The cxgb4i driver offers the iscsi PDU based offload: - digest insertion and verification - payload direct-placement into host memory buffer. Signed-off-by: Karen Xie <kxie@chelsio.com> Reviewed-by: Mike Christie <michaelc@cs.wisc.edu> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
* [SCSI] libcxgbi: common library for cxgb3i and cxgb4ikxie@chelsio.com2010-09-052-0/+3363
| | | | | | | | | | | | [PATCH v5 1/3] libcxgbi: common library for cxgb3i and cxgb4i From: Karen Xie <kxie@chelsio.com> Extracts common functions to libcxgbi. Signed-off-by: Karen Xie <kxie@chelsio.com> Reviewed-by: Mike Christie <michaelc@cs.wisc.edu> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
* [SCSI] lpfc: change spin_lock_irq() to spin_lock()Dan Carpenter2010-09-051-5/+5
| | | | | | | | | | | | In lpfc_cleanup_pending_mbox() we already have IRQs disabled so we don't need to disable them again. Also in lpfc_sli_intr_handler() there is a typo where it has spin_unlock_irq() instead of just spin_unlock(). Signed-off-by: Dan Carpenter <error27@gmail.com> Acked-by: James Smart <james.smart@emulex.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
* [SCSI] drivers/scsi: Adjust confusing if indentationJulia Lawall2010-09-052-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Outdent the code following the if. The semantic match that finds this problem is as follows: (http://coccinelle.lip6.fr/) // <smpl> @r disable braces4@ position p1,p2; statement S1,S2; @@ ( if (...) { ... } | if (...) S1@p1 S2@p2 ) @script:python@ p1 << r.p1; p2 << r.p2; @@ if (p1[0].column == p2[0].column): cocci.print_main("branch",p1) cocci.print_secs("after",p2) // </smpl> Signed-off-by: Julia Lawall <julia@diku.dk> Acked-by: Nick Cheng <nick.cheng@areca.com.tw> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
* [SCSI] ibmvfc: do not reset dev_loss_tmo in slave calloutMike Christie2010-09-051-3/+7
| | | | | | | | | | | This fixes a bug where the driver was resetting the rport dev_loss_tmo when devices were added by adding support for the get_host_def_dev_loss_tmo callout. Patch has only been compile tested. Signed-off-by: Mike Christie <michaelc@cs.wisc.edu> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
* [SCSI] fnic: do not reset dev_loss_tmo in slave calloutMike Christie2010-09-051-4/+10
| | | | | | | | | | | This fixes a bug where the driver was resetting the rport dev_loss_tmo when devices were added by adding support for the get_host_def_dev_loss_tmo callout. Patch has only been compile tested. Signed-off-by: Mike Christie <michaelc@cs.wisc.edu> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
* [SCSI] lpfc: do not reset dev_loss_tmo in slave calloutMike Christie2010-09-052-10/+10
| | | | | | | | | This fixes a bug where the driver was resetting the rport dev_loss_tmo when devices were added by adding support for the get_host_def_dev_loss_tmo callout. Signed-off-by: Mike Christie <michaelc@cs.wisc.edu> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
* [SCSI] qla2xxx: do not reset dev_loss_tmo in slave calloutMike Christie2010-09-052-5/+11
| | | | | | | | | This fixes a bug where the driver was resetting the rport dev_loss_tmo when devices were added by adding support for the get_host_def_dev_loss_tmo callout. Signed-off-by: Mike Christie <michaelc@cs.wisc.edu> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
* [SCSI] fc class: add fc host default default dev loss settingMike Christie2010-09-052-1/+9
| | | | | | | | | | | This patch adds a fc_host setting to store the default dev_loss_tmo. It is used if the driver has a callack to get the value from the LLD. If the callback is not set, then we use the fc class module default value. Signed-off-by: Mike Christie <michaelc@cs.wisc.edu> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
* Linux 2.6.36-rc3v2.6.36-rc3Linus Torvalds2010-08-291-1/+1
|
* Merge branch 'for-linus' of ↵Linus Torvalds2010-08-295-26/+50
|\ | | | | | | | | | | | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6: firewire: ohci: work around VIA and NEC PHY packet reception bug firewire: core: do not use del_timer_sync() in interrupt context firewire: net: fix unicast reception RCODE in failure paths firewire: sbp2: fix stall with "Unsolicited response" firewire: sbp2: fix memory leak in sbp2_cancel_orbs or at send error ieee1394: Adjust confusing if indentation
| * firewire: ohci: work around VIA and NEC PHY packet reception bugStefan Richter2010-08-291-1/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | VIA VT6306, VIA VT6308, and NEC OrangeLink controllers do not write packet event codes for received PHY packets (or perhaps write evt_no_status, hard to tell). Work around it by overwriting the packet's ACK by ack_complete, so that upper layers that listen to PHY packet reception get to see these packets. (Also tested: TI TSB82AA2, TI TSB43AB22/A, TI XIO2213A, Agere FW643, JMicron JMB381 --- these do not exhibit this bug.) Clemens proposed a quirks flag for that, IOW whitelist known misbehaving controllers for this workaround. Though to me it seems harmless enough to enable for all controllers. The log_ar_at_event() debug log will continue to show the original status from the DMA unit. Reported-by: Clemens Ladisch <clemens@ladisch.de> (VT6308) Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
| * firewire: core: do not use del_timer_sync() in interrupt contextClemens Ladisch2010-08-191-3/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | Because we might be in interrupt context, replace del_timer_sync() with del_timer(). If the timer is already running, we know that it will clean up the transaction, so we do not need to do any further processing in the normal transaction handler. Many thanks to Yong Zhang for diagnosing this. Reported-by: Stefan Richter <stefanr@s5r6.in-berlin.de> Signed-off-by: Clemens Ladisch <clemens@ladisch.de> Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
| * firewire: net: fix unicast reception RCODE in failure pathsStefan Richter2010-08-191-13/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The incoming request hander fwnet_receive_packet() expects subsequent datagram handling code to return non-zero on errors. However, almost none of the failure paths did so. Fix them all. (This error reporting is used to send and RCODE_CONFLICT_ERROR to the sender node in such failure cases. Two modes of failure exist: Out of memory, or firewire-net is unaware of any peer node to which a fragment or an ARP packet belongs. However, it is unclear whether a sender can actually make use of such information. A Linux peer apparently can't. Maybe it should all be simplified to void functions.) Reported-by: Julia Lawall <julia@diku.dk> Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
| * firewire: sbp2: fix stall with "Unsolicited response"Stefan Richter2010-08-191-3/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix I/O stalls with some 4-bay RAID enclosures which are based on OXUF936QSE: - Onnto dataTale RSM4QO, old firmware (not anymore with current firmware), - inXtron Hydra Super-S LCM, old as well as current firmware when used in RAID-5 mode, perhaps also in other RAID modes. The stalls happen during heavy or moderate disk traffic in periods that are a multiple of 5 minutes, roughly twice per hour. They are caused by the target responding too late to an ORB_Pointer register write: The target responds after Split_Timeout, hence firewire-core cancels the transaction, and firewire-sbp2 fails the SCSI request. The SCSI core retries the request, that fails again (and again), hence SCSI core calls firewire-sbp2's abort handler (and even the Management_Agent register write in the abort handler has the transaction timeout problem). During all that, the process which issued the I/O is stalled in I/O wait state. Meanwhile, the target actually acts on the first failed SCSI request: It responds to the ORB_Pointer write later (seen in the kernel log as "firewire_core: Unsolicited response") and also finishes the SCSI request with proper status (seen in the kernel log as "firewire_sbp2: status write for unknown orb"). So let's just ignore RCODE_CANCELLED in the transaction callback and wait for the target to complete the ORB nevertheless. This requires a small modification is sbp2_cancel_orbs(); it now needs to call orb->callback() regardless whether fw_cancel_transaction() found the transaction unfinished or finished. A different solution is to increase Split_Timeout on the local node. (Tested: 2000ms timeout; maybe 1000ms or something like that works too. 200ms is insufficient. Standard is 100ms.) However, I rather not do this because any software on any node could change the Split_Timeout to something unsuitable. Or such a large Split_Timeout may be undesirable for other purposes. Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
| * firewire: sbp2: fix memory leak in sbp2_cancel_orbs or at send errorStefan Richter2010-08-191-5/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When an ORB was canceled (Command ORB i.e. SCSI request timed out, or Management ORB timed out), or there was a send error in the initial transaction, we missed to drop one of the ORB's references and thus leaked memory. Background: In total, we hold 3 references to each Operation Request Block: - 1 during sbp2_scsi_queuecommand() or sbp2_send_management_orb() respectively, - 1 for the duration of the write transaction to the ORB_Pointer or Management_Agent register of the target, - 1 for as long as the ORB stays within the lu->orb_list, until the ORB is unlinked from the list and the orb->callback was executed. The latter one of these 3 references is finished - normally by sbp2_status_write() when the target wrote status for a pending ORB, - or by sbp2_cancel_orbs() in case of an ORB time-out, - or by complete_transaction() in case of a send error. Of them, the latter two lacked the kref_put. Add the missing kref_put()s. Add comments to the gets and puts of references for transaction callbacks and ORB callbacks so that it is easier to see what is supposed to happen. Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
| * ieee1394: Adjust confusing if indentationJulia Lawall2010-08-051-1/+1
| | | | | | | | | | | | | | Indent the branch of an if. Signed-off-by: Julia Lawall <julia@diku.dk> Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
OpenPOWER on IntegriCloud