Merge tag 'dax-locking-for-4.7' of git://git.kernel.org/pub/scm/linux/kernel/git...
authorLinus Torvalds <torvalds@linux-foundation.org>
Fri, 27 May 2016 03:00:28 +0000 (20:00 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 27 May 2016 03:00:28 +0000 (20:00 -0700)
Pull DAX locking updates from Ross Zwisler:
 "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"

* tag 'dax-locking-for-4.7' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm:
  dax: Remove i_mmap_lock protection
  dax: Use radix tree entry lock to protect cow faults
  dax: New fault locking
  dax: Allow DAX code to replace exceptional entries
  dax: Define DAX lock bit for radix tree exceptional entry
  dax: Make huge page handling depend of CONFIG_BROKEN
  dax: Fix condition for filling of PMD holes

1  2 
fs/dax.c
include/linux/dax.h
include/linux/mm.h
mm/filemap.c
mm/memory.c

diff --cc fs/dax.c
Simple merge
index 7743e51f826c8bcd65ff5d3f777435d81f85d08a,7bf12277c006534f16a6ba49e6446f88eb438f68..43d5f0b799c7664c74593b5fd1ee36e836ac8861
@@@ -3,9 -3,13 +3,13 @@@
  
  #include <linux/fs.h>
  #include <linux/mm.h>
+ #include <linux/radix-tree.h>
  #include <asm/pgtable.h>
  
 -ssize_t dax_do_io(struct kiocb *, struct inode *, struct iov_iter *, loff_t,
+ /* We use lowest available exceptional entry bit for locking */
+ #define RADIX_DAX_ENTRY_LOCK (1 << RADIX_TREE_EXCEPTIONAL_SHIFT)
 +ssize_t dax_do_io(struct kiocb *, struct inode *, struct iov_iter *,
                  get_block_t, dio_iodone_t, int flags);
  int dax_zero_page_range(struct inode *, loff_t from, unsigned len, get_block_t);
  int dax_truncate_page(struct inode *, loff_t from, get_block_t);
Simple merge
diff --cc mm/filemap.c
Simple merge
diff --cc mm/memory.c
Simple merge