Searched hist:a0cc1ecc098e31d03b3265712a3e280a7fabf438 (Results 1 – 1 of 1) sorted by relevance
/linux/drivers/scsi/libfc/ |
H A D | fc_exch.c | diff a0cc1ecc098e31d03b3265712a3e280a7fabf438 Wed Jul 29 02:33:37 CEST 2009 Vasu Dev <vasu.dev@intel.com> [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>
|