From: Jens Axboe <axboe@kernel.dk>
To: Tejun Heo <tj@kernel.org>
Cc: vgoyal@redhat.com, jgarzik@pobox.com, davem@davemloft.net,
hch@infradead.org, ctalbott@google.com, rni@google.com,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/6] block: allow blk_execute_rq_nowait() to be called from IRQ context
Date: Wed, 26 Oct 2011 10:11:00 +0200 [thread overview]
Message-ID: <4EA7C094.8000204@kernel.dk> (raw)
In-Reply-To: <1319590927-15791-3-git-send-email-tj@kernel.org>
On 2011-10-26 03:02, Tejun Heo wrote:
> Currently blk_execute_rq_nowait() directly calls __blk_run_queue() and
> thus must be called from sleepable context. This patch updates the
> function such that it can be called from non-sleepable context and
> schedules async execution in such cases. This will be used to
> unexport elv_add_request().
>
> While at it, add FIXME comment for REQ_TYPE_PM_RESUME special case.
>
> -v2: hch pointed out that blk_execute_rq_nowait() can be hot path for
> some drivers. Retained direct execution from sleepable context.
Ugh, this looks nasty:
> + bool may_sleep = !preempt_count() && !irqs_disabled();
please don't ever do that. Pass the context in instead.
> + /*
> + * Some drivers beat this path pretty hard. As an optimization, if
> + * we're being called from sleepable context, run @q directly.
> + */
> + if (may_sleep) {
> + __blk_run_queue(q);
> + /*
> + * The queue is stopped so it won't be run.
> + * FIXME: Please kill me along with REQ_TYPE_PM_RESUME.
> + */
> + if (rq->cmd_type == REQ_TYPE_PM_RESUME)
> + q->request_fn(q);
This is very nasty as well.
--
Jens Axboe
next prev parent reply other threads:[~2011-10-26 8:11 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-10-26 1:02 [PATCHSET block:for-3.2/core] further updates to blk_cleanup_queue(), take#2 Tejun Heo
2011-10-26 1:02 ` [PATCH 1/6] block, sx8: kill blk_insert_request() Tejun Heo
2011-10-26 1:19 ` Jeff Garzik
2011-10-26 8:12 ` Jens Axboe
2011-10-26 1:02 ` [PATCH 2/6] block: allow blk_execute_rq_nowait() to be called from IRQ context Tejun Heo
2011-10-26 8:11 ` Jens Axboe [this message]
2011-10-26 19:21 ` Tejun Heo
2011-10-26 1:02 ` [PATCH 3/6] block, ide: unexport elv_add_request() Tejun Heo
2011-10-26 1:02 ` [PATCH 4/6] block: add blk_queue_dead() Tejun Heo
2011-10-26 8:18 ` Jens Axboe
2011-10-26 17:20 ` Vivek Goyal
2011-10-26 19:25 ` Tejun Heo
2011-10-26 1:02 ` [PATCH 5/6] block: fix drain_all condition in blk_drain_queue() Tejun Heo
2011-10-26 1:02 ` [PATCH 6/6] block: add missing blk_queue_dead() checks Tejun Heo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4EA7C094.8000204@kernel.dk \
--to=axboe@kernel.dk \
--cc=ctalbott@google.com \
--cc=davem@davemloft.net \
--cc=hch@infradead.org \
--cc=jgarzik@pobox.com \
--cc=linux-kernel@vger.kernel.org \
--cc=rni@google.com \
--cc=tj@kernel.org \
--cc=vgoyal@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.