lkml.org 
[lkml]   [2019]   [Sep]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 4.14 81/89] raid5: don't increment read_errors on EILSEQ return
    Date
    From: Nigel Croxon <ncroxon@redhat.com>

    [ Upstream commit b76b4715eba0d0ed574f58918b29c1b2f0fa37a8 ]

    While MD continues to count read errors returned by the lower layer.
    If those errors are -EILSEQ, instead of -EIO, it should NOT increase
    the read_errors count.

    When RAID6 is set up on dm-integrity target that detects massive
    corruption, the leg will be ejected from the array. Even if the
    issue is correctable with a sector re-write and the array has
    necessary redundancy to correct it.

    The leg is ejected because it runs up the rdev->read_errors beyond
    conf->max_nr_stripes. The return status in dm-drypt when there is
    a data integrity error is -EILSEQ (BLK_STS_PROTECTION).

    Signed-off-by: Nigel Croxon <ncroxon@redhat.com>
    Signed-off-by: Song Liu <songliubraving@fb.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    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 cc0bd528136db..9f2059e185f7f 100644
    --- a/drivers/md/raid5.c
    +++ b/drivers/md/raid5.c
    @@ -2538,7 +2538,8 @@ static void raid5_end_read_request(struct bio * bi)
    int set_bad = 0;

    clear_bit(R5_UPTODATE, &sh->dev[i].flags);
    - atomic_inc(&rdev->read_errors);
    + if (!(bi->bi_status == BLK_STS_PROTECTION))
    + atomic_inc(&rdev->read_errors);
    if (test_bit(R5_ReadRepl, &sh->dev[i].flags))
    pr_warn_ratelimited(
    "md/raid:%s: read error on replacement device (sector %llu on %s).\n",
    --
    2.20.1
    \
     
     \ /
      Last update: 2019-09-22 21:09    [W:4.021 / U:0.148 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site