Re: [PATCH 6/6] blk-mq: remove REQ_ATOM_STARTED

2017-12-13 Thread jianchao.wang
On 12/14/2017 12:09 AM, Tejun Heo wrote: > Hello, > > On Wed, Dec 13, 2017 at 11:05:11AM +0800, jianchao.wang wrote: >> Just don't quite understand the strict definition of "generation" you said. >> A allocation->free cycle is a generation ? or a idle->in-flight cycle is a >> generation? The idl

Re: [PATCH 6/6] blk-mq: remove REQ_ATOM_STARTED

2017-12-13 Thread Tejun Heo
Hello, On Wed, Dec 13, 2017 at 11:05:11AM +0800, jianchao.wang wrote: > Just don't quite understand the strict definition of "generation" you said. > A allocation->free cycle is a generation ? or a idle->in-flight cycle is a > generation? The idle->in-flight cycle could include the requeue case as

Re: [PATCH 6/6] blk-mq: remove REQ_ATOM_STARTED

2017-12-12 Thread jianchao.wang
Hi tejun On 12/13/2017 01:26 AM, Tejun Heo wrote: > Hello, again. > > Sorry, I missed part of your comment in the previous reply. > > On Tue, Dec 12, 2017 at 06:09:32PM +0800, jianchao.wang wrote: >>> static void __blk_mq_requeue_request(struct request *rq) >>> { >>> @@ -679,7 +672,7 @@ static

Re: [PATCH 6/6] blk-mq: remove REQ_ATOM_STARTED

2017-12-12 Thread t...@kernel.org
On Tue, Dec 12, 2017 at 10:20:39PM +, Bart Van Assche wrote: > The above code should show all requests owned by the block driver. Patch > "blk-mq-debugfs: Also show requests that have not yet been started" (not yet > in Jens' tree) changes the REQ_ATOM_STARTED test into > list_empty(&rq->queue

Re: [PATCH 6/6] blk-mq: remove REQ_ATOM_STARTED

2017-12-12 Thread Bart Van Assche
On Tue, 2017-12-12 at 11:01 -0800, Tejun Heo wrote: > @@ -409,7 +407,7 @@ static void hctx_show_busy_rq(struct request *rq, void > *data, bool reserved) > const struct show_busy_params *params = data; > > if (blk_mq_map_queue(rq->q, rq->mq_ctx->cpu) == params->hctx && > -

[PATCH 6/6] blk-mq: remove REQ_ATOM_STARTED

2017-12-12 Thread Tejun Heo
After the recent updates to use generation number and state based synchronization, we can easily replace REQ_ATOM_STARTED usages by adding an extra state to distinguish completed but not yet freed state. Add MQ_RQ_COMPLETE and replace REQ_ATOM_STARTED usages with blk_mq_rq_state() tests. REQ_ATOM

Re: [PATCH 6/6] blk-mq: remove REQ_ATOM_STARTED

2017-12-12 Thread Tejun Heo
Hello, Nikolay. On Tue, Dec 12, 2017 at 01:17:52PM +0200, Nikolay Borisov wrote: > On 9.12.2017 21:25, Tejun Heo wrote: > > After the recent updates to use generation number and state based > > synchronization, we can easily replace REQ_ATOM_STARTED usages by > > adding an extra state to distingu

Re: [PATCH 6/6] blk-mq: remove REQ_ATOM_STARTED

2017-12-12 Thread Tejun Heo
Hello, again. Sorry, I missed part of your comment in the previous reply. On Tue, Dec 12, 2017 at 06:09:32PM +0800, jianchao.wang wrote: > > static void __blk_mq_requeue_request(struct request *rq) > > { > > @@ -679,7 +672,7 @@ static void __blk_mq_requeue_request(struct request *rq) > > wb

Re: [PATCH 6/6] blk-mq: remove REQ_ATOM_STARTED

2017-12-12 Thread Tejun Heo
Hello, Jianchao. On Tue, Dec 12, 2017 at 06:09:32PM +0800, jianchao.wang wrote: > > @@ -786,18 +779,6 @@ static void blk_mq_rq_timed_out(struct request *req, > > bool reserved) > > const struct blk_mq_ops *ops = req->q->mq_ops; > > enum blk_eh_timer_return ret = BLK_EH_RESET_TIMER; > >

Re: [PATCH 6/6] blk-mq: remove REQ_ATOM_STARTED

2017-12-12 Thread Nikolay Borisov
On 9.12.2017 21:25, Tejun Heo wrote: > After the recent updates to use generation number and state based > synchronization, we can easily replace REQ_ATOM_STARTED usages by > adding an extra state to distinguish completed but not yet freed > state. > > Add MQ_RQ_COMPLETE and replace REQ_ATOM_ST

Re: [PATCH 6/6] blk-mq: remove REQ_ATOM_STARTED

2017-12-12 Thread jianchao.wang
Hi Tejun On 12/10/2017 03:25 AM, Tejun Heo wrote: > After the recent updates to use generation number and state based > synchronization, we can easily replace REQ_ATOM_STARTED usages by > adding an extra state to distinguish completed but not yet freed > state. > > Add MQ_RQ_COMPLETE and replace

[PATCH 6/6] blk-mq: remove REQ_ATOM_STARTED

2017-12-09 Thread Tejun Heo
After the recent updates to use generation number and state based synchronization, we can easily replace REQ_ATOM_STARTED usages by adding an extra state to distinguish completed but not yet freed state. Add MQ_RQ_COMPLETE and replace REQ_ATOM_STARTED usages with blk_mq_rq_state() tests. REQ_ATOM