Skip to content

Commit

Permalink
xfs: use xfs_iext_*_extent helpers in xfs_bmap_split_extent_at
Browse files Browse the repository at this point in the history
This abstracts the function away from details of the low-level extent
list implementation.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
  • Loading branch information
Christoph Hellwig authored and Darrick J. Wong committed Sep 1, 2017
1 parent 4da6b51 commit 4c35445
Showing 1 changed file with 4 additions and 16 deletions.
20 changes: 4 additions & 16 deletions fs/xfs/libxfs/xfs_bmap.c
Original file line number Diff line number Diff line change
Expand Up @@ -6253,7 +6253,6 @@ xfs_bmap_split_extent_at(
{
int whichfork = XFS_DATA_FORK;
struct xfs_btree_cur *cur = NULL;
struct xfs_bmbt_rec_host *gotp;
struct xfs_bmbt_irec got;
struct xfs_bmbt_irec new; /* split extent */
struct xfs_mount *mp = ip->i_mount;
Expand Down Expand Up @@ -6285,21 +6284,10 @@ xfs_bmap_split_extent_at(
}

/*
* gotp can be null in 2 cases: 1) if there are no extents
* or 2) split_fsb lies in a hole beyond which there are
* no extents. Either way, we are done.
* If there are not extents, or split_fsb lies in a hole we are done.
*/
gotp = xfs_iext_bno_to_ext(ifp, split_fsb, &current_ext);
if (!gotp)
return 0;

xfs_bmbt_get_all(gotp, &got);

/*
* Check split_fsb lies in a hole or the start boundary offset
* of the extent.
*/
if (got.br_startoff >= split_fsb)
if (!xfs_iext_lookup_extent(ip, ifp, split_fsb, &current_ext, &got) ||
got.br_startoff >= split_fsb)
return 0;

gotblkcnt = split_fsb - got.br_startoff;
Expand All @@ -6322,8 +6310,8 @@ xfs_bmap_split_extent_at(
XFS_WANT_CORRUPTED_GOTO(mp, i == 1, del_cursor);
}

xfs_bmbt_set_blockcount(gotp, gotblkcnt);
got.br_blockcount = gotblkcnt;
xfs_iext_update_extent(ifp, current_ext, &got);

logflags = XFS_ILOG_CORE;
if (cur) {
Expand Down

0 comments on commit 4c35445

Please sign in to comment.