Re: [PATCH 00/13] initial workqueue conversion

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

 



On Mon, 2011-10-17 at 13:56 -0400, Christoph Hellwig wrote:
> This series starts converting the target core to use workqueues instead
> of a single processing thread per device.  The first conversion is
> for the I/O completions for the backend drivers, as these are much
> easier without having to deal with HEAD OF QUEUE attributes and similar.
> 
> The actual conversion is the last patch, and the rest is preparation
> that I stumbled over while doing this work.  Most notable the first
> two change the per-command QUEUE FULL handling in a slightly less agressive
> way than my previous attempt.

I've been running this with tcm_loop, qla2xxx and iscsi-target on -rc10
and so far so good..

One thing i've noticed with tcm_qla2xxx using the new workqueue based
completion logic is that tcm_qla2xxx_release_cmd() (called from
TRANSPORT_FREE_CMD_INTR context) is having to wait on
qla_tgt_cmd->cmd_stop_free_comp once every few seconds during sustained
I/O while tcm_qla2xxx_check_stop_free() finishes running from
transport_cmd_check_stop() -> TFO->check_stop_free() in workqueue
context.

This is the case where a HW fabric module is able to send a response via
TFO->queue_[data_in,status](), receive an acknowledgement, and call
transport_generic_free_cmd() before target_complete_ok_work() ->
transport_cmd_check_stop() has been called.  The main problem here is
still transport_cmd_check_stop() doing all the active shutdown I/O
accounting + taking too long, causing the transport_generic_free_cmd()
path to have to sometimes do the extra wait + context switch for it's
completion.

I don't have a good idea how to completely resolve this inefficiency yet
w/o completely breaking the active I/O shutdown logic, but at least
pushing it out of fabric modules and into target-core generic code is
something that we should consider for the short term..  tcm_qla2xxx and
ib_srpt are the two that do internal checking to make sure descriptors
are not released before TFO->check_stop_free() has been called, but I
don't see a reason why this can't be made common..

--nab

--
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