lkml.org 
[lkml]   [2012]   [Sep]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2 13/26] raid5: use bio_reset()
    Date
    Had to shuffle the code around a bit (where bi_rw and bi_end_io were
    set), but shouldn't really be anything tricky here

    Signed-off-by: Kent Overstreet <koverstreet@google.com>
    CC: Jens Axboe <axboe@kernel.dk>
    CC: NeilBrown <neilb@suse.de>
    ---
    drivers/md/raid5.c | 28 ++++++++++++++--------------
    1 file changed, 14 insertions(+), 14 deletions(-)

    diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
    index 7c19dbe..ebe43f7 100644
    --- a/drivers/md/raid5.c
    +++ b/drivers/md/raid5.c
    @@ -561,14 +561,6 @@ static void ops_run_io(struct stripe_head *sh, struct stripe_head_state *s)
    bi = &sh->dev[i].req;
    rbi = &sh->dev[i].rreq; /* For writing to replacement */

    - bi->bi_rw = rw;
    - rbi->bi_rw = rw;
    - if (rw & WRITE) {
    - bi->bi_end_io = raid5_end_write_request;
    - rbi->bi_end_io = raid5_end_write_request;
    - } else
    - bi->bi_end_io = raid5_end_read_request;
    -
    rcu_read_lock();
    rrdev = rcu_dereference(conf->disks[i].replacement);
    smp_mb(); /* Ensure that if rrdev is NULL, rdev won't be */
    @@ -643,7 +635,14 @@ static void ops_run_io(struct stripe_head *sh, struct stripe_head_state *s)

    set_bit(STRIPE_IO_STARTED, &sh->state);

    + bio_reset(bi);
    bi->bi_bdev = rdev->bdev;
    + bi->bi_rw = rw;
    + bi->bi_end_io = (rw & WRITE)
    + ? raid5_end_write_request
    + : raid5_end_read_request;
    + bi->bi_private = sh;
    +
    pr_debug("%s: for %llu schedule op %ld on disc %d\n",
    __func__, (unsigned long long)sh->sector,
    bi->bi_rw, i);
    @@ -657,12 +656,9 @@ static void ops_run_io(struct stripe_head *sh, struct stripe_head_state *s)
    if (test_bit(R5_ReadNoMerge, &sh->dev[i].flags))
    bi->bi_rw |= REQ_FLUSH;

    - bi->bi_flags = 1 << BIO_UPTODATE;
    - bi->bi_idx = 0;
    bi->bi_io_vec[0].bv_len = STRIPE_SIZE;
    bi->bi_io_vec[0].bv_offset = 0;
    bi->bi_size = STRIPE_SIZE;
    - bi->bi_next = NULL;
    if (rrdev)
    set_bit(R5_DOUBLE_LOCKED, &sh->dev[i].flags);
    generic_make_request(bi);
    @@ -674,7 +670,14 @@ static void ops_run_io(struct stripe_head *sh, struct stripe_head_state *s)

    set_bit(STRIPE_IO_STARTED, &sh->state);

    + bio_reset(rbi);
    rbi->bi_bdev = rrdev->bdev;
    + rbi->bi_rw = rw;
    + rbi->bi_end_io = (rw & WRITE)
    + ? raid5_end_write_request
    + : raid5_end_read_request;
    + rbi->bi_private = sh;
    +
    pr_debug("%s: for %llu schedule op %ld on "
    "replacement disc %d\n",
    __func__, (unsigned long long)sh->sector,
    @@ -686,12 +689,9 @@ static void ops_run_io(struct stripe_head *sh, struct stripe_head_state *s)
    else
    rbi->bi_sector = (sh->sector
    + rrdev->data_offset);
    - rbi->bi_flags = 1 << BIO_UPTODATE;
    - rbi->bi_idx = 0;
    rbi->bi_io_vec[0].bv_len = STRIPE_SIZE;
    rbi->bi_io_vec[0].bv_offset = 0;
    rbi->bi_size = STRIPE_SIZE;
    - rbi->bi_next = NULL;
    generic_make_request(rbi);
    }
    if (!rdev && !rrdev) {
    --
    1.7.12


    \
     
     \ /
      Last update: 2012-09-11 03:41    [W:4.176 / U:1.252 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site