All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v11 00/21] Add support for NV-DIMMs to ext4
@ 2014-09-25 20:33 ` Matthew Wilcox
  0 siblings, 0 replies; 169+ messages in thread
From: Matthew Wilcox @ 2014-09-25 20:33 UTC (permalink / raw)
  To: linux-fsdevel, linux-mm, linux-kernel; +Cc: Matthew Wilcox

From: Matthew Wilcox <willy@linux.intel.com>

We currently have two unrelated things inside the Linux kernel called
"XIP".  One allows the kernel to run out of flash without being copied
into DRAM, the other allows executables to be run without copying them
into the page cache.  The latter is almost the behaviour we want for
NV-DIMMs, except that we primarily want data to be accessed through
this filesystem, not executables.  We deal with the confusion between
the two XIPs by renaming the second one to DAX (short for Direct Access).

DAX bears some resemblance to its ancestor XIP but fixes many races that
were not relevant for its original use case of storing executables.
The major design change is using the filesystem's get_block routine
instead of a special-purpose ->get_xip_mem() address_space operation.
Further enhancements are planned, such as supporting huge pages, but
this is a useful amount of work to merge before adding more functionality.

This is not the only way to support NV-DIMMs, of course.  People have
written new filesystems to support them, some of which have even seen
the light of day.  We believe it is valuable to support traditional
filesystems such as ext4 and XFS on NV-DIMMs in a more efficient manner
than copying the contents of the NV-DIMM to DRAM.

Patch 1 is a bug fix.  It is obviously correct, and should be included
into 3.18.

Patch 2 starts the transformation by changing how ->direct_access works.
Much code is moved from the drivers and filesystems into the block
layer, and we add the flexibility of being able to map more than one
page at a time.  It would be good to get this patch into 3.18 as it is
useful for people who are pursuing non-DAX approaches to working with
persistent memory.

Patch 3 is also a bug fix, probably worth including in 3.18.

Patches 4-6 are infrastructure for DAX (note that patch 6 is in the
for-next branch of Al Viro's VFS tree).

Patches 7-11 replace the XIP code with its DAX equivalents, transforming
ext2 to use the DAX code as we go.  Note that patch 11 is the
Documentation patch.

Patches 12-18 clean up after the XIP code, removing the infrastructure
that is no longer needed and renaming various XIP things to DAX.
Most of these patches were added after Jan found things he didn't
like in an earlier version of the ext4 patch ... that had been copied
from ext2.  So ext2 i being transformed to do things the same way that
ext4 will later.  The ability to mount ext2 filesystems with the 'xip'
option is retained, although the 'dax' option is now preferred.

Patch 19 adds some DAX infrastructure to support ext4.

Patch 20 adds DAX support to ext4.  It is broadly similar to ext2's DAX
support, but it is more efficient than ext4's due to its support for
unwritten extents.

Patch 21 is another cleanup patch renaming XIP to DAX.

Matthew Wilcox (20):
  axonram: Fix bug in direct_access
  block: Change direct_access calling convention
  mm: Fix XIP fault vs truncate race
  mm: Allow page fault handlers to perform the COW
  vfs,ext2: Introduce IS_DAX(inode)
  vfs: Add copy_to_iter(), copy_from_iter() and iov_iter_zero()
  dax,ext2: Replace XIP read and write with DAX I/O
  dax,ext2: Replace ext2_clear_xip_target with dax_clear_blocks
  dax,ext2: Replace the XIP page fault handler with the DAX page fault
    handler
  dax,ext2: Replace xip_truncate_page with dax_truncate_page
  dax: Replace XIP documentation with DAX documentation
  vfs: Remove get_xip_mem
  ext2: Remove ext2_xip_verify_sb()
  ext2: Remove ext2_use_xip
  ext2: Remove xip.c and xip.h
  vfs,ext2: Remove CONFIG_EXT2_FS_XIP and rename CONFIG_FS_XIP to
    CONFIG_FS_DAX
  ext2: Remove ext2_aops_xip
  ext2: Get rid of most mentions of XIP in ext2
  dax: Add dax_zero_page_range
  brd: Rename XIP to DAX

Ross Zwisler (1):
  ext4: Add DAX functionality

 Documentation/filesystems/Locking  |   3 -
 Documentation/filesystems/dax.txt  |  91 +++++++
 Documentation/filesystems/ext4.txt |   2 +
 Documentation/filesystems/xip.txt  |  68 -----
 MAINTAINERS                        |   6 +
 arch/powerpc/sysdev/axonram.c      |  19 +-
 drivers/block/Kconfig              |  13 +-
 drivers/block/brd.c                |  26 +-
 drivers/s390/block/dcssblk.c       |  21 +-
 fs/Kconfig                         |  21 +-
 fs/Makefile                        |   1 +
 fs/block_dev.c                     |  40 +++
 fs/dax.c                           | 532 +++++++++++++++++++++++++++++++++++++
 fs/exofs/inode.c                   |   1 -
 fs/ext2/Kconfig                    |  11 -
 fs/ext2/Makefile                   |   1 -
 fs/ext2/ext2.h                     |  10 +-
 fs/ext2/file.c                     |  45 +++-
 fs/ext2/inode.c                    |  38 +--
 fs/ext2/namei.c                    |  13 +-
 fs/ext2/super.c                    |  53 ++--
 fs/ext2/xip.c                      |  91 -------
 fs/ext2/xip.h                      |  26 --
 fs/ext4/ext4.h                     |   6 +
 fs/ext4/file.c                     |  49 +++-
 fs/ext4/indirect.c                 |  18 +-
 fs/ext4/inode.c                    |  89 +++++--
 fs/ext4/namei.c                    |  10 +-
 fs/ext4/super.c                    |  39 ++-
 fs/open.c                          |   5 +-
 include/linux/blkdev.h             |   6 +-
 include/linux/fs.h                 |  49 +++-
 include/linux/mm.h                 |   1 +
 include/linux/uio.h                |   3 +
 mm/Makefile                        |   1 -
 mm/fadvise.c                       |   6 +-
 mm/filemap.c                       |  25 +-
 mm/filemap_xip.c                   | 483 ---------------------------------
 mm/iov_iter.c                      | 237 ++++++++++++++++-
 mm/madvise.c                       |   2 +-
 mm/memory.c                        |  33 ++-
 41 files changed, 1305 insertions(+), 889 deletions(-)
 create mode 100644 Documentation/filesystems/dax.txt
 delete mode 100644 Documentation/filesystems/xip.txt
 create mode 100644 fs/dax.c
 delete mode 100644 fs/ext2/xip.c
 delete mode 100644 fs/ext2/xip.h
 delete mode 100644 mm/filemap_xip.c

-- 
2.1.0


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

end of thread, other threads:[~2015-03-29  9:13 UTC | newest]

Thread overview: 169+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-09-25 20:33 [PATCH v11 00/21] Add support for NV-DIMMs to ext4 Matthew Wilcox
2014-09-25 20:33 ` Matthew Wilcox
2014-09-25 20:33 ` [PATCH v11 01/21] axonram: Fix bug in direct_access Matthew Wilcox
2014-09-25 20:33   ` Matthew Wilcox
2014-10-16  7:52   ` Mathieu Desnoyers
2014-10-16  7:52     ` Mathieu Desnoyers
2014-09-25 20:33 ` [PATCH v11 02/21] block: Change direct_access calling convention Matthew Wilcox
2014-09-25 20:33   ` Matthew Wilcox
2014-10-16  8:45   ` Mathieu Desnoyers
2014-10-16  8:45     ` Mathieu Desnoyers
2014-10-16 19:39     ` Matthew Wilcox
2014-10-16 19:39       ` Matthew Wilcox
2014-09-25 20:33 ` [PATCH v11 03/21] mm: Fix XIP fault vs truncate race Matthew Wilcox
2014-09-25 20:33   ` Matthew Wilcox
2014-10-16  8:56   ` Mathieu Desnoyers
2014-10-16  8:56     ` Mathieu Desnoyers
2014-09-25 20:33 ` [PATCH v11 04/21] mm: Allow page fault handlers to perform the COW Matthew Wilcox
2014-09-25 20:33   ` Matthew Wilcox
2014-10-16  9:12   ` Mathieu Desnoyers
2014-10-16  9:12     ` Mathieu Desnoyers
2014-10-16 19:48     ` Matthew Wilcox
2014-10-16 19:48       ` Matthew Wilcox
2014-10-17 15:35       ` Mathieu Desnoyers
2014-10-17 15:35         ` Mathieu Desnoyers
2014-10-18 17:22         ` Matthew Wilcox
2014-10-18 17:22           ` Matthew Wilcox
2014-09-25 20:33 ` [PATCH v11 05/21] vfs,ext2: Introduce IS_DAX(inode) Matthew Wilcox
2014-09-25 20:33   ` Matthew Wilcox
2014-10-16  9:35   ` Mathieu Desnoyers
2014-10-16  9:35     ` Mathieu Desnoyers
2014-09-25 20:33 ` [PATCH v11 06/21] vfs: Add copy_to_iter(), copy_from_iter() and iov_iter_zero() Matthew Wilcox
2014-09-25 20:33   ` Matthew Wilcox
2014-10-16 13:33   ` Mathieu Desnoyers
2014-10-16 13:33     ` Mathieu Desnoyers
2014-10-16 13:59     ` Matthew Wilcox
2014-10-16 13:59       ` Matthew Wilcox
2014-10-16 14:12       ` Mathieu Desnoyers
2014-10-16 14:12         ` Mathieu Desnoyers
2014-10-16 22:21         ` Matthew Wilcox
2014-10-16 22:21           ` Matthew Wilcox
2014-10-17 15:39           ` Mathieu Desnoyers
2014-10-17 15:39             ` Mathieu Desnoyers
2014-09-25 20:33 ` [PATCH v11 07/21] dax,ext2: Replace XIP read and write with DAX I/O Matthew Wilcox
2014-09-25 20:33   ` Matthew Wilcox
2014-10-16  9:50   ` Mathieu Desnoyers
2014-10-16  9:50     ` Mathieu Desnoyers
2014-10-16 19:51     ` Matthew Wilcox
2014-10-16 19:51       ` Matthew Wilcox
2014-10-16 22:33       ` Matthew Wilcox
2014-10-16 22:33         ` Matthew Wilcox
2014-10-17 15:52         ` Mathieu Desnoyers
2014-10-17 15:52           ` Mathieu Desnoyers
2014-09-25 20:33 ` [PATCH v11 08/21] dax,ext2: Replace ext2_clear_xip_target with dax_clear_blocks Matthew Wilcox
2014-09-25 20:33   ` Matthew Wilcox
2014-10-16 10:05   ` Mathieu Desnoyers
2014-10-16 10:05     ` Mathieu Desnoyers
2014-10-16 21:22     ` Matthew Wilcox
2014-10-16 21:22       ` Matthew Wilcox
2014-10-17 15:45       ` Mathieu Desnoyers
2014-10-17 15:45         ` Mathieu Desnoyers
2014-09-25 20:33 ` [PATCH v11 09/21] dax,ext2: Replace the XIP page fault handler with the DAX page fault handler Matthew Wilcox
2014-09-25 20:33   ` Matthew Wilcox
2014-10-16 10:20   ` Mathieu Desnoyers
2014-10-16 10:20     ` Mathieu Desnoyers
2014-10-16 21:29     ` Matthew Wilcox
2014-10-16 21:29       ` Matthew Wilcox
2014-09-25 20:33 ` [PATCH v11 10/21] dax,ext2: Replace xip_truncate_page with dax_truncate_page Matthew Wilcox
2014-09-25 20:33   ` Matthew Wilcox
2014-10-16 10:28   ` Mathieu Desnoyers
2014-10-16 10:28     ` Mathieu Desnoyers
2014-09-25 20:33 ` [PATCH v11 11/21] dax: Replace XIP documentation with DAX documentation Matthew Wilcox
2014-09-25 20:33   ` Matthew Wilcox
2014-10-16 12:08   ` Mathieu Desnoyers
2014-10-16 12:08     ` Mathieu Desnoyers
2014-09-25 20:33 ` [PATCH v11 12/21] vfs: Remove get_xip_mem Matthew Wilcox
2014-09-25 20:33   ` Matthew Wilcox
2014-10-16 12:14   ` Mathieu Desnoyers
2014-10-16 12:14     ` Mathieu Desnoyers
2014-10-16 21:44     ` Matthew Wilcox
2014-10-16 21:44       ` Matthew Wilcox
2014-09-25 20:33 ` [PATCH v11 13/21] ext2: Remove ext2_xip_verify_sb() Matthew Wilcox
2014-09-25 20:33   ` Matthew Wilcox
2014-10-16 12:18   ` Mathieu Desnoyers
2014-10-16 12:18     ` Mathieu Desnoyers
2014-10-16 21:45     ` Matthew Wilcox
2014-10-16 21:45       ` Matthew Wilcox
2014-09-25 20:33 ` [PATCH v11 14/21] ext2: Remove ext2_use_xip Matthew Wilcox
2014-09-25 20:33   ` Matthew Wilcox
2014-10-16 12:20   ` Mathieu Desnoyers
2014-10-16 12:20     ` Mathieu Desnoyers
2014-09-25 20:33 ` [PATCH v11 15/21] ext2: Remove xip.c and xip.h Matthew Wilcox
2014-09-25 20:33   ` Matthew Wilcox
2014-10-16 12:21   ` Mathieu Desnoyers
2014-10-16 12:21     ` Mathieu Desnoyers
2014-09-25 20:33 ` [PATCH v11 16/21] vfs,ext2: Remove CONFIG_EXT2_FS_XIP and rename CONFIG_FS_XIP to CONFIG_FS_DAX Matthew Wilcox
2014-09-25 20:33   ` Matthew Wilcox
2014-10-16 12:26   ` Mathieu Desnoyers
2014-10-16 12:26     ` Mathieu Desnoyers
2014-10-16 21:52     ` Matthew Wilcox
2014-10-16 21:52       ` Matthew Wilcox
2014-09-25 20:33 ` [PATCH v11 17/21] ext2: Remove ext2_aops_xip Matthew Wilcox
2014-09-25 20:33   ` Matthew Wilcox
2014-10-16 12:29   ` Mathieu Desnoyers
2014-10-16 12:29     ` Mathieu Desnoyers
2014-09-25 20:33 ` [PATCH v11 18/21] ext2: Get rid of most mentions of XIP in ext2 Matthew Wilcox
2014-09-25 20:33   ` Matthew Wilcox
2014-10-16 12:32   ` Mathieu Desnoyers
2014-10-16 12:32     ` Mathieu Desnoyers
2014-09-25 20:33 ` [PATCH v11 19/21] dax: Add dax_zero_page_range Matthew Wilcox
2014-09-25 20:33   ` Matthew Wilcox
2014-10-16 12:38   ` Mathieu Desnoyers
2014-10-16 12:38     ` Mathieu Desnoyers
2014-10-16 22:01     ` Matthew Wilcox
2014-10-16 22:01       ` Matthew Wilcox
2014-10-17 15:49       ` Mathieu Desnoyers
2014-10-17 15:49         ` Mathieu Desnoyers
2014-10-18 17:41         ` Matthew Wilcox
2014-10-18 17:41           ` Matthew Wilcox
2014-10-18 21:16           ` Mathieu Desnoyers
2014-10-18 21:16             ` Mathieu Desnoyers
2014-09-25 20:33 ` [PATCH v11 20/21] ext4: Add DAX functionality Matthew Wilcox
2014-09-25 20:33   ` Matthew Wilcox
2014-10-16 12:56   ` Mathieu Desnoyers
2014-10-16 12:56     ` Mathieu Desnoyers
2014-10-16 22:16     ` Matthew Wilcox
2014-10-16 22:16       ` Matthew Wilcox
2014-10-17 15:42       ` Mathieu Desnoyers
2014-10-17 15:42         ` Mathieu Desnoyers
2014-09-25 20:33 ` [PATCH v11 21/21] brd: Rename XIP to DAX Matthew Wilcox
2014-09-25 20:33   ` Matthew Wilcox
2014-10-16 13:00   ` Mathieu Desnoyers
2014-10-16 13:00     ` Mathieu Desnoyers
2015-03-24 18:50   ` Matt Mullins
2015-03-24 18:50     ` Matt Mullins
2015-03-25  3:25     ` Dave Chinner
2015-03-25  3:25       ` Dave Chinner
2015-03-26 17:09     ` Should implementations of ->direct_access be allowed to sleep? Matthew Wilcox
2015-03-26 17:09       ` Matthew Wilcox
2015-03-26 19:32       ` Dave Chinner
2015-03-26 19:32         ` Dave Chinner
2015-03-29  8:02         ` Boaz Harrosh
2015-03-29  8:02           ` Boaz Harrosh
2015-03-29  9:13           ` Boaz Harrosh
2015-03-29  9:13             ` Boaz Harrosh
2014-09-25 20:47 ` [PATCH v11 00/21] Add support for NV-DIMMs to ext4 Matthew Wilcox
2014-09-25 20:47   ` Matthew Wilcox
2014-09-30  9:45 ` Valdis.Kletnieks
2014-09-30 14:48   ` Matthew Wilcox
2014-09-30 14:48     ` Matthew Wilcox
2014-09-30 14:53     ` Valdis.Kletnieks
2014-09-30 16:08       ` Matthew Wilcox
2014-09-30 16:08         ` Matthew Wilcox
2014-09-30 17:10         ` Zuckerman, Boris
2014-09-30 17:10           ` Zuckerman, Boris
2014-09-30 19:24           ` Matthew Wilcox
2014-09-30 19:24             ` Matthew Wilcox
2014-09-30 19:31             ` Zuckerman, Boris
2014-09-30 19:31               ` Zuckerman, Boris
2014-09-30 20:37         ` Valdis.Kletnieks
2014-09-30 21:25           ` Andreas Dilger
2014-09-30 21:52             ` Valdis.Kletnieks
2014-10-01 15:45               ` Jeff Moyer
2014-10-01 15:45                 ` Jeff Moyer
2014-10-01 17:10                 ` Valdis.Kletnieks
2014-10-01 17:17                 ` Valdis.Kletnieks
2014-10-16  7:39 ` Mathieu Desnoyers
2014-10-16  7:39   ` Mathieu Desnoyers
2014-10-16 14:11   ` Matthew Wilcox
2014-10-16 14:11     ` Matthew Wilcox

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.