[PATCH v5 1/2] blk-mq: add tagset quiesce interface
Sagi Grimberg
sagi at grimberg.me
Mon Jul 27 20:12:49 EDT 2020
>> +static void blk_mq_quiesce_blocking_queue_async_wait(struct request_queue *q)
>> +{
>> + struct blk_mq_hw_ctx *hctx;
>> + unsigned int i;
>> +
>> + queue_for_each_hw_ctx(q, hctx, i) {
>> + WARN_ON_ONCE(!(hctx->flags & BLK_MQ_F_BLOCKING));
>> + if (!hctx->rcu_sync) {
>> + synchronize_srcu(hctx->srcu);
>> + continue;
>> + }
>> + wait_for_completion(&hctx->rcu_sync->completion);
>> + destroy_rcu_head(&hctx->rcu_sync->head);
>
> Leaking rcu_sync, and not clearing it across quiesce contexts. Needs:
>
> kfree(hctx->rcu_sync);
> hctx->rcu_sync = NULL;
Good catch, will wait for some more review and submit a v6.
More information about the Linux-nvme
mailing list