lkml.org 
[lkml]   [2014]   [Oct]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.16 330/357] md/raid1: be more cautious where we read-balance during resync.
    Date
    3.16-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: NeilBrown <neilb@suse.de>

    commit c6d119cf1b5a778e9ed60a006e2a434fcc4471a2 upstream.

    commit 79ef3a8aa1cb1523cc231c9a90a278333c21f761 made
    it possible for reads to happen concurrently with resync.
    This means that we need to be more careful where read_balancing
    is allowed during resync - we can no longer be sure that any
    resync that has already started will definitely finish.

    So keep read_balancing to before recovery_cp, which is conservative
    but safe.

    This bug makes it possible to read from a device that doesn't
    have up-to-date data, so it can cause data corruption.
    So it is suitable for any kernel since 3.11.

    Fixes: 79ef3a8aa1cb1523cc231c9a90a278333c21f761
    Signed-off-by: NeilBrown <neilb@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/md/raid1.c | 6 +-----
    1 file changed, 1 insertion(+), 5 deletions(-)

    --- a/drivers/md/raid1.c
    +++ b/drivers/md/raid1.c
    @@ -540,11 +540,7 @@ static int read_balance(struct r1conf *c
    has_nonrot_disk = 0;
    choose_next_idle = 0;

    - if (conf->mddev->recovery_cp < MaxSector &&
    - (this_sector + sectors >= conf->next_resync))
    - choose_first = 1;
    - else
    - choose_first = 0;
    + choose_first = (conf->mddev->recovery_cp < this_sector + sectors);

    for (disk = 0 ; disk < conf->raid_disks * 2 ; disk++) {
    sector_t dist;



    \
     
     \ /
      Last update: 2014-10-04 00:42    [W:4.036 / U:0.272 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site