On Thu, 2011-12-01 at 04:23 -0500, Christoph Hellwig wrote: > If we can remove the per-device queue depth checking a lot of this > could be simplified even further, leading to less lock contention > and atomic: > > - once the queue depth check is gone this means we will always process > all tasks transport_execute_tasks, aka if we always allow all tasks > to go through and never touch a queue, or we need to add all of them. Mmmm, yes. LUN_RESET is still walking the execute_task list to prevent task I/O from being submitted + to determine when to return aborted status. Adding a check in transport_execute_task() to determine when LUN_RESET is occuring would address this bit, but I still need to consider how handle this. > - from that follows that we do not have to queue up tasks at all, > we can move to queueing up commands instead, and only do so if > ordered commands exist Of course this would still require a method for pSCSI backends handling I/O with ->max_sectors smaller than the received fabric I/O. Doing this internally in pSCSI code still sounds kinda messy, but getting iblock and everything else to not allocate se_task would be a nice optimization.. > - once we only queue up command all the tasks lists in the device > can go away - we can always batch operations on the tasks by going > to the command first. <nod> Dropping the execute_task_list all-together in favor of individual se_task associated se_cmd submission is what i'll look to test with soon on qla_tgt-3.3 code. Thanks Christoph! --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