[GIT PULL] DAX / LIBNVDIMM update for v5.17

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Linus, please pull from:

  git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm
tags/libnvdimm-for-5.17

...to receive the persistent memory (DAX + LIBNVDIMM) updates for
v5.17. The bulk of this is a rework of the dax_operations API after
discovering the obstacles it posed to the work-in-progress DAX+reflink
support for XFS and other copy-on-write filesystem mechanics.
Primarily the need to plumb a block_device through the API to handle
partition offsets was a sticking point and Christoph untangled that
dependency in addition to other cleanups to make landing the
DAX+reflink support easier.

The DAX_PMEM_COMPAT option has been around for 4 years and not only
are distributions shipping userspace that understand the current
configuration API, but some are not even bothering to turn this option
on anymore, so it seems a good time to remove it per the deprecation
schedule. Recall that this was added after the device-dax subsystem
moved from /sys/class/dax to /sys/bus/dax for its sysfs organization.
All recent functionality depends on /sys/bus/dax.

Some other miscellaneous cleanups and reflink prep patches are
included as well, details in the tag message.

This has been in -next for several weeks, and -next is carrying
resolution for 3 merge conflicts:
- iomap + folio
- ext4
- mm

Links to merge resolutions below:

As mentioned by Willy
(https://lore.kernel.org/r/YdyoN7RU/JMOk/lW@xxxxxxxxxxxxxxxxxxxx) it
collides with the pending iomap+folio work for 5.17. The resolution
that Stephen has been carrying is here:
(https://lore.kernel.org/all/20211224172421.3f009baa@xxxxxxxxxxxxxxxx/).
The changes to the mount path where the dax-device is looked up from
the block_device also collided with the ext4 tree. Christoph's
resolution is here:
(https://git.infradead.org/users/hch/misc.git/commit/9cac2bce6b42),
and that is the resolution that -next has been carrying. The mm
collision comes from a cleanup of the memremap API and Joao's pending
support for compound-page backed dax-devices. The merge resolution
that -next has been carrying is here:
(https://lore.kernel.org/r/20211207173938.6d619ba6@xxxxxxxxxxxxxxxx).

It has reviews from XFS, DM, EROFS, VIRTIO-FS, and VIRTIO-PMEM
developers. Please pull and/or please let me know if there is a better
way to communicate / organize conflict notifications.

---

The following changes since commit fa55b7dcdc43c1aa1ba12bca9d2dd4318c2a0dbf:

  Linux 5.16-rc1 (2021-11-14 13:56:52 -0800)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm
tags/libnvdimm-for-5.17

for you to fetch changes up to 9e05e95ca8dae8de4a7a1645014e1bbd9c8a4dab:

  iomap: Fix error handling in iomap_zero_iter() (2021-12-23 14:04:11 -0800)

----------------------------------------------------------------
dax + libnvdimm for v5.17

- Simplify the dax_operations API
  - Eliminate bdev_dax_pgoff() in favor of the filesystem maintaining
    and applying a partition offset to all its DAX iomap operations.
  - Remove wrappers and device-mapper stacked callbacks for
    ->copy_from_iter() and ->copy_to_iter() in favor of moving
    block_device relative offset responsibility to the
    dax_direct_access() caller.
  - Remove the need for an @bdev in filesystem-DAX infrastructure
  - Remove unused uio helpers copy_from_iter_flushcache() and
    copy_mc_to_iter() as only the non-check_copy_size() versions are
    used for DAX.
- Prepare XFS for the pending (next merge window) DAX+reflink support
- Remove deprecated DEV_DAX_PMEM_COMPAT support
- Cleanup a straggling misuse of the GUID api

Tags offered after the branch was cut:
Reviewed-by: Mike Snitzer <snitzer@xxxxxxxxxx>
Link: https://lore.kernel.org/r/Ydb/3P+8nvjCjYfO@xxxxxxxxxx

----------------------------------------------------------------
Andy Shevchenko (1):
      ACPI: NFIT: Import GUID before use

Christoph Hellwig (34):
      dm: fix alloc_dax error handling in alloc_dev
      dm: make the DAX support depend on CONFIG_FS_DAX
      dax: remove CONFIG_DAX_DRIVER
      dax: simplify the dax_device <-> gendisk association
      dax: remove the pgmap sanity checks in generic_fsdax_supported
      dax: move the partition alignment check into fs_dax_get_by_bdev
      xfs: factor out a xfs_setup_dax_always helper
      dax: remove dax_capable
      dm-linear: add a linear_dax_pgoff helper
      dm-log-writes: add a log_writes_dax_pgoff helper
      dm-stripe: add a stripe_dax_pgoff helper
      fsdax: remove a pointless __force cast in copy_cow_page_dax
      fsdax: use a saner calling convention for copy_cow_page_dax
      fsdax: simplify the pgoff calculation
      fsdax: simplify the offset check in dax_iomap_zero
      fsdax: factor out a dax_memzero helper
      fsdax: decouple zeroing from the iomap buffered I/O code
      ext2: cleanup the dax handling in ext2_fill_super
      ext4: cleanup the dax handling in ext4_fill_super
      xfs: move dax device handling into xfs_{alloc,free}_buftarg
      xfs: use xfs_direct_write_iomap_ops for DAX zeroing
      xfs: pass the mapping flags to xfs_bmbt_to_iomap
      iomap: add a IOMAP_DAX flag
      dax: return the partition offset from fs_dax_get_by_bdev
      fsdax: shift partition offset handling into the file systems
      dax: fix up some of the block device related ifdefs
      iomap: build the block based code conditionally
      fsdax: don't require CONFIG_BLOCK
      memremap: remove support for external pgmap refcounts
      iomap: turn the byte variable in iomap_zero_iter into a ssize_t
      uio: remove copy_from_iter_flushcache() and copy_mc_to_iter()
      dax: simplify dax_synchronous and set_dax_synchronous
      dax: remove the DAXDEV_F_SYNC flag
      dax: remove the copy_from_iter and copy_to_iter methods

Dan Williams (1):
      dax: Kill DEV_DAX_PMEM_COMPAT

Matthew Wilcox (Oracle) (1):
      iomap: Fix error handling in iomap_zero_iter()

Shiyang Ruan (1):
      xfs: add xfs_zero_range and xfs_truncate_page helpers

 Documentation/ABI/obsolete/sysfs-class-dax  |  22 ---
 drivers/acpi/nfit/core.c                    |   4 +-
 drivers/dax/Kconfig                         |  13 --
 drivers/dax/Makefile                        |   3 +-
 drivers/dax/bus.c                           |  30 +--
 drivers/dax/bus.h                           |  13 --
 drivers/dax/device.c                        |   6 +-
 drivers/dax/{pmem/core.c => pmem.c}         |  36 +++-
 drivers/dax/pmem/Makefile                   |   1 -
 drivers/dax/pmem/compat.c                   |  72 --------
 drivers/dax/pmem/pmem.c                     |  30 ---
 drivers/dax/super.c                         | 272 +++++++---------------------
 drivers/md/dm-linear.c                      |  63 ++-----
 drivers/md/dm-log-writes.c                  | 110 ++---------
 drivers/md/dm-stripe.c                      |  75 ++------
 drivers/md/dm-table.c                       |  22 +--
 drivers/md/dm-writecache.c                  |   2 +-
 drivers/md/dm.c                             |  89 ++-------
 drivers/md/dm.h                             |   4 -
 drivers/nvdimm/Kconfig                      |   2 +-
 drivers/nvdimm/pmem.c                       |  38 ++--
 drivers/pci/p2pdma.c                        |   2 +-
 drivers/s390/block/Kconfig                  |   2 +-
 drivers/s390/block/dcssblk.c                |  26 +--
 fs/Kconfig                                  |   8 +-
 fs/dax.c                                    | 157 +++++++++-------
 fs/erofs/data.c                             |  11 +-
 fs/erofs/internal.h                         |   3 +
 fs/erofs/super.c                            |  15 +-
 fs/ext2/ext2.h                              |   1 +
 fs/ext2/inode.c                             |  15 +-
 fs/ext2/super.c                             |  16 +-
 fs/ext4/ext4.h                              |   1 +
 fs/ext4/inode.c                             |  25 ++-
 fs/ext4/super.c                             |  14 +-
 fs/fuse/Kconfig                             |   2 +-
 fs/fuse/virtio_fs.c                         |  18 +-
 fs/iomap/Makefile                           |   4 +-
 fs/iomap/buffered-io.c                      |  39 ++--
 fs/xfs/libxfs/xfs_bmap.c                    |   4 +-
 fs/xfs/xfs_aops.c                           |   2 +-
 fs/xfs/xfs_bmap_util.c                      |   7 +-
 fs/xfs/xfs_buf.c                            |   8 +-
 fs/xfs/xfs_buf.h                            |   5 +-
 fs/xfs/xfs_file.c                           |   3 +-
 fs/xfs/xfs_iomap.c                          |  84 ++++++---
 fs/xfs/xfs_iomap.h                          |  12 +-
 fs/xfs/xfs_iops.c                           |   7 +-
 fs/xfs/xfs_pnfs.c                           |   4 +-
 fs/xfs/xfs_reflink.c                        |   3 +-
 fs/xfs/xfs_super.c                          |  80 ++++----
 include/linux/dax.h                         |  93 ++++------
 include/linux/device-mapper.h               |   4 -
 include/linux/iomap.h                       |   5 +
 include/linux/memremap.h                    |  18 +-
 include/linux/uio.h                         |  20 +-
 mm/memremap.c                               |  59 ++----
 tools/testing/nvdimm/Kbuild                 |   8 +-
 tools/testing/nvdimm/dax_pmem_compat_test.c |   8 -
 tools/testing/nvdimm/dax_pmem_core_test.c   |   8 -
 tools/testing/nvdimm/test/iomap.c           |  43 ++---
 tools/testing/nvdimm/test/ndtest.c          |   4 -
 tools/testing/nvdimm/test/nfit.c            |   4 -
 63 files changed, 569 insertions(+), 1190 deletions(-)
 delete mode 100644 Documentation/ABI/obsolete/sysfs-class-dax
 rename drivers/dax/{pmem/core.c => pmem.c} (75%)
 delete mode 100644 drivers/dax/pmem/compat.c
 delete mode 100644 tools/testing/nvdimm/dax_pmem_compat_test.c
 delete mode 100644 tools/testing/nvdimm/dax_pmem_core_test.c



[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [NTFS 3]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [NTFS 3]     [Samba]     [Device Mapper]     [CEPH Development]

  Powered by Linux