From: Ross Zwisler <ross.zwisler@linux.intel.com>
To: Dan Williams <dan.j.williams@intel.com>,
linux-nvdimm@lists.01.org, "Jiang, Dave" <dave.jiang@intel.com>
Subject: [ndctl PATCH 2/2] ndctl: fail NUMA filtering when unavailable
Date: Thu, 22 Mar 2018 12:40:07 -0600 [thread overview]
Message-ID: <20180322184007.25667-2-ross.zwisler@linux.intel.com> (raw)
In-Reply-To: <20180322184007.25667-1-ross.zwisler@linux.intel.com>
Instead of just failing to find namespaces when trying to filter by NUMA
node when CONFIG_NUMA wasn't enabled in the kernel, instead fail loudly as
numactl does:
# numactl --cpunodebind=0 ls
numactl: This system does not support NUMA policy
Signed-off-by: Ross Zwisler <ross.zwisler@linux.intel.com>
---
This enabling requires numactl to create a pkg-config file, which it
currently does not. This support is added by the following patch which
I just sent out:
https://patchwork.kernel.org/patch/10302135/
---
Makefile.am.in | 3 ++-
autogen.sh | 3 ++-
configure.ac | 12 ++++++++++++
ndctl.spec.in | 3 ++-
ndctl/Makefile.am | 3 ++-
util/filter.c | 11 +++++++++++
6 files changed, 31 insertions(+), 4 deletions(-)
diff --git a/Makefile.am.in b/Makefile.am.in
index 6c5229d..b927e17 100644
--- a/Makefile.am.in
+++ b/Makefile.am.in
@@ -15,7 +15,8 @@ AM_CPPFLAGS = \
$(KMOD_CFLAGS) \
$(UDEV_CFLAGS) \
$(UUID_CFLAGS) \
- $(JSON_CFLAGS)
+ $(JSON_CFLAGS) \
+ $(NUMA_CFLAGS)
AM_CFLAGS = ${my_CFLAGS} \
-fvisibility=hidden \
diff --git a/autogen.sh b/autogen.sh
index a23cf53..46515b2 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -17,7 +17,8 @@ libdir() {
args="--prefix=/usr \
--sysconfdir=/etc \
---libdir=$(libdir /usr/lib)"
+--libdir=$(libdir /usr/lib) \
+--with-numa"
echo
echo "----------------------------------------------------------------"
diff --git a/configure.ac b/configure.ac
index 3eaac32..af21cb6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -94,6 +94,18 @@ PKG_CHECK_MODULES([UDEV], [libudev])
PKG_CHECK_MODULES([UUID], [uuid])
PKG_CHECK_MODULES([JSON], [json-c])
+AC_ARG_WITH([numa],
+ AS_HELP_STRING([--with-numa],
+ [Install with NUMA support. @<:@default=no@:>@]),
+ [],
+ [with_numa=no])
+
+if test "x$with_numa" = "xyes"; then
+ PKG_CHECK_MODULES([NUMA], [numa])
+ AC_DEFINE([WITH_NUMA], [1], [with NUMA support])
+fi
+AM_CONDITIONAL([WITH_NUMA], [test "x$with_numa" = "xyes"])
+
AC_ARG_WITH([bash-completion-dir],
AS_HELP_STRING([--with-bash-completion-dir[=PATH]],
[Install the bash auto-completion script in this directory. @<:@default=yes@:>@]),
diff --git a/ndctl.spec.in b/ndctl.spec.in
index e2c879c..3fcb4d8 100644
--- a/ndctl.spec.in
+++ b/ndctl.spec.in
@@ -20,6 +20,7 @@ BuildRequires: pkgconfig(libudev)
BuildRequires: pkgconfig(uuid)
BuildRequires: pkgconfig(json-c)
BuildRequires: pkgconfig(bash-completion)
+BuildRequires: pkgconfig(numa)
%description
Utility library for managing the "libnvdimm" subsystem. The "libnvdimm"
@@ -90,7 +91,7 @@ control API for these devices.
%build
echo %{version} > version
./autogen.sh
-%configure --disable-static --disable-silent-rules
+%configure --disable-static --disable-silent-rules --with-numa
make %{?_smp_mflags}
%install
diff --git a/ndctl/Makefile.am b/ndctl/Makefile.am
index 213cabd..6b891f8 100644
--- a/ndctl/Makefile.am
+++ b/ndctl/Makefile.am
@@ -29,7 +29,8 @@ ndctl_LDADD =\
../libutil.a \
$(UUID_LIBS) \
$(KMOD_LIBS) \
- $(JSON_LIBS)
+ $(JSON_LIBS) \
+ $(NUMA_LIBS)
if ENABLE_TEST
ndctl_SOURCES += ../test/libndctl.c \
diff --git a/util/filter.c b/util/filter.c
index 291d7ed..512f927 100644
--- a/util/filter.c
+++ b/util/filter.c
@@ -10,6 +10,7 @@
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*/
+#include <numa.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
@@ -328,6 +329,16 @@ int util_filter_walk(struct ndctl_ctx *ctx, struct util_filter_ctx *fctx,
}
if (param->numa_node && strcmp(param->numa_node, "all") != 0) {
+#ifdef WITH_NUMA
+ if (numa_available() < 0) {
+ error("This system does not support NUMA");
+#else
+ {
+ error("ndctl was not configured with NUMA support");
+#endif
+ return -EINVAL;
+ }
+
numa_node = strtol(param->numa_node, &end, 0);
if (end == param->numa_node || end[0]) {
error("invalid numa_node: '%s'\n", param->numa_node);
--
2.14.3
_______________________________________________
Linux-nvdimm mailing list
Linux-nvdimm@lists.01.org
https://lists.01.org/mailman/listinfo/linux-nvdimm
next prev parent reply other threads:[~2018-03-22 18:33 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-03-22 18:40 [ndctl PATCH 1/2] ndctl: complete removal of daxctl io Ross Zwisler
2018-03-22 18:40 ` Ross Zwisler [this message]
2018-03-22 22:47 ` [ndctl PATCH 2/2] ndctl: fail NUMA filtering when unavailable Dan Williams
2018-03-22 23:27 ` Ross Zwisler
2018-03-22 23:44 ` Dan Williams
2018-03-22 22:23 ` [ndctl PATCH 1/2] ndctl: complete removal of daxctl io Dan Williams
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180322184007.25667-2-ross.zwisler@linux.intel.com \
--to=ross.zwisler@linux.intel.com \
--cc=dan.j.williams@intel.com \
--cc=dave.jiang@intel.com \
--cc=linux-nvdimm@lists.01.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).