Re: [PATCH 3/3] tcmu: remove cmd timeout code

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

 



On 03/08/2017 10:22 PM, Nicholas A. Bellinger wrote:
> On Wed, 2017-03-08 at 20:16 -0800, Nicholas A. Bellinger wrote:
>> On Wed, 2017-03-08 at 12:02 -0600, Mike Christie wrote:
> 
> <SNIP>
> 
>>>
>>> My tcmu-runner plan was:
>>>
>>> 1. For hung commands, we are going to add callouts to the backend module
>>> for TMFs. target_core_tmr.c would call them during TMFs like ABORT_TASK
>>> to have the backend perform the TMF. target_core_user would then call
>>> into tcmu-runner and that would call into the userspace handler.
>>>
>>
>> Mmmm.  This would mean TMRs would function very different between TCMU
>> and non TCMU backends..

Do we ever want support for that? I actually started implementing
support so lio backends like iblock could call into the initiator
driver's error handlers:

http://www.spinics.net/lists/linux-scsi/msg97064.html

For tcmu, your idea below works nicely. I will work on it. Thanks.

>>
>> We've always had the assumption that once a TMR is processed, code
>> blocks until the backend completes outstanding se_cmd(s) in question
>> without an explicit cancellation trigger.
>>
>> One approach I've taken for a out-of-tree make_request_fn() based bio
>> driver is return bios with -EAGAIN if a bio takes more than say 3
>> seconds to complete, in order to signal to IBLOCK to propagate up a
>> SAM_STAT_BUSY or SAM_STAT_QUEUE_FULL.  This ends up working quite well
>> to keep initiators happy, and virtually eliminates spurious TMRs in host
>> environments (like ESX for example) with a very low SCSI timeout. 
>>
>> Of course, this pushes alot of smarts into the driver below the backend,
>> but in a distributed scale out backend where I/Os delays, et al. are a
>> fact of life this is difficult to avoid.
>>
>> So that said, I'd prefer to have TCMU's user-space code return back I/Os
>> that are expected to take a long time with SAM_STAT_BUSY or
>> SAM_STAT_QUEUE_FULL (to reduce host queue_depth), instead of adding a
>> explicit se_cmd cancellation mechanism in target-core into backend
>> driver code.
>>
>> I'd be happy to post the target-core changes needed to do this, which
>> where posted at one point but ended up not getting merged. 
> 
> Btw, here is the patch in question:
> 
> http://www.spinics.net/lists/target-devel/msg11835.html
>
--
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