All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC PATCH 00/17] introduce a dax_inode for dax_operations
@ 2017-01-28  8:36 ` Dan Williams
  0 siblings, 0 replies; 55+ messages in thread
From: Dan Williams @ 2017-01-28  8:36 UTC (permalink / raw)
  To: linux-nvdimm; +Cc: snitzer, mawilcox, linux-block, linux-fsdevel, hch

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
_______________________________________________
Linux-nvdimm mailing list
Linux-nvdimm@lists.01.org
https://lists.01.org/mailman/listinfo/linux-nvdimm

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

end of thread, other threads:[~2017-02-01  9:28 UTC | newest]

Thread overview: 55+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-01-28  8:36 [RFC PATCH 00/17] introduce a dax_inode for dax_operations Dan Williams
2017-01-28  8:36 ` Dan Williams
2017-01-28  8:36 ` [RFC PATCH 01/17] dax: refactor dax-fs into a generic provider of dax inodes Dan Williams
2017-01-28  8:36   ` Dan Williams
2017-01-30 12:28   ` Christoph Hellwig
2017-01-30 17:12     ` Dan Williams
2017-01-30 17:12       ` Dan Williams
2017-01-28  8:36 ` [RFC PATCH 02/17] dax: convert dax_inode locking to srcu Dan Williams
2017-01-28  8:36   ` Dan Williams
2017-01-28  8:36 ` [RFC PATCH 03/17] dax: add a facility to lookup a dax inode by 'host' device name Dan Williams
2017-01-28  8:36   ` Dan Williams
2017-01-28  8:36 ` [RFC PATCH 04/17] dax: introduce dax_operations Dan Williams
2017-01-28  8:36   ` Dan Williams
2017-01-28  8:36 ` [RFC PATCH 05/17] pmem: add dax_operations support Dan Williams
2017-01-28  8:36   ` Dan Williams
2017-01-28  8:36 ` [RFC PATCH 06/17] axon_ram: " Dan Williams
2017-01-28  8:36   ` Dan Williams
2017-01-28  8:36 ` [RFC PATCH 07/17] brd: " Dan Williams
2017-01-28  8:36   ` Dan Williams
2017-01-28  8:36 ` [RFC PATCH 08/17] dcssblk: " Dan Williams
2017-01-28  8:36   ` Dan Williams
2017-01-28  8:36 ` [RFC PATCH 09/17] block: kill bdev_dax_capable() Dan Williams
2017-01-28  8:36   ` Dan Williams
2017-01-28  8:36 ` [RFC PATCH 10/17] block: introduce bdev_dax_direct_access() Dan Williams
2017-01-28  8:36   ` Dan Williams
2017-01-30 12:32   ` Christoph Hellwig
2017-01-30 18:16     ` Dan Williams
2017-01-30 18:16       ` Dan Williams
2017-02-01  8:10       ` Christoph Hellwig
2017-02-01  8:10         ` Christoph Hellwig
2017-02-01  9:21         ` Dan Williams
2017-02-01  9:21           ` Dan Williams
2017-02-01  9:28           ` Christoph Hellwig
2017-02-01  9:28             ` Christoph Hellwig
2017-01-28  8:37 ` [RFC PATCH 11/17] dm: add dax_operations support (producer) Dan Williams
2017-01-28  8:37   ` Dan Williams
2017-01-28  8:37 ` [RFC PATCH 12/17] dm: add dax_operations support (consumer) Dan Williams
2017-01-28  8:37   ` Dan Williams
2017-01-28  8:37 ` [RFC PATCH 13/17] fs: update mount_bdev() to lookup dax infrastructure Dan Williams
2017-01-28  8:37   ` Dan Williams
2017-01-30 12:26   ` Christoph Hellwig
2017-01-30 18:29     ` Dan Williams
2017-01-30 18:29       ` Dan Williams
2017-02-01  8:08       ` Christoph Hellwig
2017-02-01  8:08         ` Christoph Hellwig
2017-02-01  9:16         ` Dan Williams
2017-02-01  9:16           ` Dan Williams
2017-01-28  8:37 ` [RFC PATCH 14/17] ext2, ext4, xfs: retrieve dax_inode through iomap operations Dan Williams
2017-01-28  8:37   ` Dan Williams
2017-01-28  8:37 ` [RFC PATCH 15/17] Revert "block: use DAX for partition table reads" Dan Williams
2017-01-28  8:37   ` Dan Williams
2017-01-28  8:37 ` [RFC PATCH 16/17] fs, dax: convert filesystem-dax to bdev_dax_direct_access Dan Williams
2017-01-28  8:37   ` Dan Williams
2017-01-28  8:37 ` [RFC PATCH 17/17] block: remove block_device_operations.direct_access and related infrastructure Dan Williams
2017-01-28  8:37   ` Dan Williams

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.