Index: sysutils/smartmontools/files/patch-os__freebsd.cpp =================================================================== --- sysutils/smartmontools/files/patch-os__freebsd.cpp +++ sysutils/smartmontools/files/patch-os__freebsd.cpp @@ -1,5 +1,5 @@ ---- os_freebsd.cpp.orig 2017-04-24 09:34:16.000000000 -0700 -+++ os_freebsd.cpp 2018-02-27 19:15:54.338861000 +0000 +--- os_freebsd.cpp.orig 2017-04-24 16:34:16 UTC ++++ os_freebsd.cpp @@ -16,6 +16,8 @@ */ @@ -9,7 +9,7 @@ #include #include #include -@@ -484,7 +486,7 @@ +@@ -484,7 +486,7 @@ bool freebsd_nvme_device::open() } nsid = 0xFFFFFFFF; // broadcast id } @@ -18,15 +18,10 @@ &ctrlid, &nsid, &tmp) == 2) { if(ctrlid < 0 || nsid < 0) { -@@ -521,16 +523,20 @@ - struct nvme_pt_command pt; +@@ -522,15 +524,15 @@ bool freebsd_nvme_device::nvme_pass_thro memset(&pt, 0, sizeof(pt)); -+#if __FreeBSD_version >= 1200058 -+ pt.cmd.opc_fuse = NVME_CMD_SET_OPC(in.opcode); -+#else pt.cmd.opc = in.opcode; -+#endif - pt.cmd.nsid = in.nsid; + pt.cmd.nsid = htole32(in.nsid); pt.buf = in.buffer; @@ -46,7 +41,7 @@ pt.is_read = 1; // should we use in.direction()? int status = ioctl(get_fd(), NVME_PASSTHROUGH_CMD, &pt); -@@ -538,6 +544,9 @@ +@@ -538,6 +540,9 @@ bool freebsd_nvme_device::nvme_pass_thro if (status < 0) return set_err(errno, "NVME_PASSTHROUGH_CMD: %s", strerror(errno));