From patchwork Mon Nov 4 23:08:56 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Verma, Vishal L" X-Patchwork-Id: 11226749 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id EC3B71599 for ; Mon, 4 Nov 2019 23:09:11 +0000 (UTC) Received: from ml01.01.org (ml01.01.org [198.145.21.10]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id D35E720869 for ; Mon, 4 Nov 2019 23:09:11 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D35E720869 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-nvdimm-bounces@lists.01.org Received: from new-ml01.vlan13.01.org (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id CED7A100EA549; Mon, 4 Nov 2019 15:11:58 -0800 (PST) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=192.55.52.120; helo=mga04.intel.com; envelope-from=vishal.l.verma@intel.com; receiver= Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id BCF13100EA542 for ; Mon, 4 Nov 2019 15:11:56 -0800 (PST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga104.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 04 Nov 2019 15:09:09 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,268,1569308400"; d="scan'208";a="195622116" Received: from vverma7-desk1.amr.corp.intel.com (HELO vverma7-desk1.lm.intel.com) ([10.232.112.164]) by orsmga008.jf.intel.com with ESMTP; 04 Nov 2019 15:09:08 -0800 From: Vishal Verma To: Subject: [ndctl PATCH 1/2] ndctl/namespace: skip seed namespaces for 'enable-namespace' Date: Mon, 4 Nov 2019 16:08:56 -0700 Message-Id: <20191104230857.28172-1-vishal.l.verma@intel.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Message-ID-Hash: 53OKT4DZBDVV7HIEODWS7SR273TOJVZC X-Message-ID-Hash: 53OKT4DZBDVV7HIEODWS7SR273TOJVZC X-MailFrom: vishal.l.verma@intel.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header CC: "Aneesh Kumar K . V" X-Mailman-Version: 3.1.1 Precedence: list List-Id: "Linux-nvdimm developer list." Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: Performing 'ndctl enable-namespace all' results in ndctl going through a number of seed namespaces, one per region, and trying to enable them, which fails as expected. This results in error messages like the following, which are almost always going to be present, and are almost always pointless: $ sudo ndctl enable-namespace all libndctl: ndctl_namespace_enable: namespace3.0: failed to enable libndctl: ndctl_namespace_enable: namespace5.0: failed to enable error enabling namespaces: No such device or address enabled 5 namespaces Using the new 'ndctl_namespace_is_configuration_idle()' API to determine whether a given namespace might be a 'seed' namespace, we can avoid these error messages. Ad a debug message gated behind the verbose option that prints when a namespace is skipped when it it detected as a 'seed'. Link: https://github.com/pmem/ndctl/issues/119 Cc: Dan Williams Reported-by: Aneesh Kumar K.V Signed-off-by: Vishal Verma --- ndctl/namespace.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ndctl/namespace.c b/ndctl/namespace.c index a07d7e2..ed0421b 100644 --- a/ndctl/namespace.c +++ b/ndctl/namespace.c @@ -1401,6 +1401,11 @@ static int do_xaction_namespace(const char *namespace, (*processed)++; break; case ACTION_ENABLE: + if (ndctl_namespace_is_configuration_idle(ndns)) { + debug("%s: skip seed namespace\n", + ndctl_namespace_get_devname(ndns)); + continue; + } rc = ndctl_namespace_enable(ndns); if (rc >= 0) { (*processed)++; From patchwork Mon Nov 4 23:08:57 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Verma, Vishal L" X-Patchwork-Id: 11226751 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id E376C1599 for ; Mon, 4 Nov 2019 23:09:12 +0000 (UTC) Received: from ml01.01.org (ml01.01.org [198.145.21.10]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id CB41320869 for ; Mon, 4 Nov 2019 23:09:12 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org CB41320869 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-nvdimm-bounces@lists.01.org Received: from new-ml01.vlan13.01.org (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id E1569100EA551; Mon, 4 Nov 2019 15:11:59 -0800 (PST) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=192.55.52.120; helo=mga04.intel.com; envelope-from=vishal.l.verma@intel.com; receiver= Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 4A5FD100EA542 for ; Mon, 4 Nov 2019 15:11:57 -0800 (PST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga104.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 04 Nov 2019 15:09:09 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,268,1569308400"; d="scan'208";a="195622120" Received: from vverma7-desk1.amr.corp.intel.com (HELO vverma7-desk1.lm.intel.com) ([10.232.112.164]) by orsmga008.jf.intel.com with ESMTP; 04 Nov 2019 15:09:09 -0800 From: Vishal Verma To: Cc: Dan Williams , Vishal Verma Subject: [ndctl PATCH 2/2] ndctl/namespace: For enable-namespace all, don't count no-op namespaces Date: Mon, 4 Nov 2019 16:08:57 -0700 Message-Id: <20191104230857.28172-2-vishal.l.verma@intel.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20191104230857.28172-1-vishal.l.verma@intel.com> References: <20191104230857.28172-1-vishal.l.verma@intel.com> MIME-Version: 1.0 Message-ID-Hash: CNCMHI4NUSXVMWYVO3XOZYBILGI75ADN X-Message-ID-Hash: CNCMHI4NUSXVMWYVO3XOZYBILGI75ADN X-MailFrom: vishal.l.verma@intel.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header X-Mailman-Version: 3.1.1 Precedence: list List-Id: "Linux-nvdimm developer list." Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: When ndctl-enable-namespace is called for namespaces that are already enabled, it shouldn't report that a positive number of namespaces were enabled. Check whether the namespace is enabled, and if so, omit it from the 'processed' count. Since the indentation-heavy section for ACTION_ENABLE is getting larger than a simgle libndctl call, break it out into its own namespace_enable() helper. Cc: Dan Williams Signed-off-by: Vishal Verma --- ndctl/namespace.c | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/ndctl/namespace.c b/ndctl/namespace.c index ed0421b..cebc312 100644 --- a/ndctl/namespace.c +++ b/ndctl/namespace.c @@ -961,6 +961,20 @@ out: return rc; } +static int namespace_enable(struct ndctl_namespace *ndns) +{ + if (ndctl_namespace_is_enabled(ndns)) + return 1; + + if (ndctl_namespace_is_configuration_idle(ndns)) { + debug("%s: skip seed namespace\n", + ndctl_namespace_get_devname(ndns)); + return 1; + } + + return ndctl_namespace_enable(ndns); +} + static int enable_labels(struct ndctl_region *region) { int mappings = ndctl_region_get_mappings(region); @@ -1401,16 +1415,12 @@ static int do_xaction_namespace(const char *namespace, (*processed)++; break; case ACTION_ENABLE: - if (ndctl_namespace_is_configuration_idle(ndns)) { - debug("%s: skip seed namespace\n", - ndctl_namespace_get_devname(ndns)); - continue; - } - rc = ndctl_namespace_enable(ndns); - if (rc >= 0) { + rc = namespace_enable(ndns); + if (rc == 0) (*processed)++; + /* return success if skipped */ + if (rc > 0) rc = 0; - } break; case ACTION_DESTROY: rc = namespace_destroy(region, ndns);