Fri Jan 18 02:04:43 2019 UTC ()
smartmontools: fix 6.6 -> 7.0 NVMe SMART data readout regression. Bump.


(tnn)
diff -r1.33 -r1.34 pkgsrc/sysutils/smartmontools/Makefile
diff -r1.32 -r1.33 pkgsrc/sysutils/smartmontools/distinfo
diff -r0 -r1.1 pkgsrc/sysutils/smartmontools/patches/patch-nvmecmds.cpp

cvs diff -r1.33 -r1.34 pkgsrc/sysutils/smartmontools/Makefile (expand / switch to unified diff)

--- pkgsrc/sysutils/smartmontools/Makefile 2019/01/18 00:28:24 1.33
+++ pkgsrc/sysutils/smartmontools/Makefile 2019/01/18 02:04:43 1.34
@@ -1,16 +1,17 @@ @@ -1,16 +1,17 @@
1# $NetBSD: Makefile,v 1.33 2019/01/18 00:28:24 tnn Exp $ 1# $NetBSD: Makefile,v 1.34 2019/01/18 02:04:43 tnn Exp $
2 2
3DISTNAME= smartmontools-7.0 3DISTNAME= smartmontools-7.0
 4PKGREVISION= 1
4CATEGORIES= sysutils 5CATEGORIES= sysutils
5MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:=smartmontools/} 6MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:=smartmontools/}
6 7
7MAINTAINER= pkgsrc-users@NetBSD.org 8MAINTAINER= pkgsrc-users@NetBSD.org
8HOMEPAGE= http://smartmontools.sourceforge.net/ 9HOMEPAGE= http://smartmontools.sourceforge.net/
9COMMENT= Control and monitor storage systems using SMART 10COMMENT= Control and monitor storage systems using SMART
10LICENSE= gnu-gpl-v2 11LICENSE= gnu-gpl-v2
11 12
12ONLY_FOR_PLATFORM= Darwin-*-* DragonFly-*-* FreeBSD-*-* Linux-*-* 13ONLY_FOR_PLATFORM= Darwin-*-* DragonFly-*-* FreeBSD-*-* Linux-*-*
13ONLY_FOR_PLATFORM+= NetBSD-*-* OpenBSD-*-* SunOS-*-* 14ONLY_FOR_PLATFORM+= NetBSD-*-* OpenBSD-*-* SunOS-*-*
14 15
15USE_LANGUAGES= c c++03 16USE_LANGUAGES= c c++03
16USE_TOOLS+= gmake 17USE_TOOLS+= gmake
@@ -21,14 +22,17 @@ OWN_DIRS= ${PKG_SYSCONFDIR}/smartd_warn @@ -21,14 +22,17 @@ OWN_DIRS= ${PKG_SYSCONFDIR}/smartd_warn
21EGDIR= ${PREFIX}/share/examples/smartmontools 22EGDIR= ${PREFIX}/share/examples/smartmontools
22CONF_FILES= ${EGDIR}/smartd.conf ${PKG_SYSCONFDIR}/smartd.conf 23CONF_FILES= ${EGDIR}/smartd.conf ${PKG_SYSCONFDIR}/smartd.conf
23CONF_FILES_PERMS= ${EGDIR}/smartd_warning.sh \ 24CONF_FILES_PERMS= ${EGDIR}/smartd_warning.sh \
24 ${PKG_SYSCONFDIR}/smartd_warning.sh \ 25 ${PKG_SYSCONFDIR}/smartd_warning.sh \
25 ${REAL_ROOT_USER} ${REAL_ROOT_GROUP} 0755 26 ${REAL_ROOT_USER} ${REAL_ROOT_GROUP} 0755
26RCD_SCRIPTS= smartd 27RCD_SCRIPTS= smartd
27 28
28CONFIGURE_ARGS+= --sysconfdir=${PKG_SYSCONFDIR} 29CONFIGURE_ARGS+= --sysconfdir=${PKG_SYSCONFDIR}
29CONFIGURE_ARGS+= --docdir=${PREFIX}/share/doc/smartmontools 30CONFIGURE_ARGS+= --docdir=${PREFIX}/share/doc/smartmontools
30INSTALL_MAKE_FLAGS= ${MAKE_FLAGS} sysconfdir=${EGDIR} 31INSTALL_MAKE_FLAGS= ${MAKE_FLAGS} sysconfdir=${EGDIR}
31 32
32INSTALLATION_DIRS= ${EGDIR} 33INSTALLATION_DIRS= ${EGDIR}
33 34
 35CFLAGS+=-O0 -ggdb -g3
 36CXXFLAGS+=-O0 -ggdb -g3
 37
34.include "../../mk/bsd.pkg.mk" 38.include "../../mk/bsd.pkg.mk"

cvs diff -r1.32 -r1.33 pkgsrc/sysutils/smartmontools/distinfo (expand / switch to unified diff)

--- pkgsrc/sysutils/smartmontools/distinfo 2019/01/18 00:28:24 1.32
+++ pkgsrc/sysutils/smartmontools/distinfo 2019/01/18 02:04:43 1.33
@@ -1,8 +1,9 @@ @@ -1,8 +1,9 @@
1$NetBSD: distinfo,v 1.32 2019/01/18 00:28:24 tnn Exp $ 1$NetBSD: distinfo,v 1.33 2019/01/18 02:04:43 tnn Exp $
2 2
3SHA1 (smartmontools-7.0.tar.gz) = 00e6a7bb26b283695ab0deaf521be6723ba44f0a 3SHA1 (smartmontools-7.0.tar.gz) = 00e6a7bb26b283695ab0deaf521be6723ba44f0a
4RMD160 (smartmontools-7.0.tar.gz) = db20533115aa05a52836dbef0006c664083fbe90 4RMD160 (smartmontools-7.0.tar.gz) = db20533115aa05a52836dbef0006c664083fbe90
5SHA512 (smartmontools-7.0.tar.gz) = 96e18a201182579f699d541539ce393e7bc2191e027cfdf7f87455a63da3a14451574f8fe391232047ac941ace453a017193d0a4987a4edb8f7ed9d5007f0512 5SHA512 (smartmontools-7.0.tar.gz) = 96e18a201182579f699d541539ce393e7bc2191e027cfdf7f87455a63da3a14451574f8fe391232047ac941ace453a017193d0a4987a4edb8f7ed9d5007f0512
6Size (smartmontools-7.0.tar.gz) = 944925 bytes 6Size (smartmontools-7.0.tar.gz) = 944925 bytes
7SHA1 (patch-aa) = bd08aff267f0e9e9307ebc57858e61e35144bf16 7SHA1 (patch-aa) = bd08aff267f0e9e9307ebc57858e61e35144bf16
8SHA1 (patch-ag) = 01b0b35d89d6d6a11b13b3c05a141c46a0c1590b 8SHA1 (patch-ag) = 01b0b35d89d6d6a11b13b3c05a141c46a0c1590b
 9SHA1 (patch-nvmecmds.cpp) = 0fec043f00b4a7fde2974e1a4670ce42343f2d52

File Added: pkgsrc/sysutils/smartmontools/patches/Attic/patch-nvmecmds.cpp
$NetBSD: patch-nvmecmds.cpp,v 1.1 2019/01/18 02:04:43 tnn Exp $

It looks from the code like it is supposed to work to read the SMART data
by calling the nvme passthrough ioctl with broadcast nsid.
But it doesn't seem to work on NetBSD? So use the explicit nsid instead.

--- nvmecmds.cpp.orig	2018-08-19 18:45:53.000000000 +0000
+++ nvmecmds.cpp
@@ -207,7 +207,11 @@ bool nvme_read_log_page(nvme_device * de
 // Read NVMe Error Information Log.
 bool nvme_read_error_log(nvme_device * device, nvme_error_log_page * error_log, unsigned num_entries)
 {
-  if (!nvme_read_log_page(device, 0x01, error_log, num_entries * sizeof(*error_log), true))
+  bool use_broadcast_nsid = true;
+#if defined(__NetBSD__)
+  use_broadcast_nsid = false;
+#endif
+  if (!nvme_read_log_page(device, 0x01, error_log, num_entries * sizeof(*error_log), use_broadcast_nsid))
     return false;
 
   if (isbigendian()) {
@@ -228,7 +232,11 @@ bool nvme_read_error_log(nvme_device * d
 // Read NVMe SMART/Health Information log.
 bool nvme_read_smart_log(nvme_device * device, nvme_smart_log & smart_log)
 {
-  if (!nvme_read_log_page(device, 0x02, &smart_log, sizeof(smart_log), true))
+  bool use_broadcast_nsid = true;
+#if defined(__NetBSD__)
+  use_broadcast_nsid = false;
+#endif
+  if (!nvme_read_log_page(device, 0x02, &smart_log, sizeof(smart_log), use_broadcast_nsid))
     return false;
 
   if (isbigendian()) {