xfs: remove XFS_BMAP_MAX_SHIFT_EXTENTS

The define was always set to 1, which means looping until we reach is
was dead code from the start.

Also remove an initialization of next_fsb for the done case that doesn't
fit the new code flow - it was never checked by the caller in the done
case to start with.

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>
This commit is contained in:
Christoph Hellwig 2017-10-19 11:07:10 -07:00 committed by Darrick J. Wong
parent 4ed36c6b09
commit 6b18af0dfd
3 changed files with 24 additions and 51 deletions

View File

@ -5703,8 +5703,7 @@ update_current_ext:
/*
* Shift extent records to the left/right to cover/create a hole.
*
* The maximum number of extents to be shifted in a single operation is
* @num_exts. @stop_fsb specifies the file offset at which to stop shift and the
* @stop_fsb specifies the file offset at which to stop shift and the
* file offset where we've left off is returned in @next_fsb. @offset_shift_fsb
* is the length by which each extent is shifted. If there is no hole to shift
* the extents into, this will be considered invalid operation and we abort
@ -5720,14 +5719,12 @@ xfs_bmap_shift_extents(
xfs_fileoff_t stop_fsb,
xfs_fsblock_t *firstblock,
struct xfs_defer_ops *dfops,
enum shift_direction direction,
int num_exts)
enum shift_direction direction)
{
struct xfs_btree_cur *cur = NULL;
struct xfs_bmbt_irec got;
struct xfs_mount *mp = ip->i_mount;
struct xfs_ifork *ifp;
xfs_extnum_t nexts = 0;
xfs_extnum_t current_ext;
xfs_extnum_t total_extents;
xfs_extnum_t stop_extent;
@ -5825,31 +5822,27 @@ xfs_bmap_shift_extents(
}
}
while (nexts++ < num_exts) {
error = xfs_bmse_shift_one(ip, whichfork, offset_shift_fsb,
&current_ext, &got, cur, &logflags,
direction, dfops);
if (error)
goto del_cursor;
/*
* If there was an extent merge during the shift, the extent
* count can change. Update the total and grade the next record.
*/
if (direction == SHIFT_LEFT) {
total_extents = xfs_iext_count(ifp);
stop_extent = total_extents;
}
if (current_ext == stop_extent) {
*done = 1;
*next_fsb = NULLFSBLOCK;
break;
}
xfs_iext_get_extent(ifp, current_ext, &got);
error = xfs_bmse_shift_one(ip, whichfork, offset_shift_fsb,
&current_ext, &got, cur, &logflags,
direction, dfops);
if (error)
goto del_cursor;
/*
* If there was an extent merge during the shift, the extent
* count can change. Update the total and grade the next record.
*/
if (direction == SHIFT_LEFT) {
total_extents = xfs_iext_count(ifp);
stop_extent = total_extents;
}
if (!*done)
*next_fsb = got.br_startoff;
if (current_ext == stop_extent) {
*done = 1;
goto del_cursor;
}
xfs_iext_get_extent(ifp, current_ext, &got);
*next_fsb = got.br_startoff;
del_cursor:
if (cur)

View File

@ -183,15 +183,6 @@ static inline bool xfs_bmap_is_real_extent(struct xfs_bmbt_irec *irec)
!isnullstartblock(irec->br_startblock);
}
/*
* This macro is used to determine how many extents will be shifted
* in one write transaction. We could require two splits,
* an extent move on the first and an extent merge on the second,
* So it is proper that one extent is shifted inside write transaction
* at a time.
*/
#define XFS_BMAP_MAX_SHIFT_EXTENTS 1
enum shift_direction {
SHIFT_LEFT = 0,
SHIFT_RIGHT,
@ -240,8 +231,7 @@ uint xfs_default_attroffset(struct xfs_inode *ip);
int xfs_bmap_shift_extents(struct xfs_trans *tp, struct xfs_inode *ip,
xfs_fileoff_t *next_fsb, xfs_fileoff_t offset_shift_fsb,
int *done, xfs_fileoff_t stop_fsb, xfs_fsblock_t *firstblock,
struct xfs_defer_ops *dfops, enum shift_direction direction,
int num_exts);
struct xfs_defer_ops *dfops, enum shift_direction direction);
int xfs_bmap_split_extent(struct xfs_inode *ip, xfs_fileoff_t split_offset);
int xfs_bmapi_reserve_delalloc(struct xfs_inode *ip, int whichfork,
xfs_fileoff_t off, xfs_filblks_t len, xfs_filblks_t prealloc,

View File

@ -1359,14 +1359,9 @@ xfs_collapse_file_space(
xfs_trans_ijoin(tp, ip, XFS_ILOCK_EXCL);
xfs_defer_init(&dfops, &first_block);
/*
* We are using the write transaction in which max 2 bmbt
* updates are allowed
*/
error = xfs_bmap_shift_extents(tp, ip, &next_fsb, shift_fsb,
&done, stop_fsb, &first_block, &dfops,
SHIFT_LEFT, XFS_BMAP_MAX_SHIFT_EXTENTS);
SHIFT_LEFT);
if (error)
goto out_bmap_cancel;
@ -1438,14 +1433,9 @@ xfs_insert_file_space(
xfs_ilock(ip, XFS_ILOCK_EXCL);
xfs_trans_ijoin(tp, ip, XFS_ILOCK_EXCL);
xfs_defer_init(&dfops, &first_block);
/*
* We are using the write transaction in which max 2 bmbt
* updates are allowed
*/
error = xfs_bmap_shift_extents(tp, ip, &next_fsb, shift_fsb,
&done, stop_fsb, &first_block, &dfops,
SHIFT_RIGHT, XFS_BMAP_MAX_SHIFT_EXTENTS);
SHIFT_RIGHT);
if (error)
goto out_bmap_cancel;