lkml.org 
[lkml]   [2015]   [Jun]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.16.y-ckt 023/110] md/raid5: don't record new size if resize_stripes fails.
    Date
    3.16.7-ckt13 -stable review patch.  If anyone has any objections, please let me know.

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

    From: NeilBrown <neilb@suse.de>

    commit 6e9eac2dcee5e19f125967dd2be3e36558c42fff upstream.

    If any memory allocation in resize_stripes fails we will return
    -ENOMEM, but in some cases we update conf->pool_size anyway.

    This means that if we try again, the allocations will be assumed
    to be larger than they are, and badness results.

    So only update pool_size if there is no error.

    This bug was introduced in 2.6.17 and the patch is suitable for
    -stable.

    Fixes: ad01c9e3752f ("[PATCH] md: Allow stripes to be expanded in preparation for expanding an array")
    Signed-off-by: NeilBrown <neilb@suse.de>
    Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
    ---
    drivers/md/raid5.c | 3 ++-
    1 file changed, 2 insertions(+), 1 deletion(-)

    diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
    index b1b9efb5359f..6d7d2f3059a7 100644
    --- a/drivers/md/raid5.c
    +++ b/drivers/md/raid5.c
    @@ -1941,7 +1941,8 @@ static int resize_stripes(struct r5conf *conf, int newsize)

    conf->slab_cache = sc;
    conf->active_name = 1-conf->active_name;
    - conf->pool_size = newsize;
    + if (!err)
    + conf->pool_size = newsize;
    return err;
    }


    \
     
     \ /
      Last update: 2015-06-05 17:01    [W:2.629 / U:0.032 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site