Messages in this thread | | | Subject | Re: [PATCH BUGFIX 2/3] null_blk: guarantee device restart in all irq modes | From | Paolo Valente <> | Date | Tue, 3 Nov 2015 10:02:28 +0100 |
| |
Il giorno 02/nov/2015, alle ore 17:25, Jens Axboe <axboe@fb.com> ha scritto:
> On 11/02/2015 07:31 AM, Paolo Valente wrote: >> From: Arianna Avanzini <avanzini@google.com> >> >> In single-queue (block layer) mode,the function null_rq_prep_fn stops >> the device if alloc_cmd fails. Then, once stopped, the device must be >> restarted on the next command completion, so that the request(s) for >> which alloc_cmd failed can be requeued. Otherwise the device hangs. >> >> Unfortunately, device restart is currently performed only for delayed >> completions, i.e., in irqmode==2. This fact causes hangs, for the >> above reasons, with the other irqmodes in combination with single-queue >> block layer. >> >> This commits addresses this issue by making sure that, if stopped, the >> device is properly restarted for all irqmodes on completions. > > This looks good. I did a double take at the removal of the q->mq_ops check before blk_queue_stopped(), but we can't get there in MQ mode. Perhaps a comment would be warranted for that, the ->mq_ops check served as a bit of documentation for that before. >
Honestly, I removed that additional check by mistake. I will put it back in the next version of this patchset, once (and if) I have the green light on patch 1/3.
Thanks, Paolo
> -- > Jens Axboe >
-- Paolo Valente Algogroup Dipartimento di Fisica, Informatica e Matematica Via Campi, 213/B 41125 Modena - Italy homepage: http://algogroup.unimore.it/people/paolo/
| |