[fio] engines/devdax: Make detection of device-dax instances more robust
diff mbox series

Message ID 154697605958.939406.14480036379705502215.stgit@dwillia2-desk3.amr.corp.intel.com
State New
Headers show
Series
  • [fio] engines/devdax: Make detection of device-dax instances more robust
Related show

Commit Message

Dan Williams Jan. 8, 2019, 7:34 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 service 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 FIO 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>
---
 engines/dev-dax.c |    5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

Comments

Jens Axboe Jan. 8, 2019, 7:47 p.m. UTC | #1
On 1/8/19 12:34 PM, Dan Williams wrote:
> 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 service 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 FIO 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

Applied, thanks Dan.

Patch
diff mbox series

diff --git a/engines/dev-dax.c b/engines/dev-dax.c
index 0660bba563e6..422ea634ff1d 100644
--- a/engines/dev-dax.c
+++ b/engines/dev-dax.c
@@ -259,7 +259,7 @@  fio_devdax_get_file_size(struct thread_data *td, struct fio_file *f)
 {
 	char spath[PATH_MAX];
 	char npath[PATH_MAX];
-	char *rpath;
+	char *rpath, *basename;
 	FILE *sfile;
 	uint64_t size;
 	struct stat st;
@@ -289,7 +289,8 @@  fio_devdax_get_file_size(struct thread_data *td, struct fio_file *f)
 	}
 
 	/* check if DAX device */
-	if (strcmp("/sys/class/dax", rpath)) {
+	basename = strrchr(rpath, '/');
+	if (!basename || strcmp("dax", basename+1)) {
 		log_err("%s: %s not a DAX device!\n",
 			td->o.name, f->file_name);
 	}