From patchwork Thu Jul 23 17:51:44 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michal Suchanek X-Patchwork-Id: 11681433 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 E4EB013B4 for ; Thu, 23 Jul 2020 17:51:59 +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 CB8B5208E4 for ; Thu, 23 Jul 2020 17:51:59 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org CB8B5208E4 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-nvdimm-bounces@lists.01.org Received: from ml01.vlan13.01.org (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 370AD12509DA6; Thu, 23 Jul 2020 10:51:59 -0700 (PDT) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=195.135.220.15; helo=mx2.suse.de; envelope-from=msuchanek@suse.de; receiver= Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) (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 71D1D12509DA1 for ; Thu, 23 Jul 2020 10:51:55 -0700 (PDT) X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id EC587ABE9; Thu, 23 Jul 2020 17:52:01 +0000 (UTC) From: Michal Suchanek To: linux-nvdimm@lists.01.org Subject: [PATCH 1/2] ndctl/namespace: skip zero namespaces when processing all namespaces. Date: Thu, 23 Jul 2020 19:51:44 +0200 Message-Id: X-Mailer: git-send-email 2.26.2 MIME-Version: 1.0 Message-ID-Hash: TH7AZMLM2I5BJDG2XIN6RUNY24U7BVBG X-Message-ID-Hash: TH7AZMLM2I5BJDG2XIN6RUNY24U7BVBG X-MailFrom: msuchanek@suse.de X-Mailman-Rule-Hits: nonmember-moderation X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation CC: Michal Suchanek , Harish Sriram 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: The kernel always creates zero length namespace with uuid 0 in each region. When processing all namespaces the user gets confusing errors from ndctl trying to process this namespace. Skip it. The user can still specify the namespace by name directly in case processing it is desirable. Fixes: #41 Reviewed-by: Santosh S Tested-by: Harish Sriram Signed-off-by: Michal Suchanek --- ndctl/namespace.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/ndctl/namespace.c b/ndctl/namespace.c index e734248c9752..3fabe4799d75 100644 --- a/ndctl/namespace.c +++ b/ndctl/namespace.c @@ -2171,9 +2171,19 @@ static int do_xaction_namespace(const char *namespace, ndctl_namespace_foreach_safe(region, ndns, _n) { ndns_name = ndctl_namespace_get_devname(ndns); - if (strcmp(namespace, "all") != 0 - && strcmp(namespace, ndns_name) != 0) - continue; + if (strcmp(namespace, "all") == 0) { + static const uuid_t zero_uuid; + uuid_t uuid; + + ndctl_namespace_get_uuid(ndns, uuid); + if (!ndctl_namespace_get_size(ndns) && + !memcmp(uuid, zero_uuid, sizeof(uuid_t))) + continue; + } else { + if (strcmp(namespace, ndns_name) != 0) + continue; + } + switch (action) { case ACTION_DISABLE: rc = ndctl_namespace_disable_safe(ndns); From patchwork Thu Jul 23 17:51:45 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michal Suchanek X-Patchwork-Id: 11681431 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 7AF93138A for ; Thu, 23 Jul 2020 17:51:59 +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 45FCC208E4 for ; Thu, 23 Jul 2020 17:51:59 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 45FCC208E4 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-nvdimm-bounces@lists.01.org Received: from ml01.vlan13.01.org (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 1057D12509DA2; Thu, 23 Jul 2020 10:51:59 -0700 (PDT) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=195.135.220.15; helo=mx2.suse.de; envelope-from=msuchanek@suse.de; receiver= Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) (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 70CFA12509D9F for ; Thu, 23 Jul 2020 10:51:55 -0700 (PDT) X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id 0CB28AE38 for ; Thu, 23 Jul 2020 17:52:02 +0000 (UTC) From: Michal Suchanek To: linux-nvdimm@lists.01.org Subject: [PATCH 2/2] ndctl/namespace: Suppress ENODEV when processing all namespaces. Date: Thu, 23 Jul 2020 19:51:45 +0200 Message-Id: <3905bc44eec1a7251ea67729aee9ecf4d6d33653.1595526596.git.msuchanek@suse.de> X-Mailer: git-send-email 2.26.2 In-Reply-To: References: MIME-Version: 1.0 Message-ID-Hash: QFYITZGOSFI7TUBD23MP44YP43WY6I6R X-Message-ID-Hash: QFYITZGOSFI7TUBD23MP44YP43WY6I6R X-MailFrom: msuchanek@suse.de X-Mailman-Rule-Hits: nonmember-moderation X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation CC: Michal Suchanek 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 processing all namespaces and no namespaces exist user gets the default -ENOENT. Set default rc to 0 when processing all namespaces. This avoids confusing error message printed in addition to the message saying 0 namespaces were affected. Before: # ndctl check-namespace all namespace0.0: namespace_check: namespace0.0: check aborted, namespace online error checking namespaces: Device or resource busy checked 0 namespaces # ndctl disable-namespace all disabled 1 namespace # ndctl check-namespace all namespace0.0: namespace_check: Unable to recover any BTT info blocks error checking namespaces: No such device or address checked 0 namespaces # ndctl destroy-namespace all destroyed 1 namespace # ndctl check-namespace all error checking namespaces: No such device or address checked 0 namespaces # ndctl destroy-namespace all error destroying namespaces: No such device or address destroyed 0 namespaces After: # ndctl check-namespace all namespace0.0: namespace_check: namespace0.0: check aborted, namespace online error checking namespaces: Device or resource busy checked 0 namespaces # ndctl disable-namespace namespace0.0 disabled 1 namespace # ndctl check-namespace all namespace0.0: namespace_check: Unable to recover any BTT info blocks error checking namespaces: No such device or address checked 0 namespaces # ndctl destroy-namespace all destroyed 1 namespace # ndctl check-namespace all checked 0 namespaces # ndctl destroy-namespace all destroyed 0 namespaces # ndctl destroy-namespace all destroyed 0 namespaces Note: this does change the return value from -ENOENT to 0 in the cases when no namespaces exist and processing all namespaces was requested. Signed-off-by: Michal Suchanek Reviewed-by: Santosh S --- ndctl/namespace.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ndctl/namespace.c b/ndctl/namespace.c index 3fabe4799d75..835f4076008a 100644 --- a/ndctl/namespace.c +++ b/ndctl/namespace.c @@ -2112,6 +2112,9 @@ static int do_xaction_namespace(const char *namespace, if (!namespace && action != ACTION_CREATE) return rc; + if (namespace && (strcmp(namespace, "all") == 0)) + rc = 0; + if (verbose) ndctl_set_log_priority(ctx, LOG_DEBUG);