libnvdimm, pmem, dax: export a cache control attribute
authorDan Williams <dan.j.williams@intel.com>
Tue, 27 Jun 2017 04:28:41 +0000 (21:28 -0700)
committerDan Williams <dan.j.williams@intel.com>
Thu, 29 Jun 2017 16:29:50 +0000 (09:29 -0700)
commit6e0c90d691cd5d90569f5918ab03eb76c81f9c6e
tree58a98b00690d31fc0b7552cca10686661acaf51e
parent9a60c3ef577beb0376704808949f2c1f8fb0672c
libnvdimm, pmem, dax: export a cache control attribute

The dax_flush() operation can be turned into a nop on platforms where
firmware arranges for cpu caches to be flushed on a power-fail event.
The ACPI 6.2 specification defines a mechanism for the platform to
indicate this capability so the kernel can select the proper default.
However, for other platforms, the administrator must toggle this setting
manually.

Given this flush setting is a dax-specific mechanism we advertise it
through a 'dax' attribute group hanging off a host device. For example,
a 'pmem0' block-device gets a 'dax' sysfs-subdirectory with a
'write_cache' attribute to control response to dax cache flush requests.
This is similar to the 'queue/write_cache' attribute that appears under
block devices.

Cc: Jan Kara <jack@suse.cz>
Cc: Jeff Moyer <jmoyer@redhat.com>
Cc: Matthew Wilcox <mawilcox@microsoft.com>
Cc: Ross Zwisler <ross.zwisler@linux.intel.com>
Suggested-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
drivers/dax/super.c
drivers/nvdimm/pmem.c
include/linux/dax.h