summaryrefslogtreecommitdiffstats
path: root/fs/xfs/libxfs/xfs_bmap.c
diff options
context:
space:
mode:
authorChristoph Hellwig2017-10-19 20:07:10 +0200
committerDarrick J. Wong2017-10-27 00:38:27 +0200
commit6b18af0dfd1695c1d53a2eeead838a90c27b7cb4 (patch)
treedd87b9aeff264ee27d6e95caed045bcf2aa402a0 /fs/xfs/libxfs/xfs_bmap.c
parentxfs: inline xfs_shift_file_space into callers (diff)
downloadkernel-qcow2-linux-6b18af0dfd1695c1d53a2eeead838a90c27b7cb4.tar.gz
kernel-qcow2-linux-6b18af0dfd1695c1d53a2eeead838a90c27b7cb4.tar.xz
kernel-qcow2-linux-6b18af0dfd1695c1d53a2eeead838a90c27b7cb4.zip
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>
Diffstat (limited to 'fs/xfs/libxfs/xfs_bmap.c')
-rw-r--r--fs/xfs/libxfs/xfs_bmap.c47
1 files changed, 20 insertions, 27 deletions
diff --git a/fs/xfs/libxfs/xfs_bmap.c b/fs/xfs/libxfs/xfs_bmap.c
index defe70a54ffc..d0118a2e51d3 100644
--- a/fs/xfs/libxfs/xfs_bmap.c
+++ b/fs/xfs/libxfs/xfs_bmap.c
@@ -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;
- }
+ 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);
+ if (current_ext == stop_extent) {
+ *done = 1;
+ goto del_cursor;
}
+ xfs_iext_get_extent(ifp, current_ext, &got);
- if (!*done)
- *next_fsb = got.br_startoff;
+ *next_fsb = got.br_startoff;
del_cursor:
if (cur)