Re: [PATCH v4 23/37] target: Remove the write_pending_status() callback function

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

 



On Fri, 2017-02-10 at 01:11 +0000, Bart Van Assche wrote:
> On Thu, 2017-02-09 at 17:06 -0800, Nicholas A. Bellinger wrote:
> > qla2xxx must wait until the CTIO hw completion for the outstanding WRITE
> > transfer is finished, before the abort can continue processing.
> > 
> > This change and the previous changes ignore all of that.
> 
> Incorrect. My patches wait for the CTIO hw completion.
> 

Looking at your -v4 and -v5 changes, this doesn't appear to be the
case.

Let's walk through how it works in the existing code, yes..?

So a LUN_RESET occurs in tmr_wq context for a particular se_cmd and
CMD_T_ABORTED is set, while a qla2xxx CTIO for WRITE transfer is still
outstanding to ISP HW.

Since the se_cmd is !CMD_T_ACTIVE while it's owned by the fabric driver
once se_cmd->se_tfo->write_pending() has been called to perform the
transfer, the normal transport_wait_for_tasks() code-path will not block
on se_cmd->t_transport_stop_cmp because CMD_T_ACTIVE is not set.

>From there, transport_cmd_finish_abort() proceeds to block waiting for
CTIO interrupt completion in tcm_qla2xxx_handle_data_work() to occur,
and subsequently completes se_cmd->t_transport_stop_cmp to allow
CMD_T_ABORT in tmr_wq context to proceed, et al.

With v4 and v5 changes, tmr_wq blocks on a new cmd->[finished,complete]
completion after CMD_T_STOP has been set.  CTIO interrupts fire for the
outstanding WRITE transfer, and tcm_qla2xxx_handle_data_work() returns
immediately for the aborted qla_tgt_cmd->se_cmd.

How can that possibly allow the aborted command to continue
processing..?

--
To unsubscribe from this list: send the line "unsubscribe target-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux SCSI]     [Kernel Newbies]     [Linux SCSI Target Infrastructure]     [Share Photos]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Device Mapper]

  Powered by Linux