All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jens Axboe <axboe@suse.de>
To: David Chinner <dgc@sgi.com>
Cc: linux-kernel@vger.kernel.org
Subject: Re: [PATCH] Direct I/O bio size regression
Date: Mon, 24 Apr 2006 09:02:37 +0200	[thread overview]
Message-ID: <20060424070236.GD22614@suse.de> (raw)
In-Reply-To: <20060424061403.GF611708@melbourne.sgi.com>

On Mon, Apr 24 2006, David Chinner wrote:
> The change introduced here in 2.6.15:
> 
> http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=defd94b75409b983f94548ea2f52ff5787ddb848
> 
> sets the request queue max_sector size unconditionally to 1024 sectors in
> blk_queue_max_sectors() even if the underlying hardware can support a larger
> number of sectors.
> 
> Hence when building direct I/O bios, we have the situation where:
> 
> 	- dio_new_bio() limits bio vector size artifically to
> 	  1024 sectors / page size because bio_get_nr_vecs()
> 	  is used q->max_sectors to size the new bio; and
> 	- dio_bio_add_page() limits the total bio size to 1024
> 	  sectors because bio_add_page() now uses q->max_sectors
> 	  to limit the size of the bio.
> 	  
> Therefore, we can't build direct I/Os larger than 1024 sectors even
> if the hardware supports large I/Os.  This is a regression as before
> this mod we were able to issue direct I/Os limited by either the
> maximum number of vectors in an bio or the hardware limits.
> 
> The patch below (against 2.6.16) allows direct I/O to build bios as
> large as the underlying hardware will allow.
> 
> Signed-off-by: Dave Chinner <dgc@sgi.com>
> ---
>  bio.c |    4 ++--
>  1 files changed, 2 insertions(+), 2 deletions(-)
> 
> Index: 2.6.x-xfs-new/fs/bio.c
> ===================================================================
> --- 2.6.x-xfs-new.orig/fs/bio.c	2006-02-06 11:57:50.000000000 +1100
> +++ 2.6.x-xfs-new/fs/bio.c	2006-04-24 15:46:16.849484424 +1000
> @@ -304,7 +304,7 @@ int bio_get_nr_vecs(struct block_device 
>  	request_queue_t *q = bdev_get_queue(bdev);
>  	int nr_pages;
>  
> -	nr_pages = ((q->max_sectors << 9) + PAGE_SIZE - 1) >> PAGE_SHIFT;
> +	nr_pages = ((q->max_hw_sectors << 9) + PAGE_SIZE - 1) >> PAGE_SHIFT;
>  	if (nr_pages > q->max_phys_segments)
>  		nr_pages = q->max_phys_segments;
>  	if (nr_pages > q->max_hw_segments)
> @@ -446,7 +446,7 @@ int bio_add_page(struct bio *bio, struct
>  		 unsigned int offset)
>  {
>  	struct request_queue *q = bdev_get_queue(bio->bi_bdev);
> -	return __bio_add_page(q, bio, page, len, offset, q->max_sectors);
> +	return __bio_add_page(q, bio, page, len, offset, q->max_hw_sectors);
>  }
>  
>  struct bio_map_data {

Clearly correct, I'll make sure this gets merged right away.

-- 
Jens Axboe


  reply	other threads:[~2006-04-24  7:02 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-04-24  6:14 [PATCH] Direct I/O bio size regression David Chinner
2006-04-24  7:02 ` Jens Axboe [this message]
2006-04-24  9:05   ` Jens Axboe
2006-04-24 14:56     ` David Chinner
2006-04-24 18:47       ` Jens Axboe
2006-04-26  2:30         ` David Chinner
2006-04-26  5:28           ` Jens Axboe
2006-04-26 15:41             ` David Chinner
2006-04-26 17:55               ` Jens Axboe
2006-05-07 16:25           ` Lee Revell
  -- strict thread matches above, loose matches on Subject: below --
2006-04-24 17:06 Al Boldi
2006-04-24 19:49 ` Jens Axboe
2006-04-24 20:59   ` Al Boldi
2006-04-25  7:52     ` Nick Piggin
2006-04-25 10:45       ` Al Boldi

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=20060424070236.GD22614@suse.de \
    --to=axboe@suse.de \
    --cc=dgc@sgi.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.