]>
www.infradead.org Git - users/jedix/linux-maple.git/log
Liam R. Howlett [Fri, 17 Jul 2020 21:23:03 +0000 (17:23 -0400)]
maple_tree: Cleaning
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Fri, 17 Jul 2020 21:22:55 +0000 (17:22 -0400)]
maple_tree: Cleaning
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Fri, 17 Jul 2020 21:11:41 +0000 (17:11 -0400)]
maple_tree: Drop deleted/retry/skip logic
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Fri, 17 Jul 2020 21:08:37 +0000 (17:08 -0400)]
maple_tree: Drop deleted/retry/skip logic
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Fri, 17 Jul 2020 21:04:07 +0000 (17:04 -0400)]
maple_tree: Comments.
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Fri, 17 Jul 2020 20:47:48 +0000 (16:47 -0400)]
maple_tree: Comments, and also mab_mas_cp always uses 0 for the node start
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Fri, 17 Jul 2020 20:43:57 +0000 (16:43 -0400)]
maple_tree: Comments comments comments.
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Fri, 17 Jul 2020 20:07:53 +0000 (16:07 -0400)]
maple_tree: Remove mte_update_rcu_slot and add comments
mte_update_rcu_slot is the same as mte_set_rcu_slot, so drop it
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Fri, 17 Jul 2020 19:59:10 +0000 (15:59 -0400)]
cleanup mast_new_root
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Fri, 17 Jul 2020 19:54:37 +0000 (15:54 -0400)]
maple_tree: Drop unnecessary reset
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Fri, 17 Jul 2020 19:51:27 +0000 (15:51 -0400)]
maple_tree: mas_split cleanup
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Fri, 17 Jul 2020 03:32:51 +0000 (23:32 -0400)]
maple_tree: not much
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Fri, 17 Jul 2020 03:24:04 +0000 (23:24 -0400)]
maple_tree: combine_separate reduction with copy out to nodes
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Fri, 17 Jul 2020 03:07:31 +0000 (23:07 -0400)]
maple_tree: combine_separate reduction with parents and cp_left/cp_right
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Fri, 17 Jul 2020 02:51:43 +0000 (22:51 -0400)]
maple_tree: Cleaner check in combine_separate
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Fri, 17 Jul 2020 02:49:01 +0000 (22:49 -0400)]
maple_tree: Cleaner check in combine_separate
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Fri, 17 Jul 2020 02:46:16 +0000 (22:46 -0400)]
maple_tree: reduce line count
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Fri, 17 Jul 2020 02:32:32 +0000 (22:32 -0400)]
maple_tree: mas_mab_cp sets b_end now
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Fri, 17 Jul 2020 02:09:28 +0000 (22:09 -0400)]
maple_tree: Attempt to reduce split function size
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Fri, 17 Jul 2020 01:54:36 +0000 (21:54 -0400)]
maple_tree: wip, try the maple_subtree_state for smaller functions
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Fri, 17 Jul 2020 01:11:03 +0000 (21:11 -0400)]
maple_tree: wip, add maple_subtree_state
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Fri, 17 Jul 2020 01:08:53 +0000 (21:08 -0400)]
maple_tree: wip, add maple_subtree_state
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Thu, 16 Jul 2020 15:59:40 +0000 (11:59 -0400)]
maple_tree: Code cleanup, mostly in split
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Thu, 16 Jul 2020 15:50:27 +0000 (11:50 -0400)]
maple_tree: Start using b_node->b_end in mas_split
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Thu, 16 Jul 2020 15:05:44 +0000 (11:05 -0400)]
maple_tree: Remove fixed array size from mas_split and use ma_topiary instead.
Also, move common smp_wmb() from split and combine_separate function into a helper.
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Thu, 16 Jul 2020 02:08:51 +0000 (22:08 -0400)]
maple_tree: Code reduction
also move __mas_walk, mas_rewind_node, move mas_skip_node
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Sat, 11 Jul 2020 00:48:44 +0000 (20:48 -0400)]
maple_tree: mas_combine_separate changes.
Fix the calculation of node splitting when needing 3 nodes.
Change allocation count, spanning store may cause more allocations if
rebalancing across nodes occurs.
Remove free/destroy lists and use a linked list.
Weight reduction of the function.
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Sat, 11 Jul 2020 00:48:21 +0000 (20:48 -0400)]
mm/mmap: Change debug for maple tree
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Fri, 10 Jul 2020 19:07:50 +0000 (15:07 -0400)]
maple_tree: Remove debug
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Tue, 7 Jul 2020 15:26:19 +0000 (11:26 -0400)]
maple_tree: Add freeing of nodes.
Node freeing is tracked by what was consumed in the previous step and
freed along with what was overwritten in the spanning store that must be
destroyed.
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Fri, 3 Jul 2020 01:34:43 +0000 (21:34 -0400)]
maple_tree: wip, fix underrun on root expand when range starts at zero but ends elsewhere
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Fri, 3 Jul 2020 01:03:51 +0000 (21:03 -0400)]
maple_tree: wip, fix splitting into 3, fix range of combine_separate, fix test for gap_combining.
Splitting into 3 was not functioning due to an error in setting the parent and the split calc.
combine_separate was not copying the contents of the mas state over to orig_l_mas which became a problem with the limit checking the end of data.
gap_combining tests were rendered broken due to splitting changes with a NULL ending.
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Wed, 1 Jul 2020 01:32:52 +0000 (21:32 -0400)]
maple_tree: wip. Combine mas_extend_null in mas_store and
mas_spanning_store.
Pass:
13130626 Run:
13130627
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Tue, 30 Jun 2020 17:30:06 +0000 (13:30 -0400)]
wip, maple_tree: Pass 824089 - rebalance and spanning store using most of the same code now
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Thu, 25 Jun 2020 23:13:24 +0000 (19:13 -0400)]
wip, maple_tree: Pass 850785 - added check for min node size. need to rebalance spanning store
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Thu, 25 Jun 2020 01:41:15 +0000 (21:41 -0400)]
wip: maple_tree: factor out descend and node adoption
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Thu, 25 Jun 2020 01:40:53 +0000 (21:40 -0400)]
wip: maple_tree: factor out descend and node adoption
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Wed, 24 Jun 2020 14:13:14 +0000 (10:13 -0400)]
wip: pass 747201. Rework some gap stuff.
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Wed, 24 Jun 2020 00:35:09 +0000 (20:35 -0400)]
wip: pass 747114 - fix r_mas.max when there is no r_mas.max for skipping data
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Wed, 24 Jun 2020 00:10:56 +0000 (20:10 -0400)]
wip: Add height reset to destroy and debug output.
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Wed, 24 Jun 2020 00:05:25 +0000 (20:05 -0400)]
wip: pass 678642 tc
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Thu, 18 Jun 2020 18:14:45 +0000 (14:14 -0400)]
maple_tree: wip, initial rebalance on regular commit, fixes for spanning store, adoption, gaps..
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Fri, 12 Jun 2020 14:57:22 +0000 (10:57 -0400)]
wip: spanning store & signed full_cnt
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Thu, 11 Jun 2020 01:13:38 +0000 (21:13 -0400)]
maple_tree: WIP, start passing big data through for all stores
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Tue, 9 Jun 2020 20:23:21 +0000 (16:23 -0400)]
maple_tree: WIP, diet
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Tue, 9 Jun 2020 20:11:57 +0000 (16:11 -0400)]
maple_tree: WIP, partial spanning store code.
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Tue, 2 Jun 2020 20:15:28 +0000 (16:15 -0400)]
maple_tree: 3 wip
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Wed, 20 May 2020 22:28:28 +0000 (18:28 -0400)]
wip, broken and abandoning this plan for no retry
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Wed, 20 May 2020 17:22:16 +0000 (13:22 -0400)]
maple_tree: Remove mt_is_advanced in favor of xa_is_advanced.
The two functions are now the same so just use the xa_ version.
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Wed, 20 May 2020 17:14:47 +0000 (13:14 -0400)]
xarray: Change range of xa_is_advanced
XA_ZERO_ENTRY is the is largest advanced internal entry.
Return true if an internal entry is less than the XA_ZERO_ENTRY.
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Tue, 19 May 2020 18:57:46 +0000 (14:57 -0400)]
maple_tree: Fix gap issues and combining issue
Incorrect gap calculation caused by mas_prev not setting the ma_state
limits correctly.
Gap relocation failed due to fully empty node (deleted)
Gap relocation issues when hitting a retry entry
Missing data due to combining nodes incorrectly when the right node has
a retry at the start.
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Sat, 9 May 2020 01:02:27 +0000 (21:02 -0400)]
maple_tree and mm/mmap: Try to stop tracepoints on BUG_ON
Restore printk's until we know it happens.
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Fri, 8 May 2020 15:29:55 +0000 (11:29 -0400)]
trace/events/mm_mt.h: Fix prototype for __vma_mt_szero
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Fri, 8 May 2020 14:14:25 +0000 (10:14 -0400)]
trace/events/mm_mt: Add maple tree mm tracepoints.
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Fri, 8 May 2020 13:29:45 +0000 (09:29 -0400)]
trace/events/mm rename to mm_mt
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Fri, 8 May 2020 02:12:58 +0000 (22:12 -0400)]
mm/mmap: Fix unmapped_area_topdown with align_offset
align_offset should be aligned to align_mask.. apparently.
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Thu, 7 May 2020 21:59:51 +0000 (17:59 -0400)]
mm/mmap: Move maple tree logging to tracepoints
Able to toggle at runtime? Count me in.
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Thu, 7 May 2020 20:07:49 +0000 (16:07 -0400)]
mm/mmap: Fix maple tree calculation for topdown with alignment mask.
When using alignment mask, calculate the address correctly.
Found by LTP futex_wake04
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Thu, 7 May 2020 20:07:17 +0000 (16:07 -0400)]
maple_tree: Add test for reverse search with mask.
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Thu, 7 May 2020 01:13:43 +0000 (21:13 -0400)]
mm/mmap: Add call to maple_destroy
When tearing down a vma, destroy the maple tree as well.
Also clean up some old print debugs.
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Thu, 7 May 2020 01:12:28 +0000 (21:12 -0400)]
maple_tree: Fix mas_append of extra null.
When attempting to append to a node, it is possible that the source
contains multiple NULL entries that will be coalesced together and thus
will not overflow even though it may appear that was on initial
inspection.
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Wed, 6 May 2020 18:04:47 +0000 (14:04 -0400)]
maple_tree: Skip multiple deletes in split calculation.
When splitting, do not split within consecutive NULL entries. Doing so
would cause separated gaps.
Also reset mas->node before walking in two other places which could
potentially cause issue.
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Wed, 6 May 2020 03:17:52 +0000 (23:17 -0400)]
maple_tree: Reset mas location before walking in mas_rebalance_gaps.
After rebalancing, the mas node may not be in the correct location to
find the mas->index, so reset to MAS_START prior to starting the walk.
Added test case for this issue as well.
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Wed, 6 May 2020 01:18:56 +0000 (21:18 -0400)]
mm/mmap: Move VM_BUG_ON inside other check for maple tree
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Wed, 6 May 2020 01:15:23 +0000 (21:15 -0400)]
maple_tree: Fix skip entries on spanning adds and issue in split data
When spanning adds hit a skip entry, they were not updated and thus
future events may use the incorrect minimum from the previous
not-updated pivot. Fix these pivots when writing spanning adds.
There was also an issue with using the incorrect ranges in the split
code path in mas_append_split_data() which could cause data to be
skipped. This is now fixed and there are testcases to test for the
discovered event.
The spanning add issue was tested with set25 in check_erase2_testset.
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Wed, 29 Apr 2020 19:04:29 +0000 (15:04 -0400)]
maple_tree: Fix off-by-one error on mas->min when calling mas_prev.
When using a non-zero slot, the mas->min was set incorrectly for
mas_prev causing the gap calculation to be off-by-one and verification
to fail.
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Tue, 21 Apr 2020 19:53:27 +0000 (15:53 -0400)]
test_maple_tree: Add test which discovered the retry limit issues.
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Tue, 21 Apr 2020 19:52:31 +0000 (15:52 -0400)]
maple_tree: Fix gap on skip entries caused by relocated data.
The gap should be zero for skip entries.
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Tue, 21 Apr 2020 19:50:51 +0000 (15:50 -0400)]
maple_tree: Fix overrunning end of node into RETRY entries.
When entries are moved and replaced with a RETRY, the node will end
prior to hitting a 0 pivot or the end of the node. Fix this scenario by
detecting the pivot > mas->max and handle these cases correctly.
This also fixes the validation code to avoid checking the range on RETRY
entries.
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Fri, 17 Apr 2020 19:19:47 +0000 (15:19 -0400)]
maple_tree: Fix limits check with retry entries
When entries are relocated, the retry entry may not fall within the
limits of this node as it has been relocated to the next node.
Also, add define U8_MAX UCHAR_MAX in test code.
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Fri, 6 Mar 2020 18:59:43 +0000 (13:59 -0500)]
test_maple_tree: Don't count retry entries during entry counting.
retries are skipped, so don't count them so the test framework will come
up with the correct count.
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Fri, 6 Mar 2020 18:45:54 +0000 (13:45 -0500)]
maple_tree: Support freeing empty nodes on gap relocation.
When a gap is created during a low memory situation, coalesce may not be
able to group the gap together. This can be handled by moving the right
node to the left & using a SKIP entry. Note that this situation should
not arise unless in a low-memory situation, so a SKIP entry is useful as
it indicates the tree may need to be rebuilt after memory pressure
subsides.
When an empty node is found,
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Wed, 4 Mar 2020 17:00:33 +0000 (12:00 -0500)]
maple_tree: Zero pivots of gaps that have been moved.
This doesn't seem totally correct and should really use a new node.
A solution for low mem is needed too.
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Tue, 3 Mar 2020 17:03:47 +0000 (12:03 -0500)]
maple_tree: Combine gaps with retry entries.
When a retry entry is hit, combine it into the gap as it was relocated
to where the gap exists now.
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Tue, 3 Mar 2020 13:19:30 +0000 (08:19 -0500)]
maple_tree: Clean up mas_data_end interface.
Some places don't care about coalesce and the last pivot, so provide a
cleaner way to get just the end to clean up that code.
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Tue, 3 Mar 2020 13:18:51 +0000 (08:18 -0500)]
maple_tree: whitespace fix.
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Matthew Wilcox (Oracle) [Mon, 2 Mar 2020 21:16:00 +0000 (16:16 -0500)]
maple_tree: Fix rcu_dereference usages
Enabling CONFIG_PROVE_LOCKING reveals some compilation errors and
running it shows that loading the root pointer needs to be done with
rcu_dereference_protected() (which will permit the load if the lock is
held) instead of a plain rcu_dereference() (which permits the load if
the rcu read lock is held).
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Matthew Wilcox (Oracle) [Mon, 2 Mar 2020 21:09:00 +0000 (16:09 -0500)]
maple_tree: no need to rcu_dereference in mtree_empty()
Since we're only comparing the value of the pointer to NULL, we
don't need to use rcu_dereference(). This is explicitly documented
in Documentation/RCU/rcu_dereference.rst.
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Matthew Wilcox (Oracle) [Mon, 2 Mar 2020 21:24:19 +0000 (16:24 -0500)]
mm: Fix compilation warnings
Nothing terribly interesting here.
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Liam R. Howlett [Tue, 3 Mar 2020 03:33:28 +0000 (22:33 -0500)]
maple_tree: Fix lock_dep calls to use pointers.
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Tue, 3 Mar 2020 03:32:23 +0000 (22:32 -0500)]
mm/mmap: Move variable declaring prior to code.
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Tue, 3 Mar 2020 03:21:37 +0000 (22:21 -0500)]
maple_tree: Fix overwritten slot in mas during __mas_add
Overwriting the slot in the ma state caused issues later on. Restore
the value and fix the code in mas_may_move_gap to also detect such
scenarios.
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Mon, 2 Mar 2020 19:54:06 +0000 (14:54 -0500)]
maple_tree: Small code cleanup, white spaces etc.
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Mon, 2 Mar 2020 18:45:42 +0000 (13:45 -0500)]
MAINTAINERS: Add maple tree
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Mon, 2 Mar 2020 18:31:17 +0000 (13:31 -0500)]
maple_tree: Add support for combining gaps.
When gaps touch but are not in the same node, move them to the right
node. This allows for searches to find the desired gap.
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Matthew Wilcox (Oracle) [Fri, 28 Feb 2020 20:46:27 +0000 (15:46 -0500)]
extra debug
Liam R. Howlett [Mon, 2 Mar 2020 16:22:53 +0000 (11:22 -0500)]
maple_tree: Fix RCU reads to use rcu_dereference_check and writes to use
rcu_assign_pointer
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Mon, 2 Mar 2020 15:43:00 +0000 (10:43 -0500)]
maple_tree: Fix placement of data during add operation during certain
conditions.
When partially overwriting the sources end slot and coalescing data
during the copy operation, there was a potential for an overflow during
a store operation. Avoid the overflow by using the new node end instead
of the slot passed in as the destination.
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Matthew Wilcox (Oracle) [Thu, 27 Feb 2020 19:57:32 +0000 (14:57 -0500)]
mm: Get rid of maple tree whitespace changes
Nothing here makes any difference to the generated code.
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Matthew Wilcox (Oracle) [Thu, 27 Feb 2020 15:47:07 +0000 (10:47 -0500)]
maple_tree: Clean up debug infrastructure
making tests_run & tests_passed static means there's one copy of them in
every file that includes maple_tree.h. Make them extern, prefix them
with maple_tree_, move them to maple_tree.c and export them so that
test_maple_tree can be built as a module.
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Matthew Wilcox (Oracle) [Thu, 27 Feb 2020 15:16:09 +0000 (10:16 -0500)]
maple_tree: Move xa_get_alloc_size
... into ma_xa_benchmark.
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Liam R. Howlett [Fri, 28 Feb 2020 20:33:24 +0000 (15:33 -0500)]
mm/mmap: Remove maple tree erase call in __vma_unlink_common
__vma_unlink_common is used when overwriting the next vma entry. Maple
tree overwrites these entries on the store of the vma itself.
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Fri, 28 Feb 2020 20:19:07 +0000 (15:19 -0500)]
mm/mmap: Maple tree update for validate_mm_mt and comments
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Fri, 28 Feb 2020 17:09:32 +0000 (12:09 -0500)]
mmap: Write changes to next to the maple tree.
When mprotect case 4 is hit (expand next back over vma), you have to
write the changes to the maple tree or there will be a missing mapping.
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Thu, 27 Feb 2020 03:39:36 +0000 (22:39 -0500)]
maple_tree: Initial documentation straw man.
Just add the file and some headers. Details need to come from Thoughts.
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Matthew Wilcox (Oracle) [Wed, 26 Feb 2020 19:00:43 +0000 (14:00 -0500)]
Renumber XA.*ENTRY constants
Entries below 256 are reserved for siblings, so renumber the RETRY
entry back to 256. Entries which are ZERO and higher are allowed to
be inserted into the XArray, so renumber ZERO to 259, and slot SKIP and
DELETED in at 257 and 258.
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Liam R. Howlett [Tue, 25 Feb 2020 16:45:28 +0000 (11:45 -0500)]
Revert "maple_tree: Rework node split calculation for better non-leaf node split"
Efficient splitting is causing issues in certain scenarios with regards
to allocation trees. Revisit later.
This reverts commit
4a0a2dd623fae22f2823a0711193aafef3479e71 .
Liam R. Howlett [Tue, 25 Feb 2020 16:18:51 +0000 (11:18 -0500)]
maple_tree: Fix off by one on mas_prev when going to previous node.
mas_prev_nentry decrements the slot prior to checking for an entry, so
don't decrement the slot in mas_prev loop on new nodes.
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Tue, 25 Feb 2020 02:36:03 +0000 (21:36 -0500)]
mm/mmap: Don't adjust next for maple tree operations.
As maple tree store operation will alter the start location of the next
node if it they overlap, there is no need to erase and store the same
VMA. In fact, since the start location is now occupied by the current
VMA, the erase operation will remove the wrong entry.
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Liam R. Howlett [Tue, 25 Feb 2020 02:35:05 +0000 (21:35 -0500)]
maple_tree: Set slot in mas_prev_slot to get the pivot
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>