[pmdk] common/file: Make detection of device-dax instances more robust
diff mbox series

Message ID 154697711872.985876.15063592205044647642.stgit@dwillia2-desk3.amr.corp.intel.com
State New
Headers show
Series
  • [pmdk] common/file: Make detection of device-dax instances more robust
Related show

Commit Message

Dan Williams Jan. 8, 2019, 7:51 p.m. UTC
In preparation for the kernel switching device-dax instances from the
"/sys/class/dax" subsystem to "/sys/bus/dax" [1], teach the device-dax
instance detection to be subsystem-type agnostic.

Note that the subsystem switch will require an administrator, or distro,
opt-in. The opt-in will either be at kernel compile time by disabling
the default compatibility driver in the kernel, or at runtime with a
modprobe policy to override which kernel module services device-dax
devices. The daxctl utility [2] will ship a command to install the
modprobe policy and include a man page that lists the potential
regression risk to older PMDK and other userspace tools that are hard
coded to "/sys/class/dax".

[1]: https://lwn.net/Articles/770128/
[2]: https://github.com/pmem/ndctl/tree/master/daxctl

Reported-by: Jeff Moyer <jmoyer@redhat.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
---
 src/common/file.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Patch
diff mbox series

diff --git a/src/common/file.c b/src/common/file.c
index ff36e70e1fff..e660c136506a 100644
--- a/src/common/file.c
+++ b/src/common/file.c
@@ -53,7 +53,6 @@ 
 #include "out.h"
 #include "mmap.h"
 
-#define DEVICE_DAX_PREFIX "/sys/class/dax"
 #define MAX_SIZE_LENGTH 64
 
 #define DEVICE_DAX_ZERO_LEN (2 * MEGABYTE)
@@ -180,7 +179,8 @@  get_file_type_internal(os_stat_t *st)
 		return OTHER_ERROR;
 	}
 
-	if (strcmp(DEVICE_DAX_PREFIX, rpath) != 0) {
+	char *basename = strrchr(rpath, '/');
+	if (!basename || strcmp("dax", basename+1) != 0) {
 		LOG(3, "%s path does not match device dax prefix path", rpath);
 		errno = EINVAL;
 		return OTHER_ERROR;