[PATCH] - fusion - mptfc bug fix's to prevent deadlock situations

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Here are various fix to prevent deadlock situations, forwarded from
Micheal Reed.

This patch applies over the patch I posted earlier this week:
http://marc.theaimsgroup.com/?l=linux-scsi&m=114529941516391&w=2

------------------------------------------------------------------------
--------
Changelog:

mptbase.h

	bump version number to 3.03.09

	remove unneeded flags
	define workq and remove old fc specific locks

mptbase.c

	initialize new lock and don't initialize two removed locks

mptscsih.c

	when firmware reports target is no longer there, return
DID_REQUEUE
	for fc hosts so that i/o doesn't get killed until the transport
	has an opportunity to manage the loss via its dev loss timer

	when the "eh_abort" routine is called, check to see if the
driver
	has the command or not before looking to see if a reset is
pending.
	James Smart and I talked about this and believe that the API for
	this routine is: if driver doesn't have command, return SUCCESS.
	This change helps prevent a target from being taken offline.
	SUCCESS is returned because it's likely that the command
completed
	after error recovery timed it out but before it could be
aborted.

	provide a routine to queue work to newly created workq, and use
it.

	remove "ioc" from mptscsih_abort()
	it was only used one time.  the other references
	were via hd->ioc, so I just moved it....
	net change in references to ioc via hd->ioc is zero

	move hd->resetPending test and hd->timeouts increment to after 
	the test for whether the command to be aborted remains known to
	the driver

	Make certain that the workq exists before queuing work to it.

mptfc.c

	no longer need to lock rport data structures as I was able to
	single thread the code!  I fixed up the debug code to eliminate
	compilation messages due to type mismatch in the printk.  Got
rid
	of some no longer needed rport flags.  Initialize and destroy
the
	workq used for the rescan work.

	simplify the logic regarding the increment of
fc_rescan_work_count.
	use post increment and test for zero vs. pre increment and test
	for one; eliminate work_count variable: queue_work can be called
	with the work_lock held as it doesn't sleep


Signed-off-by: Michael Reed <mdr@xxxxxxx>
Signed-off-by: Eric Moore <Eric.Moore@xxxxxxxx>

Attachment: mptfc.new.patch
Description: mptfc.new.patch


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux