lkml.org 
[lkml]   [2017]   [Dec]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 124/178] xfs: fix incorrect extent state in xfs_bmap_add_extent_unwritten_real
    Date
    4.14-stable review patch.  If anyone has any objections, please let me know.

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

    From: Christoph Hellwig <hch@lst.de>


    [ Upstream commit 5e422f5e4fd71d18bc6b851eeb3864477b3d842e ]

    There was one spot in xfs_bmap_add_extent_unwritten_real that didn't use the
    passed in new extent state but always converted to normal, leading to wrong
    behavior when converting from normal to unwritten.

    Only found by code inspection, it seems like this code path to move partial
    extent from written to unwritten while merging it with the next extent is
    rarely exercised.

    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Brian Foster <bfoster@redhat.com>
    Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    fs/xfs/libxfs/xfs_bmap.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    --- a/fs/xfs/libxfs/xfs_bmap.c
    +++ b/fs/xfs/libxfs/xfs_bmap.c
    @@ -2560,7 +2560,7 @@ xfs_bmap_add_extent_unwritten_real(
    &i)))
    goto done;
    XFS_WANT_CORRUPTED_GOTO(mp, i == 0, done);
    - cur->bc_rec.b.br_state = XFS_EXT_NORM;
    + cur->bc_rec.b.br_state = new->br_state;
    if ((error = xfs_btree_insert(cur, &i)))
    goto done;
    XFS_WANT_CORRUPTED_GOTO(mp, i == 1, done);

    \
     
     \ /
      Last update: 2017-12-18 17:18    [W:4.115 / U:0.056 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site