mirror of
https://github.com/torvalds/linux.git
synced 2024-11-25 13:41:51 +00:00
maple_tree: preallocate nodes in mas_erase()
Use mas_wr_preallocate() in mas_erase() to preallocate enough nodes to complete the erase. Add error handling by skipping the store if the preallocation lead to some error besides no memory. Link: https://lkml.kernel.org/r/20240814161944.55347-7-sidhartha.kumar@oracle.com Signed-off-by: Sidhartha Kumar <sidhartha.kumar@oracle.com> Cc: Liam R. Howlett <Liam.Howlett@oracle.com> Cc: Matthew Wilcox (Oracle) <willy@infradead.org> Cc: Suren Baghdasaryan <surenb@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
3cd9e92e00
commit
7e093834ed
@ -6371,14 +6371,18 @@ write_retry:
|
||||
|
||||
/* Must reset to ensure spanning writes of last slot are detected */
|
||||
mas_reset(mas);
|
||||
mas_wr_store_setup(&wr_mas);
|
||||
mas_wr_store_entry(&wr_mas);
|
||||
mas_wr_preallocate(&wr_mas, NULL);
|
||||
if (mas_nomem(mas, GFP_KERNEL)) {
|
||||
/* in case the range of entry changed when unlocked */
|
||||
mas->index = mas->last = index;
|
||||
goto write_retry;
|
||||
}
|
||||
|
||||
if (mas_is_err(mas))
|
||||
goto out;
|
||||
|
||||
mas_wr_store_entry(&wr_mas);
|
||||
out:
|
||||
mas_destroy(mas);
|
||||
return entry;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user