From: James Bottomley <James.Bottomley@HansenPartnership.com>
To: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Cc: jens.axboe@oracle.com, linux-scsi@vger.kernel.org,
Boaz Harrosh <bharrosh@panasas.com>
Subject: Re: [PATCH 2/3] block: unexport blk_rq_append_bio
Date: Tue, 10 Feb 2009 18:19:33 +0000 [thread overview]
Message-ID: <1234289973.3268.37.camel@localhost.localdomain> (raw)
In-Reply-To: <1234287784.3268.31.camel@localhost.localdomain>
On Tue, 2009-02-10 at 17:43 +0000, James Bottomley wrote:
> There's a current barrier to this: osd_initiator has also become a
> consumer of blk_rq_append_bio().
>
> It seems to be emulating block internals, so I think the fix is twofold:
>
> 1. adjust blk_rq_map_kern to call blk_rq_append_bio() instead of
> blk_rq_prep_bio() (with an extra failure path).
> 2. make osd_initiator simply call it for additions.
>
> I can code up a patch to see if it works.
So this is the patch to allow blk_rq_map_kern to append to requests,
which is what I think is needed.
Unfortunately unwinding osd_initator's bio dependence and putting it
back on data buffers looks to be a bit of a longer chore.
James
---
diff --git a/block/blk-map.c b/block/blk-map.c
index 25d15ff..1a1e26d 100644
--- a/block/blk-map.c
+++ b/block/blk-map.c
@@ -289,6 +289,7 @@ int blk_rq_map_kern(struct request_queue *q, struct request *rq, void *kbuf,
int reading = rq_data_dir(rq) == READ;
int do_copy = 0;
struct bio *bio;
+ int ret;
if (len > (q->max_hw_sectors << 9))
return -EINVAL;
@@ -310,7 +311,13 @@ int blk_rq_map_kern(struct request_queue *q, struct request *rq, void *kbuf,
if (do_copy)
rq->cmd_flags |= REQ_COPY_USER;
- blk_rq_bio_prep(q, rq, bio);
+ ret = blk_rq_append_bio(q, rq, bio);
+ if (unlikely(ret)) {
+ /* request is too big */
+ bio_put(bio);
+ return ret;
+ }
+
blk_queue_bounce(q, &rq->bio);
rq->buffer = rq->data = NULL;
return 0;
next prev parent reply other threads:[~2009-02-10 18:19 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-12-13 16:23 [PATCH 0/3] remove scsi_req_map_sg FUJITA Tomonori
2008-12-13 16:23 ` [PATCH 1/3] " FUJITA Tomonori
2008-12-13 16:23 ` [PATCH 2/3] block: unexport blk_rq_append_bio FUJITA Tomonori
2008-12-13 16:23 ` [PATCH 3/3] block: unexport bio_add_pc_page FUJITA Tomonori
2009-02-10 17:43 ` [PATCH 2/3] block: unexport blk_rq_append_bio James Bottomley
2009-02-10 18:19 ` James Bottomley [this message]
2009-02-11 0:21 ` FUJITA Tomonori
2009-02-11 8:17 ` Boaz Harrosh
2009-02-11 8:19 ` Boaz Harrosh
2009-02-11 9:15 ` Boaz Harrosh
2009-02-11 14:32 ` FUJITA Tomonori
2009-02-11 14:52 ` Boaz Harrosh
2009-02-11 15:01 ` FUJITA Tomonori
2009-02-11 15:07 ` Boaz Harrosh
2009-02-11 15:21 ` FUJITA Tomonori
2009-02-11 15:41 ` Boaz Harrosh
2009-02-11 16:04 ` FUJITA Tomonori
2009-02-11 16:30 ` James Bottomley
2009-02-11 17:55 ` Boaz Harrosh
2009-02-12 1:30 ` FUJITA Tomonori
2009-02-12 8:24 ` Boaz Harrosh
2009-02-12 8:28 ` [RFD] blk_rq_map_pages new API Boaz Harrosh
2009-02-12 9:19 ` Boaz Harrosh
2009-02-12 9:50 ` FUJITA Tomonori
2009-02-12 10:20 ` FUJITA Tomonori
2009-02-12 11:34 ` Boaz Harrosh
2009-02-12 8:41 ` [PATCH 2/3] block: unexport blk_rq_append_bio FUJITA Tomonori
2009-02-12 9:14 ` Boaz Harrosh
2009-02-12 9:50 ` FUJITA Tomonori
2009-02-12 12:19 ` [PATCH] [RFC] block: Don't let blk_put_request leak BIOs Boaz Harrosh
2009-02-12 13:49 ` Boaz Harrosh
2009-02-12 13:56 ` Boaz Harrosh
2009-02-12 17:27 ` [PATCH 1/2] " Boaz Harrosh
2009-02-12 17:30 ` [PATCH 2/2] [RFC] libosd: Don't let osd abuse block internals, now that it's fixed Boaz Harrosh
2009-02-12 14:48 ` [PATCH 2/3] block: unexport blk_rq_append_bio James Bottomley
2009-02-12 16:51 ` Boaz Harrosh
2008-12-15 7:28 ` [PATCH 0/3] remove scsi_req_map_sg Jens Axboe
2008-12-18 8:14 ` FUJITA Tomonori
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=1234289973.3268.37.camel@localhost.localdomain \
--to=james.bottomley@hansenpartnership.com \
--cc=bharrosh@panasas.com \
--cc=fujita.tomonori@lab.ntt.co.jp \
--cc=jens.axboe@oracle.com \
--cc=linux-scsi@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox