From: Josef Bacik <jbacik@fusionio.com>
To: Kent Overstreet <kmo@daterainc.com>
Cc: <linux-kernel@vger.kernel.org>, <linux-fsdevel@vger.kernel.org>,
<linux-btrfs@vger.kernel.org>, <axboe@kernel.dk>,
<hch@infradead.org>
Subject: Re: [PATCH 6/9] mtip32xx: handle arbitrary size bios
Date: Tue, 5 Nov 2013 08:49:28 -0500 [thread overview]
Message-ID: <20131105134928.GA27784@localhost.localdomain> (raw)
In-Reply-To: <1383608187-27368-7-git-send-email-kmo@daterainc.com>
On Mon, Nov 04, 2013 at 03:36:24PM -0800, Kent Overstreet wrote:
> We get a measurable performance increase by handling this in the driver when
> we're already looping over the biovec, instead of handling it separately in
> generic_make_request() (or bio_add_page() originally)
>
> Signed-off-by: Kent Overstreet <kmo@daterainc.com>
> ---
> drivers/block/mtip32xx/mtip32xx.c | 46 +++++++++++++--------------------------
> 1 file changed, 15 insertions(+), 31 deletions(-)
>
> diff --git a/drivers/block/mtip32xx/mtip32xx.c b/drivers/block/mtip32xx/mtip32xx.c
> index d4c669b..c5a7a96 100644
> --- a/drivers/block/mtip32xx/mtip32xx.c
> +++ b/drivers/block/mtip32xx/mtip32xx.c
> @@ -2648,24 +2648,6 @@ static void mtip_hw_submit_io(struct driver_data *dd, sector_t sector,
> }
>
> /*
> - * Release a command slot.
> - *
> - * @dd Pointer to the driver data structure.
> - * @tag Slot tag
> - *
> - * return value
> - * None
> - */
> -static void mtip_hw_release_scatterlist(struct driver_data *dd, int tag,
> - int unaligned)
> -{
> - struct semaphore *sem = unaligned ? &dd->port->cmd_slot_unal :
> - &dd->port->cmd_slot;
> - release_slot(dd->port, tag);
> - up(sem);
> -}
> -
> -/*
> * Obtain a command slot and return its associated scatter list.
> *
> * @dd Pointer to the driver data structure.
> @@ -4016,21 +3998,22 @@ static void mtip_make_request(struct request_queue *queue, struct bio *bio)
>
> sg = mtip_hw_get_scatterlist(dd, &tag, unaligned);
> if (likely(sg != NULL)) {
> - if (unlikely((bio)->bi_vcnt > MTIP_MAX_SG)) {
> - dev_warn(&dd->pdev->dev,
> - "Maximum number of SGL entries exceeded\n");
> - bio_io_error(bio);
> - mtip_hw_release_scatterlist(dd, tag, unaligned);
> - return;
> - }
> -
> /* Create the scatter list for this bio. */
> bio_for_each_segment(bvec, bio, iter) {
> - sg_set_page(&sg[nents],
> - bvec.bv_page,
> - bvec.bv_len,
> - bvec.bv_offset);
> - nents++;
> + if (unlikely(nents == MTIP_MAX_SG)) {
> + struct bio *split = bio_clone(bio, GFP_NOIO);
> +
Need to check for memory allocation failure here. Thanks,
Josef
next prev parent reply other threads:[~2013-11-05 13:49 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-04 23:36 [PATCH] Block layer stuff/DIO rewrite prep for 3.14 Kent Overstreet
2013-11-04 23:36 ` [PATCH 1/9] block: Convert various code to bio_for_each_segment() Kent Overstreet
2013-11-05 13:53 ` Josef Bacik
2013-11-07 11:26 ` Jan Kara
2013-11-07 20:21 ` Kent Overstreet
2013-11-04 23:36 ` [PATCH 2/9] block: submit_bio_wait() conversions Kent Overstreet
2013-11-04 23:36 ` [PATCH 3/9] block: Move bouncing to generic_make_request() Kent Overstreet
2013-11-04 23:36 ` [PATCH 4/9] block: Make generic_make_request handle arbitrary sized bios Kent Overstreet
2013-11-04 23:36 ` Kent Overstreet
2013-11-04 23:56 ` [dm-devel] " Mike Christie
2013-11-05 0:55 ` Kent Overstreet
2013-11-04 23:36 ` [PATCH 5/9] block: Gut bio_add_page(), kill bio_add_pc_page() Kent Overstreet
2013-11-04 23:36 ` [PATCH 6/9] mtip32xx: handle arbitrary size bios Kent Overstreet
2013-11-05 13:49 ` Josef Bacik [this message]
2013-11-04 23:36 ` [PATCH 7/9] blk-lib.c: generic_make_request() handles large bios now Kent Overstreet
2013-11-04 23:36 ` [PATCH 8/9] bcache: " Kent Overstreet
2013-11-04 23:36 ` [PATCH 9/9] block: Add bio_get_user_pages() Kent Overstreet
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=20131105134928.GA27784@localhost.localdomain \
--to=jbacik@fusionio.com \
--cc=axboe@kernel.dk \
--cc=hch@infradead.org \
--cc=kmo@daterainc.com \
--cc=linux-btrfs@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--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.