Re: [PATCH 5/5] blk-mq: Rework blk-mq timeout handling again

2018-07-27 Thread Bart Van Assche
On Fri, 2018-07-27 at 11:58 -0600, Keith Busch wrote: > Instead of PATCH 1/5, how about creating a new timeout return code like > "BLK_EH_DONT_COMPLETE"? That sounds like a good idea to me. I think this approach will avoid that we have to introduce a request queue flag that chooses between the

Re: [PATCH 5/5] blk-mq: Rework blk-mq timeout handling again

2018-07-27 Thread Keith Busch
On Fri, Jul 27, 2018 at 05:14:18PM +, Bart Van Assche wrote: > On Fri, 2018-07-27 at 11:04 -0600, Keith Busch wrote: > > On Fri, Jul 27, 2018 at 04:59:34PM +, Bart Van Assche wrote: > > > On Fri, 2018-07-27 at 10:57 -0600, Keith Busch wrote: > > > > You skip that code if the driver returns

Re: [PATCH 5/5] blk-mq: Rework blk-mq timeout handling again

2018-07-27 Thread Bart Van Assche
On Fri, 2018-07-27 at 11:04 -0600, Keith Busch wrote: > On Fri, Jul 27, 2018 at 04:59:34PM +, Bart Van Assche wrote: > > On Fri, 2018-07-27 at 10:57 -0600, Keith Busch wrote: > > > You skip that code if the driver returns BLK_EH_DONT_RESET_TIMER. > > > > How about applying the following patch

Re: [PATCH 5/5] blk-mq: Rework blk-mq timeout handling again

2018-07-27 Thread Keith Busch
On Fri, Jul 27, 2018 at 04:59:34PM +, Bart Van Assche wrote: > On Fri, 2018-07-27 at 10:57 -0600, Keith Busch wrote: > > You skip that code if the driver returns BLK_EH_DONT_RESET_TIMER. > > How about applying the following patch on top of this series? That works for me if you, but it breaks

Re: [PATCH 5/5] blk-mq: Rework blk-mq timeout handling again

2018-07-27 Thread Bart Van Assche
On Fri, 2018-07-27 at 10:57 -0600, Keith Busch wrote: > You skip that code if the driver returns BLK_EH_DONT_RESET_TIMER. How about applying the following patch on top of this series? diff --git a/block/blk-mq.c b/block/blk-mq.c index a97ab5ba9d18..aa66535604fd 100644 --- a/block/blk-mq.c +++

Re: [PATCH 5/5] blk-mq: Rework blk-mq timeout handling again

2018-07-27 Thread Keith Busch
On Fri, Jul 27, 2018 at 04:51:05PM +, Bart Van Assche wrote: > On Fri, 2018-07-27 at 10:46 -0600, Keith Busch wrote: > > On Fri, Jul 27, 2018 at 09:20:42AM -0700, Bart Van Assche wrote: > > > + ret = req->q->mq_ops->timeout(req, reserved); > > > + /* > > > + * BLK_EH_DONT_RESET_TIMER means

Re: [PATCH 5/5] blk-mq: Rework blk-mq timeout handling again

2018-07-27 Thread Bart Van Assche
On Fri, 2018-07-27 at 10:46 -0600, Keith Busch wrote: > On Fri, Jul 27, 2018 at 09:20:42AM -0700, Bart Van Assche wrote: > > + ret = req->q->mq_ops->timeout(req, reserved); > > + /* > > +* BLK_EH_DONT_RESET_TIMER means that the block driver either > > +* completed the request or still

Re: [PATCH 5/5] blk-mq: Rework blk-mq timeout handling again

2018-07-27 Thread Keith Busch
On Fri, Jul 27, 2018 at 09:20:42AM -0700, Bart Van Assche wrote: > + ret = req->q->mq_ops->timeout(req, reserved); > + /* > + * BLK_EH_DONT_RESET_TIMER means that the block driver either > + * completed the request or still owns the request and will > + * continue processing

[PATCH 5/5] blk-mq: Rework blk-mq timeout handling again

2018-07-27 Thread Bart Van Assche
Recently the blk-mq timeout handling code was reworked to avoid that completions that occur while a timeout handler is in progress get ignored. However, that rework removed the protection against completions that occur while a timeout handler is in progress. Fix this by introducing a new request