[RFC PATCH 00/17] introduce a dax_inode for dax_operations

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

 



Recently there was an effort to introduce dax_operations to unwind the
abuse of the user-copy api in the pmem api [1]. Christoph noted that we
should not add new block-dax operations as it is further abuse of struct
block_device [2].

The ->direct_access() method in block_device_operations was an expedient
way to get the filesystem-dax capability bootstrapped. However, looking
forward to native persistent memory filesystems, they can forgo the
block layer and mount directly on a provider of dax services, a dax
inode.

For the time being, since current dax capable filesystems are block
based, we need a facility to look up this dax object via the
block-device name. If this approach looks reasonable I'll follow up with
reworking the proposed ->copy_from_iter(), ->flush(), and ->clear() dax
operations into this new scheme.

These patches survive a run of the libnvdimm unit tests, but I have not
tested the non-libnvdimm dax drivers.

[1]: https://lists.01.org/pipermail/linux-nvdimm/2017-January/008586.html
[2]: https://lists.01.org/pipermail/linux-nvdimm/2017-January/008638.html

---

Dan Williams (17):
      dax: refactor dax-fs into a generic provider of dax inodes
      dax: convert dax_inode locking to srcu
      dax: add a facility to lookup a dax inode by 'host' device name
      dax: introduce dax_operations
      pmem: add dax_operations support
      axon_ram: add dax_operations support
      brd: add dax_operations support
      dcssblk: add dax_operations support
      block: kill bdev_dax_capable()
      block: introduce bdev_dax_direct_access()
      dm: add dax_operations support (producer)
      dm: add dax_operations support (consumer)
      fs: update mount_bdev() to lookup dax infrastructure
      ext2, ext4, xfs: retrieve dax_inode through iomap operations
      Revert "block: use DAX for partition table reads"
      fs, dax: convert filesystem-dax to bdev_dax_direct_access
      block: remove block_device_operations.direct_access and related infrastructure


 arch/powerpc/platforms/Kconfig  |    1 
 arch/powerpc/sysdev/axonram.c   |   37 +++
 block/Kconfig                   |    1 
 block/partition-generic.c       |   17 --
 drivers/Makefile                |    2 
 drivers/block/Kconfig           |    1 
 drivers/block/brd.c             |   48 +++-
 drivers/dax/Kconfig             |    9 +
 drivers/dax/Makefile            |    5 
 drivers/dax/dax.h               |   19 +-
 drivers/dax/device-dax.h        |   25 ++
 drivers/dax/device.c            |  257 ++++-------------------
 drivers/dax/pmem.c              |    2 
 drivers/dax/super.c             |  434 +++++++++++++++++++++++++++++++++++++++
 drivers/md/Kconfig              |    1 
 drivers/md/dm-core.h            |    3 
 drivers/md/dm-linear.c          |   15 +
 drivers/md/dm-snap.c            |    8 +
 drivers/md/dm-stripe.c          |   16 +
 drivers/md/dm-table.c           |    2 
 drivers/md/dm-target.c          |   10 +
 drivers/md/dm.c                 |   43 +++-
 drivers/nvdimm/Kconfig          |    1 
 drivers/nvdimm/pmem.c           |   46 +++-
 drivers/nvdimm/pmem.h           |    7 -
 drivers/s390/block/Kconfig      |    1 
 drivers/s390/block/dcssblk.c    |   41 +++-
 fs/block_dev.c                  |   75 ++-----
 fs/dax.c                        |  149 ++++++-------
 fs/ext2/inode.c                 |    1 
 fs/ext4/inode.c                 |    1 
 fs/iomap.c                      |    3 
 fs/super.c                      |   32 +++
 fs/xfs/xfs_aops.c               |   13 +
 fs/xfs/xfs_aops.h               |    1 
 fs/xfs/xfs_buf.h                |    1 
 fs/xfs/xfs_iomap.c              |    1 
 fs/xfs/xfs_super.c              |    3 
 include/linux/blkdev.h          |    7 -
 include/linux/dax.h             |   29 ++-
 include/linux/device-mapper.h   |   16 +
 include/linux/fs.h              |    1 
 include/linux/iomap.h           |    1 
 tools/testing/nvdimm/Kbuild     |    6 -
 tools/testing/nvdimm/pmem-dax.c |   12 -
 45 files changed, 927 insertions(+), 477 deletions(-)
 create mode 100644 drivers/dax/device-dax.h
 rename drivers/dax/{dax.c => device.c} (74%)
 create mode 100644 drivers/dax/super.c
--
To unsubscribe from this list: send the line "unsubscribe linux-block" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux