Vasu Dev a0cc1ecc09 [SCSI] libfc: fix a circular locking warning during sending RRQ
Currently the fc_exch_rrq is called with fc_exch's ex_lock held.
The fc_exch_rrq allocates new exch and that requires taking
ex_lock again after EM lock. This locking order causes warning,
see more details on this warning at :-

 http://www.open-fcoe.org/pipermail/devel/2009-July/003251.html

This patch fixes this by dropping the ex_lock before calling
fc_exch_rrq().

The fc_exch_rrq needs to grab ex_lock lock again to schedule
RRQ retry and in the meanwhile fc_exch_reset could occur before
ex_lock is grabbed inside fc_exch_rrq. So to handle this case,
this patch adds additional check to detect fc_exch_reset after
ex_lock acquired and in case the fc_exch_reset occurred then
abandons the RRQ retry and releases the exch.

Signed-off-by: Vasu Dev <vasu.dev@intel.com>
Signed-off-by: Robert Love <robert.w.love@intel.com>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
2009-07-30 08:50:02 -05:00
..
2009-07-12 12:22:34 -07:00
2009-07-12 12:22:34 -07:00
2009-07-12 12:22:34 -07:00
2009-06-16 19:50:13 -07:00
2009-06-17 09:35:24 -07:00
2009-07-12 12:22:34 -07:00
2009-07-12 12:22:34 -07:00
2009-07-15 00:03:56 +01:00
2009-07-12 12:22:34 -07:00
2009-07-03 15:45:29 +01:00
2009-07-12 12:22:34 -07:00
2009-07-12 12:22:34 -07:00
2009-06-30 18:56:00 -07:00
2009-07-08 10:15:41 +03:00
2009-07-12 12:22:34 -07:00
2009-06-18 13:04:04 -07:00
2009-06-15 16:47:25 +10:00
2009-07-06 13:57:03 -07:00
2009-06-30 18:56:00 -07:00
2009-07-12 12:22:34 -07:00
2009-07-01 11:19:47 +02:00
2009-06-18 13:04:04 -07:00
2009-06-18 13:04:04 -07:00