All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v6 0/7] DAX fsync/msync support
@ 2015-12-23 19:39 ` Ross Zwisler
  0 siblings, 0 replies; 75+ messages in thread
From: Ross Zwisler @ 2015-12-23 19:39 UTC (permalink / raw)
  To: linux-kernel
  Cc: Ross Zwisler, H. Peter Anvin, J. Bruce Fields, Theodore Ts'o,
	Alexander Viro, Andreas Dilger, Dave Chinner, Ingo Molnar,
	Jan Kara, Jeff Layton, Matthew Wilcox, Thomas Gleixner,
	linux-ext4, linux-fsdevel, linux-mm, linux-nvdimm, x86, xfs,
	Andrew Morton, Dan Williams, Matthew Wilcox, Dave Hansen

Changes since v5 [1]:

1) Merged with Dan's changes to fs/dax.c that were staged in -mm and -next.

2) Store sectors in the address_space radix tree for DAX entries instead of
addresses.  This allows us to get the addresses from the block driver
via dax_map_atomic() during fsync/msync so that we can protect against
races with block device removal. (Dan)

3) Reordered things a bit in dax_writeback_one() so we clear the
PAGECACHE_TAG_TOWRITE tag even if the radix tree entry is corrupt.  This
prevents us from getting into an infinite loop where we don't proceed far
enough in dax_writeback_one() to clear that flag, but
dax_writeback_mapping_range() will keep finding that entry via
find_get_entries_tag().

4) Changed the ordering of the radix tree insertion so that it happens
before the page insertion into the page tables.  This ensures that we don't
end up in a case where the page table insertion succeeds and the radix tree
insertion fails which could give us a writeable PTE that has no
corresponding radix tree entry.

5) Got rid of the 'nrdax' variable in struct address_space and renamed
'nrshadows' to 'nrexceptional' so that it can be used for both DAX and
shadow exceptional entries.  We explicitly prevent shadow entries from
being added to radix trees for DAX mappings, so the single counter can
safely be reused for both purposes. (Jan)

6) Updated all my WARN_ON() calls so I use the return value to know whether
I've hit an erorr. (Andrew)

This series applies cleanly and was tested against next-20151223.

A working tree can be found here:

https://git.kernel.org/cgit/linux/kernel/git/zwisler/linux.git/log/?h=fsync_v6

[1]: https://lists.01.org/pipermail/linux-nvdimm/2015-December/003588.html

Ross Zwisler (7):
  pmem: add wb_cache_pmem() to the PMEM API
  dax: support dirty DAX entries in radix tree
  mm: add find_get_entries_tag()
  dax: add support for fsync/msync
  ext2: call dax_pfn_mkwrite() for DAX fsync/msync
  ext4: call dax_pfn_mkwrite() for DAX fsync/msync
  xfs: call dax_pfn_mkwrite() for DAX fsync/msync

 arch/x86/include/asm/pmem.h |  11 +--
 fs/block_dev.c              |   2 +-
 fs/dax.c                    | 196 ++++++++++++++++++++++++++++++++++++++++++--
 fs/ext2/file.c              |   4 +-
 fs/ext4/file.c              |   4 +-
 fs/inode.c                  |   2 +-
 fs/xfs/xfs_file.c           |   7 +-
 include/linux/dax.h         |   7 ++
 include/linux/fs.h          |   3 +-
 include/linux/pagemap.h     |   3 +
 include/linux/pmem.h        |  22 ++++-
 include/linux/radix-tree.h  |   9 ++
 mm/filemap.c                |  91 ++++++++++++++++++--
 mm/truncate.c               |  69 +++++++++-------
 mm/vmscan.c                 |   9 +-
 mm/workingset.c             |   4 +-
 16 files changed, 384 insertions(+), 59 deletions(-)

-- 
2.6.3

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 75+ messages in thread

end of thread, other threads:[~2016-01-06 18:10 UTC | newest]

Thread overview: 75+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-12-23 19:39 [PATCH v6 0/7] DAX fsync/msync support Ross Zwisler
2015-12-23 19:39 ` Ross Zwisler
2015-12-23 19:39 ` Ross Zwisler
2015-12-23 19:39 ` [PATCH v6 1/7] pmem: add wb_cache_pmem() to the PMEM API Ross Zwisler
2015-12-23 19:39   ` Ross Zwisler
2015-12-23 19:39   ` Ross Zwisler
2015-12-23 19:39 ` [PATCH v6 2/7] dax: support dirty DAX entries in radix tree Ross Zwisler
2015-12-23 19:39   ` Ross Zwisler
2015-12-23 19:39   ` Ross Zwisler
2015-12-30  8:02   ` Bob Liu
2015-12-30  8:02     ` Bob Liu
2015-12-30  8:02     ` Bob Liu
2015-12-30 20:39     ` Dan Williams
2015-12-30 20:39       ` Dan Williams
2015-12-30 20:39       ` Dan Williams
2015-12-31  3:28       ` Bob Liu
2015-12-31  3:28         ` Bob Liu
2015-12-31  3:28         ` Bob Liu
2015-12-31  3:28         ` Bob Liu
2015-12-31 22:08         ` Dan Williams
2015-12-31 22:08           ` Dan Williams
2015-12-31 22:08           ` Dan Williams
2016-01-05  9:41   ` Jan Kara
2016-01-05  9:41     ` Jan Kara
2016-01-05  9:41     ` Jan Kara
2015-12-23 19:39 ` [PATCH v6 3/7] mm: add find_get_entries_tag() Ross Zwisler
2015-12-23 19:39   ` Ross Zwisler
2015-12-23 19:39   ` Ross Zwisler
2015-12-24  0:28   ` Elliott, Robert (Persistent Memory)
2015-12-24  0:28     ` Elliott, Robert (Persistent Memory)
2015-12-24  0:28     ` Elliott, Robert (Persistent Memory)
2015-12-23 19:39 ` [PATCH v6 4/7] dax: add support for fsync/msync Ross Zwisler
2015-12-23 19:39   ` Ross Zwisler
2015-12-23 19:39   ` Ross Zwisler
2016-01-03 18:13   ` Dan Williams
2016-01-03 18:13     ` Dan Williams
2016-01-03 18:13     ` Dan Williams
2016-01-05 11:13     ` Jan Kara
2016-01-05 11:13       ` Jan Kara
2016-01-05 11:13       ` Jan Kara
2016-01-05 15:50       ` Ross Zwisler
2016-01-05 15:50         ` Ross Zwisler
2016-01-05 15:50         ` Ross Zwisler
2016-01-05 15:50         ` Ross Zwisler
2016-01-06 18:10     ` Ross Zwisler
2016-01-06 18:10       ` Ross Zwisler
2016-01-06 18:10       ` Ross Zwisler
2016-01-06 18:10       ` Ross Zwisler
2016-01-05 11:13   ` Jan Kara
2016-01-05 11:13     ` Jan Kara
2016-01-05 11:13     ` Jan Kara
2016-01-05 17:12     ` Ross Zwisler
2016-01-05 17:12       ` Ross Zwisler
2016-01-05 17:12       ` Ross Zwisler
2016-01-05 17:12       ` Ross Zwisler
2016-01-05 17:20       ` Dan Williams
2016-01-05 17:20         ` Dan Williams
2016-01-05 17:20         ` Dan Williams
2016-01-05 17:20         ` Dan Williams
2016-01-05 18:14         ` Ross Zwisler
2016-01-05 18:14           ` Ross Zwisler
2016-01-05 18:14           ` Ross Zwisler
2016-01-05 18:22           ` Dan Williams
2016-01-05 18:22             ` Dan Williams
2016-01-05 18:22             ` Dan Williams
2016-01-05 18:22             ` Dan Williams
2015-12-23 19:39 ` [PATCH v6 5/7] ext2: call dax_pfn_mkwrite() for DAX fsync/msync Ross Zwisler
2015-12-23 19:39   ` Ross Zwisler
2015-12-23 19:39   ` Ross Zwisler
2015-12-23 19:39 ` [PATCH v6 6/7] ext4: " Ross Zwisler
2015-12-23 19:39   ` Ross Zwisler
2015-12-23 19:39   ` Ross Zwisler
2015-12-23 19:39 ` [PATCH v6 7/7] xfs: " Ross Zwisler
2015-12-23 19:39   ` Ross Zwisler
2015-12-23 19:39   ` Ross Zwisler

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.