summaryrefslogtreecommitdiffstats
path: root/fs/xfs/xfs_rtalloc.c
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2023-12-18 05:57:29 +0100
committerChandan Babu R <chandanbabu@kernel.org>2023-12-22 11:18:13 +0530
commit9ade45b08a685e121895228f344af1f8985adb2c (patch)
tree7f81a43eceaad902bb811a5fdecdc57413e63c90 /fs/xfs/xfs_rtalloc.c
parentf3e509dd45c226aff268bab3695fded60e18f720 (diff)
downloadlinux-9ade45b08a685e121895228f344af1f8985adb2c.tar.gz
linux-9ade45b08a685e121895228f344af1f8985adb2c.tar.bz2
linux-9ade45b08a685e121895228f344af1f8985adb2c.zip
xfs: reflow the tail end of xfs_rtallocate_extent_block
Change polarity of a check so that the successful case of being able to allocate an extent is in the main path of the function and error handling is on a branch. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: "Darrick J. Wong" <djwong@kernel.org> Signed-off-by: Chandan Babu R <chandanbabu@kernel.org>
Diffstat (limited to 'fs/xfs/xfs_rtalloc.c')
-rw-r--r--fs/xfs/xfs_rtalloc.c44
1 files changed, 23 insertions, 21 deletions
diff --git a/fs/xfs/xfs_rtalloc.c b/fs/xfs/xfs_rtalloc.c
index abcbd0c95b30..c52f479e3abd 100644
--- a/fs/xfs/xfs_rtalloc.c
+++ b/fs/xfs/xfs_rtalloc.c
@@ -289,36 +289,38 @@ xfs_rtallocate_extent_block(
if (error)
return error;
}
+
/*
* Searched the whole thing & didn't find a maxlen free extent.
*/
- if (minlen <= maxlen && besti != -1) {
- xfs_rtxlen_t p; /* amount to trim length by */
-
+ if (minlen > maxlen || besti == -1) {
/*
- * If size should be a multiple of prod, make that so.
+ * Allocation failed. Set *nextp to the next block to try.
*/
- if (prod > 1) {
- div_u64_rem(bestlen, prod, &p);
- if (p)
- bestlen -= p;
- }
+ *nextp = next;
+ return -ENOSPC;
+ }
- /*
- * Allocate besti for bestlen & return that.
- */
- error = xfs_rtallocate_range(args, besti, bestlen);
- if (error)
- return error;
- *len = bestlen;
- *rtx = besti;
- return 0;
+ /*
+ * If size should be a multiple of prod, make that so.
+ */
+ if (prod > 1) {
+ xfs_rtxlen_t p; /* amount to trim length by */
+
+ div_u64_rem(bestlen, prod, &p);
+ if (p)
+ bestlen -= p;
}
+
/*
- * Allocation failed. Set *nextp to the next block to try.
+ * Allocate besti for bestlen & return that.
*/
- *nextp = next;
- return -ENOSPC;
+ error = xfs_rtallocate_range(args, besti, bestlen);
+ if (error)
+ return error;
+ *len = bestlen;
+ *rtx = besti;
+ return 0;
}
/*