xarray: Replace exceptional entries
authorMatthew Wilcox <willy@infradead.org>
Fri, 3 Nov 2017 17:30:42 +0000 (13:30 -0400)
committerMatthew Wilcox <willy@infradead.org>
Sun, 30 Sep 2018 02:47:49 +0000 (22:47 -0400)
commit3159f943aafdbacb2f94c38fdaadabf2bbde2a14
tree7e06823a1ab7e90774535d17a217a939bdddda3b
parent66ee620f06f99d72475db6eb638559ba608c7dee
xarray: Replace exceptional entries

Introduce xarray value entries and tagged pointers to replace radix
tree exceptional entries.  This is a slight change in encoding to allow
the use of an extra bit (we can now store BITS_PER_LONG - 1 bits in a
value entry).  It is also a change in emphasis; exceptional entries are
intimidating and different.  As the comment explains, you can choose
to store values or pointers in the xarray and they are both first-class
citizens.

Signed-off-by: Matthew Wilcox <willy@infradead.org>
Reviewed-by: Josef Bacik <jbacik@fb.com>
26 files changed:
arch/powerpc/include/asm/book3s/64/pgtable.h
arch/powerpc/include/asm/nohash/64/pgtable.h
drivers/gpu/drm/i915/i915_gem.c
drivers/staging/erofs/utils.c
fs/btrfs/compression.c
fs/dax.c
fs/proc/task_mmu.c
include/linux/radix-tree.h
include/linux/swapops.h
include/linux/xarray.h
lib/idr.c
lib/radix-tree.c
mm/filemap.c
mm/khugepaged.c
mm/madvise.c
mm/memcontrol.c
mm/mincore.c
mm/readahead.c
mm/shmem.c
mm/swap.c
mm/truncate.c
mm/workingset.c
tools/testing/radix-tree/idr-test.c
tools/testing/radix-tree/linux/radix-tree.h
tools/testing/radix-tree/multiorder.c
tools/testing/radix-tree/test.c