dax: refactor dax-fs into a generic provider of 'struct dax_device' instances
We want dax capable drivers to be able to publish a set of dax operations [1]. However, we do not want to further abuse block_devices to advertise these operations. Instead we will attach these operations to a dax device and add a lookup mechanism to go from block device path to a dax device. A dax capable driver like pmem or brd is responsible for registering a dax device, alongside a block device, and then a dax capable filesystem is responsible for retrieving the dax device by path name if it wants to call dax_operations. For now, we refactor the dax pseudo-fs to be a generic facility, rather than an implementation detail, of the device-dax use case. Where a "dax device" is just an inode + dax infrastructure, and "Device DAX" is a mapping service layered on top of that base 'struct dax_device'. "Filesystem DAX" is then a mapping service that layers a filesystem on top of that same base device. Filesystem DAX is associated with a block_device for now, but perhaps directly to a dax device in the future, or for new pmem-only filesystems. [1]: https://lkml.org/lkml/2017/1/19/880 Suggested-by:Christoph Hellwig <hch@lst.de> Signed-off-by:
Dan Williams <dan.j.williams@intel.com>
Showing
- drivers/Makefile 1 addition, 1 deletiondrivers/Makefile
- drivers/dax/Kconfig 7 additions, 3 deletionsdrivers/dax/Kconfig
- drivers/dax/Makefile 4 additions, 1 deletiondrivers/dax/Makefile
- drivers/dax/dax.h 9 additions, 11 deletionsdrivers/dax/dax.h
- drivers/dax/device-dax.h 25 additions, 0 deletionsdrivers/dax/device-dax.h
- drivers/dax/device.c 43 additions, 198 deletionsdrivers/dax/device.c
- drivers/dax/pmem.c 1 addition, 1 deletiondrivers/dax/pmem.c
- drivers/dax/super.c 303 additions, 0 deletionsdrivers/dax/super.c
- include/linux/dax.h 3 additions, 0 deletionsinclude/linux/dax.h
- tools/testing/nvdimm/Kbuild 8 additions, 2 deletionstools/testing/nvdimm/Kbuild
Loading
Please register or sign in to comment