lkml.org 
[lkml]   [2012]   [Jan]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[039/129] md/raid1: perform bad-block tests for WriteMostly devices too.
    3.2-stable review patch.  If anyone has any objections, please let me know.

    ------------------
    Content-Length: 1469
    Lines: 46

    From: NeilBrown <neilb@suse.de>

    commit 307729c8bc5b5a41361af8af95906eee7552acb1 upstream.

    We normally try to avoid reading from write-mostly devices, but when
    we do we really have to check for bad blocks and be sure not to
    try reading them.

    With the current code, best_good_sectors might not get set and that
    causes zero-length read requests to be send down which is very
    confusing.

    This bug was introduced in commit d2eb35acfdccbe2 and so the patch
    is suitable for 3.1.x and 3.2.x

    Reported-and-tested-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
    Reported-and-tested-by: Art -kwaak- van Breemen <ard@telegraafnet.nl>
    Signed-off-by: NeilBrown <neilb@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    drivers/md/raid1.c | 11 ++++++++++-
    1 file changed, 10 insertions(+), 1 deletion(-)

    --- a/drivers/md/raid1.c
    +++ b/drivers/md/raid1.c
    @@ -525,8 +525,17 @@ static int read_balance(struct r1conf *c
    if (test_bit(WriteMostly, &rdev->flags)) {
    /* Don't balance among write-mostly, just
    * use the first as a last resort */
    - if (best_disk < 0)
    + if (best_disk < 0) {
    + if (is_badblock(rdev, this_sector, sectors,
    + &first_bad, &bad_sectors)) {
    + if (first_bad < this_sector)
    + /* Cannot use this */
    + continue;
    + best_good_sectors = first_bad - this_sector;
    + } else
    + best_good_sectors = sectors;
    best_disk = disk;
    + }
    continue;
    }
    /* This is a reasonable device to use. It might

    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2012-01-24 04:07    [W:0.021 / U:0.224 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site