lkml.org 
[lkml]   [2022]   [Apr]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 394/599] NFS: Use of mapping_set_error() results in spurious errors
    Date
    From: Trond Myklebust <trond.myklebust@hammerspace.com>

    [ Upstream commit 6c984083ec2453dfd3fcf98f392f34500c73e3f2 ]

    The use of mapping_set_error() in conjunction with calls to
    filemap_check_errors() is problematic because every error gets reported
    as either an EIO or an ENOSPC by filemap_check_errors() in functions
    such as filemap_write_and_wait() or filemap_write_and_wait_range().
    In almost all cases, we prefer to use the more nuanced wb errors.

    Fixes: b8946d7bfb94 ("NFS: Revalidate the file mapping on all fatal writeback errors")
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    fs/nfs/write.c | 5 ++++-
    1 file changed, 4 insertions(+), 1 deletion(-)

    diff --git a/fs/nfs/write.c b/fs/nfs/write.c
    index bde4c362841f..cc926e69ee9b 100644
    --- a/fs/nfs/write.c
    +++ b/fs/nfs/write.c
    @@ -314,7 +314,10 @@ static void nfs_mapping_set_error(struct page *page, int error)
    struct address_space *mapping = page_file_mapping(page);

    SetPageError(page);
    - mapping_set_error(mapping, error);
    + filemap_set_wb_err(mapping, error);
    + if (mapping->host)
    + errseq_set(&mapping->host->i_sb->s_wb_err,
    + error == -ENOSPC ? -ENOSPC : -EIO);
    nfs_set_pageerror(mapping);
    }

    --
    2.34.1


    \
     
     \ /
      Last update: 2022-04-06 00:12    [W:4.031 / U:0.036 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site