From: Dan Williams <dan.j.williams@intel.com> To: linux-nvdimm@lists.01.org Cc: snitzer@redhat.com, mawilcox@microsoft.com, linux-block@vger.kernel.org, linux-fsdevel@vger.kernel.org, hch@lst.de Subject: [RFC PATCH 00/17] introduce a dax_inode for dax_operations Date: Sat, 28 Jan 2017 00:36:04 -0800 [thread overview] Message-ID: <148559256378.11180.8957776806175202312.stgit@dwillia2-desk3.amr.corp.intel.com> (raw) 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
WARNING: multiple messages have this Message-ID (diff)
From: Dan Williams <dan.j.williams@intel.com> To: linux-nvdimm@lists.01.org Cc: snitzer@redhat.com, toshi.kani@hpe.com, mawilcox@microsoft.com, linux-block@vger.kernel.org, jmoyer@redhat.com, linux-fsdevel@vger.kernel.org, ross.zwisler@linux.intel.com, hch@lst.de Subject: [RFC PATCH 00/17] introduce a dax_inode for dax_operations Date: Sat, 28 Jan 2017 00:36:04 -0800 [thread overview] Message-ID: <148559256378.11180.8957776806175202312.stgit@dwillia2-desk3.amr.corp.intel.com> (raw) 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
next reply other threads:[~2017-01-28 8:40 UTC|newest] Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-01-28 8:36 Dan Williams [this message] 2017-01-28 8:36 ` [RFC PATCH 00/17] introduce a dax_inode for dax_operations 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
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=148559256378.11180.8957776806175202312.stgit@dwillia2-desk3.amr.corp.intel.com \ --to=dan.j.williams@intel.com \ --cc=hch@lst.de \ --cc=linux-block@vger.kernel.org \ --cc=linux-fsdevel@vger.kernel.org \ --cc=linux-nvdimm@lists.01.org \ --cc=mawilcox@microsoft.com \ --cc=snitzer@redhat.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
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.