Hi Christoph Sorry for delayed response. On 06/22/2018 11:10 PM, Christoph Hellwig wrote: > On Thu, Jun 21, 2018 at 04:22:22PM +0800, jianchao.wang wrote: >>> Trace, please. With the latest kernel. I'm not saying that there >>> is nothing to fix, but the mode of never completing once timeout >>> requests as currently done is SCSI is clearly broken. >>> >> >> I didn't find the existing method to simulate this. >> So I modified the scsi-debug as following patch as install it as following: >> modprobe scsi-debug delay=-1 ndelay=-1 >> Both 4.17-rc1 and 4.18-rc1 with this patch set could survive from the test. > > What tree is this against? I can't apply it to either current Linus' > tree or 4.17 for that matter. I made the patch against 4.18.rc1. > Also I'm not sure this blk_abort_request call is representative > of the real world. Drivers do drain their queues before calling > it in general, e.g. take a look at ata_eh_set_pending for the > probably most common user. > This blk_abort_request here is to force request timed out and simulate the scenario where timeout path and io completion path could occur concurrently. It is hard for me to trigger this scenario in real world, so I made this patch which may looks bad. What I want is to trigger the io completion and timeout path concurrently. Thanks Jianchao