[GIT PULL] XArray updates

From: Matthew Wilcox
Date: Sat Nov 24 2018 - 12:40:15 EST



Hi Linus,

We found some bugs in the DAX conversion to XArray (and one bug which
predated the XArray conversion). There were a couple of bugs in some of
the higher-level functions, which aren't actually being called in today's
kernel, but surfaced as a result of converting existing radix tree &
IDR users over to the XArray. Some of the other changes to how the
higher-level APIs work were also motivated by converting various users;
again, they're not in use in today's kernel, so changing them has a low
probability of introducing a bug.

Dan can still trigger a bug in the DAX code with hot-offline/online,
and we're working on tracking that down.

The following changes since commit 651022382c7f8da46cb4872a545ee1da6d097d2a:

Linux 4.20-rc1 (2018-11-04 15:37:52 -0800)

are available in the Git repository at:

git://git.infradead.org/users/willy/linux-dax.git xarray

for you to fetch changes up to fffc9a260e38acec3187515738122a3ecb24ac90:

XArray tests: Add missing locking (2018-11-19 09:41:11 -0500)

----------------------------------------------------------------
Matthew Wilcox (19):
XArray: Fix xa_for_each with a single element at 0
XArray: Export __xa_foo to non-GPL modules
nilfs2: Use xa_erase_irq
XArray: Regularise xa_reserve
XArray: Unify xa_cmpxchg and __xa_cmpxchg
XArray: Turn xa_erase into an exported function
XArray: Add xa_store_bh() and xa_store_irq()
XArray: Unify xa_store and __xa_store
XArray: Handle NULL pointers differently for allocation
XArray: Fix Documentation
XArray: Correct xa_store_range
XArray tests: Correct some 64-bit assumptions
dax: Remove optimisation from dax_lock_mapping_entry
dax: Make sure the unlocking entry isn't locked
dax: Reinstate RCU protection of inode
dax: Fix dax_unlock_mapping_entry for PMD pages
dax: Fix huge page faults
dax: Avoid losing wakeup in dax_lock_mapping_entry
XArray tests: Add missing locking

Documentation/core-api/xarray.rst | 52 ++++++--
fs/dax.c | 60 +++++----
fs/nilfs2/btnode.c | 4 +-
include/linux/xarray.h | 267 +++++++++++++++++++++++++++++---------
lib/test_xarray.c | 50 ++++++-
lib/xarray.c | 139 +++++++++-----------
6 files changed, 387 insertions(+), 185 deletions(-)