From: Kent Overstreet <koverstreet@google.com>
To: linux-bcache@vger.kernel.org, linux-kernel@vger.kernel.org,
dm-devel@redhat.com
Cc: axboe@kernel.dk, Kent Overstreet <koverstreet@google.com>,
tj@kernel.org, neilb@suse.de
Subject: [PATCH v2 14/26] raid1: Refactor narrow_write_error() to not use bi_idx
Date: Mon, 10 Sep 2012 17:22:25 -0700 [thread overview]
Message-ID: <1347322957-25260-15-git-send-email-koverstreet@google.com> (raw)
In-Reply-To: <1347322957-25260-1-git-send-email-koverstreet@google.com>
More bi_idx removal. This code was just open coding bio_clone(). This
could probably be further improved by using bio_advance() instead of
skipping over null pages, but that'd be a larger rework.
Signed-off-by: Kent Overstreet <koverstreet@google.com>
CC: Jens Axboe <axboe@kernel.dk>
CC: NeilBrown <neilb@suse.de>
---
drivers/md/raid1.c | 36 ++++++++++++++++++------------------
1 file changed, 18 insertions(+), 18 deletions(-)
diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c
index bd3e3b9..b1072da 100644
--- a/drivers/md/raid1.c
+++ b/drivers/md/raid1.c
@@ -2052,8 +2052,6 @@ static int narrow_write_error(struct r1bio *r1_bio, int i)
struct mddev *mddev = r1_bio->mddev;
struct r1conf *conf = mddev->private;
struct md_rdev *rdev = conf->mirrors[i].rdev;
- int vcnt, idx;
- struct bio_vec *vec;
/* bio has the data to be written to device 'i' where
* we just recently had a write error.
@@ -2081,30 +2079,32 @@ static int narrow_write_error(struct r1bio *r1_bio, int i)
& ~(sector_t)(block_sectors - 1))
- sector;
- if (test_bit(R1BIO_BehindIO, &r1_bio->state)) {
- vcnt = r1_bio->behind_page_count;
- vec = r1_bio->behind_bvecs;
- idx = 0;
- while (vec[idx].bv_page == NULL)
- idx++;
- } else {
- vcnt = r1_bio->master_bio->bi_vcnt;
- vec = r1_bio->master_bio->bi_io_vec;
- idx = r1_bio->master_bio->bi_idx;
- }
while (sect_to_write) {
struct bio *wbio;
if (sectors > sect_to_write)
sectors = sect_to_write;
/* Write at 'sector' for 'sectors'*/
- wbio = bio_alloc_mddev(GFP_NOIO, vcnt, mddev);
- memcpy(wbio->bi_io_vec, vec, vcnt * sizeof(struct bio_vec));
- wbio->bi_sector = r1_bio->sector;
+ if (test_bit(R1BIO_BehindIO, &r1_bio->state)) {
+ unsigned vcnt = r1_bio->behind_page_count;
+ struct bio_vec *vec = r1_bio->behind_bvecs;
+
+ while (!vec->bv_page) {
+ vec++;
+ vcnt--;
+ }
+
+ wbio = bio_alloc_mddev(GFP_NOIO, vcnt, mddev);
+ memcpy(wbio->bi_io_vec, vec, vcnt * sizeof(struct bio_vec));
+
+ wbio->bi_vcnt = vcnt;
+ } else {
+ wbio = bio_clone_mddev(r1_bio->master_bio, GFP_NOIO, mddev);
+ }
+
wbio->bi_rw = WRITE;
- wbio->bi_vcnt = vcnt;
+ wbio->bi_sector = r1_bio->sector;
wbio->bi_size = r1_bio->sectors << 9;
- wbio->bi_idx = idx;
md_trim_bio(wbio, sector - r1_bio->sector, sectors);
wbio->bi_sector += rdev->data_offset;
--
1.7.12
next prev parent reply other threads:[~2012-09-11 0:26 UTC|newest]
Thread overview: 81+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-09-11 0:22 [PATCH v2 00/26] Prep work for immutable bio vecs Kent Overstreet
2012-09-11 0:22 ` [PATCH v2 01/26] block: Convert integrity to bvec_alloc_bs(), and a bugfix Kent Overstreet
2012-09-11 20:36 ` [dm-devel] " Vivek Goyal
2012-09-11 20:48 ` Kent Overstreet
2012-09-11 22:07 ` Kent Overstreet
2012-09-12 19:39 ` Martin K. Petersen
2012-09-17 21:08 ` Kent Overstreet
2012-09-20 21:53 ` Tejun Heo
2012-09-11 0:22 ` [PATCH v2 02/26] block: Add bio_advance() Kent Overstreet
2012-09-20 21:58 ` Tejun Heo
2012-09-20 23:13 ` Kent Overstreet
2012-09-20 23:25 ` Tejun Heo
2012-09-20 23:38 ` Kent Overstreet
2012-09-11 0:22 ` [PATCH v2 03/26] block: Refactor blk_update_request() Kent Overstreet
2012-09-20 23:20 ` Tejun Heo
2012-09-20 23:36 ` Kent Overstreet
2012-09-20 23:41 ` Tejun Heo
2012-09-20 23:50 ` Kent Overstreet
2012-09-11 0:22 ` [PATCH v2 04/26] md: Convert md_trim_bio() to use bio_advance() Kent Overstreet
2012-09-20 23:27 ` Tejun Heo
2012-09-11 0:22 ` [PATCH v2 05/26] block: Add bio_end() Kent Overstreet
2012-09-17 9:17 ` Steven Whitehouse
2012-09-20 23:32 ` Tejun Heo
2012-09-20 23:44 ` Kent Overstreet
2012-09-11 0:22 ` [PATCH v2 06/26] block: Use bio_sectors() more consistently Kent Overstreet
2012-09-20 23:36 ` Tejun Heo
2012-09-20 23:47 ` Kent Overstreet
2012-09-11 0:22 ` [PATCH v2 07/26] block: Don't use bi_idx in bio_split() or require it to be 0 Kent Overstreet
2012-09-20 23:45 ` Tejun Heo
2012-09-21 0:00 ` Kent Overstreet
2012-09-11 0:22 ` [PATCH v2 08/26] block: Remove bi_idx references Kent Overstreet
2012-09-20 23:49 ` Tejun Heo
2012-09-21 0:04 ` Kent Overstreet
2012-09-11 0:22 ` [PATCH v2 09/26] block: Remove some unnecessary bi_vcnt usage Kent Overstreet
2012-09-20 23:51 ` Tejun Heo
2012-09-11 0:22 ` [PATCH v2 10/26] block: Add submit_bio_wait(), remove from md Kent Overstreet
2012-09-20 23:56 ` Tejun Heo
2012-09-21 0:06 ` Kent Overstreet
2012-09-11 0:22 ` [PATCH v2 11/26] raid10: Use bio_reset() Kent Overstreet
2012-09-20 23:59 ` Tejun Heo
2012-09-11 0:22 ` [PATCH v2 12/26] raid1: use bio_reset() Kent Overstreet
2012-09-11 4:59 ` NeilBrown
2012-09-11 18:28 ` Kent Overstreet
2012-09-11 21:17 ` NeilBrown
2012-09-11 0:22 ` [PATCH v2 13/26] raid5: " Kent Overstreet
2012-09-11 5:03 ` NeilBrown
2012-09-11 19:26 ` Kent Overstreet
2012-09-11 0:22 ` Kent Overstreet [this message]
2012-09-11 0:22 ` [PATCH v2 15/26] block: Add bio_copy_data() Kent Overstreet
2012-09-21 0:06 ` Tejun Heo
2012-09-21 0:09 ` Kent Overstreet
2012-09-21 0:15 ` Tejun Heo
2012-09-21 0:09 ` Tejun Heo
2012-09-21 0:13 ` Kent Overstreet
2012-09-11 0:22 ` [PATCH v2 16/26] pktcdvd: use bio_copy_data() Kent Overstreet
2012-09-11 0:22 ` [PATCH v2 17/26] pktcdvd: Use bio_reset() in disabled code to kill bi_idx usage Kent Overstreet
2012-09-11 0:22 ` [PATCH v2 18/26] raid1: use bio_copy_data() Kent Overstreet
2012-09-11 0:22 ` [PATCH v2 19/26] bounce: Refactor __blk_queue_bounce to not use bi_io_vec Kent Overstreet
2012-09-21 0:25 ` Tejun Heo
2012-09-21 0:29 ` Kent Overstreet
2012-09-21 0:27 ` Tejun Heo
2012-09-21 0:34 ` Kent Overstreet
2012-09-11 0:22 ` [PATCH v2 20/26] block: Add bio_for_each_segment_all() Kent Overstreet
2012-09-21 0:35 ` Tejun Heo
2012-09-11 0:22 ` [PATCH v2 21/26] block: Convert some code to bio_for_each_segment_all() Kent Overstreet
2012-09-21 0:38 ` Tejun Heo
2012-09-21 0:50 ` Kent Overstreet
2012-09-11 0:22 ` [PATCH v2 22/26] block: Add bio_alloc_pages() Kent Overstreet
2012-09-21 0:47 ` Tejun Heo
2012-09-21 4:50 ` Kent Overstreet
2012-09-11 0:22 ` [PATCH v2 23/26] raid1: use bio_alloc_pages() Kent Overstreet
2012-09-21 0:48 ` Tejun Heo
2012-09-21 4:51 ` Kent Overstreet
2012-09-11 0:22 ` [PATCH v2 24/26] block: Add an explicit bio flag for bios that own their bvec Kent Overstreet
2012-09-11 0:22 ` [PATCH v2 25/26] bio-integrity: Add explicit field for owner of bip_buf Kent Overstreet
2012-09-12 19:41 ` Martin K. Petersen
2012-09-17 21:09 ` Kent Overstreet
2012-09-11 0:22 ` [PATCH v2 26/26] block: Add BIO_SUBMITTED flag, kill BIO_CLONED Kent Overstreet
2012-09-11 5:22 ` [PATCH v2 00/26] Prep work for immutable bio vecs NeilBrown
2012-09-20 23:22 ` Tejun Heo
2012-10-15 20:08 [PATCH v4 00/24] " Kent Overstreet
2012-10-15 20:09 ` [PATCH v2 14/26] raid1: Refactor narrow_write_error() to not use bi_idx 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=1347322957-25260-15-git-send-email-koverstreet@google.com \
--to=koverstreet@google.com \
--cc=axboe@kernel.dk \
--cc=dm-devel@redhat.com \
--cc=linux-bcache@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=neilb@suse.de \
--cc=tj@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
all inboxes | Powered by JetHome®