[GIT PULL] dax-locking for 4.7

From: Ross Zwisler
Date: Tue May 24 2016 - 16:52:30 EST


Hi Linus, please pull from

git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm tags/dax-locking-for-4.7

... to receive filesystem DAX locking changes for v4.7.

These current version of these changes have been under review and test for a
few weeks, and have appeared in the two most recent linux-next releases
(next-20160520 and next-20160524). I've reviewed all of the DAX changes in
these patches, and Neil Brown has reviewed the patch that introduced the actual
locking and wait queues.

This pull request is dependent on Vishal Verma's "dax-misc for 4.7" pull
request.

The following changes since commit 40543f62cbdce42633e3fe10923099feee272e1f:

dax: fix a comment in dax_zero_page_range and dax_truncate_page (2016-05-18 12:16:58 -0600)

are available in the git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm tags/dax-locking-for-4.7

for you to fetch changes up to 4d9a2c8746671efbb0c27d3ae28c7474597a7aad:

dax: Remove i_mmap_lock protection (2016-05-19 15:28:40 -0600)

----------------------------------------------------------------
Filesystem DAX locking for 4.7

- We use a bit in an exceptional radix tree entry as a lock bit and use it
similarly to how page lock is used for normal faults. This fixes races
between hole instantiation and read faults of the same index.

- Filesystem DAX PMD faults are disabled, and will be re-enabled when PMD
locking is implemented.

----------------------------------------------------------------
Jan Kara (7):
dax: Fix condition for filling of PMD holes
dax: Make huge page handling depend of CONFIG_BROKEN
dax: Define DAX lock bit for radix tree exceptional entry
dax: Allow DAX code to replace exceptional entries
dax: New fault locking
dax: Use radix tree entry lock to protect cow faults
dax: Remove i_mmap_lock protection

fs/Kconfig | 1 +
fs/dax.c | 592 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------
include/linux/dax.h | 16 ++-
include/linux/mm.h | 7 ++
mm/filemap.c | 30 +++--
mm/memory.c | 40 +++----
mm/truncate.c | 62 +++++-----
7 files changed, 513 insertions(+), 235 deletions(-)