[PATCH 07/18] maple_tree: Clarify comments on mas_nomem()

From: Liam R. Howlett (Oracle)

Date: Mon Jun 29 2026 - 10:55:13 EST


When an allocation completely fails, the return is false. If the
allocation succeeds or partially succeeds, return true to indicate a
retry of the operation. Note that since the lock may have been dropped,
the operation is retried from the start - including potentially
allocating more memory.

Signed-off-by: Liam R. Howlett (Oracle) <liam@xxxxxxxxxxxxx>
---
lib/maple_tree.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/lib/maple_tree.c b/lib/maple_tree.c
index f0aa08902b462..8106eb8bf2eb6 100644
--- a/lib/maple_tree.c
+++ b/lib/maple_tree.c
@@ -5672,10 +5672,11 @@ EXPORT_SYMBOL_GPL(mas_erase);

/**
* mas_nomem() - Check if there was an error allocating and do the allocation
- * if necessary If there are allocations, then free them.
+ * if necessary.
+ *
* @mas: The maple state
* @gfp: The GFP_FLAGS to use for allocations
- * Return: true on allocation, false otherwise.
+ * Return: False on no memory. True otherwise (partial success as well)
*/
bool mas_nomem(struct ma_state *mas, gfp_t gfp)
__must_hold(mas->tree->ma_lock)
@@ -5691,6 +5692,10 @@ bool mas_nomem(struct ma_state *mas, gfp_t gfp)
mas_alloc_nodes(mas, gfp);
}

+ /*
+ * Return false on zero forward progress. Partial allocations are kept
+ * so the retry path will attempt to get the rest.
+ */
if (!mas->sheaf && !mas->alloc)
return false;

--
2.47.3