All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jeff Moyer <jmoyer@redhat.com>
To: Jens Axboe <jaxboe@fusionio.com>
Cc: linux-kernel@vger.kernel.org, hch@infradead.org
Subject: Re: [PATCH 04/10] block: initial patch for on-stack per-task plugging
Date: Mon, 24 Jan 2011 14:36:30 -0500	[thread overview]
Message-ID: <x49tygyf60x.fsf@segfault.boston.devel.redhat.com> (raw)
In-Reply-To: <1295659049-2688-5-git-send-email-jaxboe@fusionio.com> (Jens Axboe's message of "Sat, 22 Jan 2011 01:17:23 +0000")

Jens Axboe <jaxboe@fusionio.com> writes:

This looks mostly good.  I just have a couple of questions, listed below.

> +/*
> + * Attempts to merge with the plugged list in the current process. Returns
> + * true if merge was succesful, otherwise false.
> + */
> +static bool check_plug_merge(struct task_struct *tsk, struct request_queue *q,
> +			     struct bio *bio)
> +{

Would a better name for this function be attempt_plug_merge?

> +	plug = current->plug;
> +	if (plug && !sync) {
> +		if (!plug->should_sort && !list_empty(&plug->list)) {
> +			struct request *__rq;
> +
> +			__rq = list_entry_rq(plug->list.prev);
> +			if (__rq->q != q)
> +				plug->should_sort = 1;

[snip]

> +static int plug_rq_cmp(void *priv, struct list_head *a, struct list_head *b)
> +{
> +	struct request *rqa = container_of(a, struct request, queuelist);
> +	struct request *rqb = container_of(b, struct request, queuelist);
> +
> +	return !(rqa->q == rqb->q);
> +}


> +static void __blk_finish_plug(struct task_struct *tsk, struct blk_plug *plug)
> +{

[snip]

> +	if (plug->should_sort)
> +		list_sort(NULL, &plug->list, plug_rq_cmp);

The other way to do this is to just keep track of which queues you need
to run after exhausting the plug list.  Is it safe to assume you've done
things this way to keep each request queue's data structures cache hot
while working on it?

> +static inline void blk_flush_plug(struct task_struct *tsk)
> +{
> +	struct blk_plug *plug = tsk->plug;
> +
> +	if (unlikely(plug))
> +		__blk_flush_plug(tsk, plug);
> +}

Why is that unlikely?

Cheers,
Jeff

  reply	other threads:[~2011-01-24 19:36 UTC|newest]

Thread overview: 158+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-01-22  1:17 [PATCH 0/10] On-stack explicit block queue plugging Jens Axboe
2011-01-22  1:17 ` [PATCH 01/10] block: add API for delaying work/request_fn a little bit Jens Axboe
2011-01-22  1:17 ` [PATCH 02/10] ide-cd: convert to blk_delay_queue() for a short pause Jens Axboe
2011-01-22  1:19   ` David Miller
2011-01-22  1:17 ` [PATCH 03/10] scsi: convert to blk_delay_queue() Jens Axboe
2011-01-22  1:17 ` [PATCH 04/10] block: initial patch for on-stack per-task plugging Jens Axboe
2011-01-24 19:36   ` Jeff Moyer [this message]
2011-01-24 21:23     ` Jens Axboe
2011-03-10 16:54   ` Vivek Goyal
2011-03-10 19:32     ` Jens Axboe
2011-03-10 19:46       ` Vivek Goyal
2011-03-16  8:18   ` Shaohua Li
2011-03-16 17:31     ` Vivek Goyal
2011-03-17  1:00       ` Shaohua Li
2011-03-17  3:19         ` Shaohua Li
2011-03-17  9:44           ` Jens Axboe
2011-03-18  1:55             ` Shaohua Li
2011-03-17  9:43         ` Jens Axboe
2011-03-18  6:36           ` Shaohua Li
2011-03-18 12:54             ` Jens Axboe
2011-03-18 13:52               ` Jens Axboe
2011-03-21  6:52                 ` Shaohua Li
2011-03-21  9:20                   ` Jens Axboe
2011-03-22  0:32                     ` Shaohua Li
2011-03-22  7:36                       ` Jens Axboe
2011-03-17  9:39     ` Jens Axboe
2011-01-22  1:17 ` [PATCH 05/10] block: remove per-queue plugging Jens Axboe
2011-01-22  1:31   ` Nick Piggin
2011-03-03 21:23   ` Mike Snitzer
2011-03-03 21:27     ` Mike Snitzer
2011-03-03 22:13     ` Mike Snitzer
2011-03-04 13:02       ` Shaohua Li
2011-03-04 13:20         ` Jens Axboe
2011-03-04 21:43         ` Mike Snitzer
2011-03-04 21:50           ` Jens Axboe
2011-03-04 22:27             ` Mike Snitzer
2011-03-05 20:54               ` Jens Axboe
2011-03-07 10:23                 ` Peter Zijlstra
2011-03-07 19:43                   ` Jens Axboe
2011-03-07 20:41                     ` Peter Zijlstra
2011-03-07 20:46                       ` Jens Axboe
2011-03-08  9:38                         ` Peter Zijlstra
2011-03-08  9:41                           ` Jens Axboe
2011-03-07  0:54             ` Shaohua Li
2011-03-07  8:07               ` Jens Axboe
2011-03-08 12:16       ` Jens Axboe
2011-03-08 20:21         ` Mike Snitzer
2011-03-08 20:27           ` Jens Axboe
2011-03-08 21:36             ` Jeff Moyer
2011-03-09  7:25               ` Jens Axboe
2011-03-08 22:05             ` Mike Snitzer
2011-03-10  0:58               ` Mike Snitzer
2011-04-05  3:05                 ` NeilBrown
2011-04-11  4:50                   ` NeilBrown
2011-04-11  4:50                     ` NeilBrown
2011-04-11  9:19                     ` Jens Axboe
2011-04-11 10:59                       ` NeilBrown
2011-04-11 11:04                         ` Jens Axboe
2011-04-11 11:26                           ` NeilBrown
2011-04-11 11:37                             ` Jens Axboe
2011-04-11 12:05                               ` NeilBrown
2011-04-11 12:11                                 ` Jens Axboe
2011-04-11 12:36                                   ` NeilBrown
2011-04-11 12:48                                     ` Jens Axboe
2011-04-12  1:12                                       ` hch
2011-04-12  8:36                                         ` Jens Axboe
2011-04-12 12:22                                           ` Dave Chinner
2011-04-12 12:28                                             ` Jens Axboe
2011-04-12 12:41                                               ` Dave Chinner
2011-04-12 12:58                                                 ` Jens Axboe
2011-04-12 13:31                                                   ` Dave Chinner
2011-04-12 13:45                                                     ` Jens Axboe
2011-04-12 14:34                                                       ` Dave Chinner
2011-04-12 21:08                                                         ` NeilBrown
2011-04-13  2:23                                                           ` Linus Torvalds
2011-04-13 11:12                                                             ` Peter Zijlstra
2011-04-13 11:23                                                               ` Jens Axboe
2011-04-13 11:41                                                                 ` Peter Zijlstra
2011-04-13 15:13                                                                 ` Linus Torvalds
2011-04-13 17:35                                                                   ` Jens Axboe
2011-04-12 16:58                                                     ` hch
2011-04-12 17:29                                                       ` Jens Axboe
2011-04-12 16:44                                                   ` hch
2011-04-12 16:49                                                     ` Jens Axboe
2011-04-12 16:54                                                       ` hch
2011-04-12 17:24                                                         ` Jens Axboe
2011-04-12 13:40                                               ` Dave Chinner
2011-04-12 13:48                                                 ` Jens Axboe
2011-04-12 23:35                                                   ` Dave Chinner
2011-04-12 16:50                                           ` hch
2011-04-15  4:26                                   ` hch
2011-04-15  6:34                                     ` Jens Axboe
2011-04-17 22:19                                   ` NeilBrown
2011-04-17 22:19                                     ` NeilBrown
2011-04-18  4:19                                     ` NeilBrown
2011-04-18  4:19                                       ` NeilBrown
2011-04-18  6:38                                     ` Jens Axboe
2011-04-18  7:25                                       ` NeilBrown
2011-04-18  8:10                                         ` Jens Axboe
2011-04-18  8:10                                           ` Jens Axboe
2011-04-18  8:33                                           ` NeilBrown
2011-04-18  8:42                                             ` Jens Axboe
2011-04-18  8:42                                               ` Jens Axboe
2011-04-18 21:23                                             ` hch
2011-04-22 15:39                                               ` hch
2011-04-22 16:01                                                 ` Vivek Goyal
2011-04-22 16:10                                                   ` Vivek Goyal
2011-04-18 21:30                                             ` hch
2011-04-18 22:38                                               ` NeilBrown
2011-04-20 10:55                                                 ` hch
2011-04-18  9:19                                           ` hch
2011-04-18  9:40                                             ` [dm-devel] " Hannes Reinecke
2011-04-18  9:40                                               ` Hannes Reinecke
2011-04-18  9:47                                               ` Jens Axboe
2011-04-18  9:46                                             ` Jens Axboe
2011-04-11 11:55                         ` NeilBrown
2011-04-11 12:12                           ` Jens Axboe
2011-04-11 22:58                             ` hch
2011-04-12  6:20                               ` Jens Axboe
2011-04-11 16:59                     ` hch
2011-04-11 21:14                       ` NeilBrown
2011-04-11 22:59                         ` hch
2011-04-12  6:18                         ` Jens Axboe
2011-03-17 15:51               ` Mike Snitzer
2011-03-17 18:31                 ` Jens Axboe
2011-03-17 18:46                   ` Mike Snitzer
2011-03-18  9:15                     ` hch
2011-03-08 12:15     ` Jens Axboe
2011-03-04  4:00   ` Vivek Goyal
2011-03-08 12:24     ` Jens Axboe
2011-03-08 22:10       ` blk-throttle: Use blk_plug in throttle code (Was: Re: [PATCH 05/10] block: remove per-queue plugging) Vivek Goyal
2011-03-09  7:26         ` Jens Axboe
2011-01-22  1:17 ` [PATCH 06/10] block: kill request allocation batching Jens Axboe
2011-01-22  9:31   ` Christoph Hellwig
2011-01-24 19:09     ` Jens Axboe
2011-01-22  1:17 ` [PATCH 07/10] fs: make generic file read/write functions plug Jens Axboe
2011-01-24  3:57   ` Dave Chinner
2011-01-24 19:11     ` Jens Axboe
2011-03-04  4:09   ` Vivek Goyal
2011-03-04 13:22     ` Jens Axboe
2011-03-04 13:25       ` hch
2011-03-04 13:40         ` Jens Axboe
2011-03-04 14:08           ` hch
2011-03-04 22:07             ` Jens Axboe
2011-03-04 23:12               ` hch
2011-03-08 12:38         ` Jens Axboe
2011-03-09 10:38           ` hch
2011-03-09 10:52             ` Jens Axboe
2011-01-22  1:17 ` [PATCH 08/10] read-ahead: use plugging Jens Axboe
2011-01-22  1:17 ` [PATCH 09/10] fs: make mpage read/write_pages() plug Jens Axboe
2011-01-22  1:17 ` [PATCH 10/10] fs: make aio plug Jens Axboe
2011-01-24 17:59   ` Jeff Moyer
2011-01-24 19:09     ` Jens Axboe
2011-01-24 19:15       ` Jeff Moyer
2011-01-24 19:22         ` Jens Axboe
2011-01-24 19:29           ` Jeff Moyer
2011-01-24 19:31             ` Jens Axboe
2011-01-24 19:38               ` Jeff Moyer

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=x49tygyf60x.fsf@segfault.boston.devel.redhat.com \
    --to=jmoyer@redhat.com \
    --cc=hch@infradead.org \
    --cc=jaxboe@fusionio.com \
    --cc=linux-kernel@vger.kernel.org \
    /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.