From nobody Tue Mar 08 17:13:55 2022 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 230C419FE4AE; Tue, 8 Mar 2022 17:13:56 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4KChkX0PDjz4nlW; Tue, 8 Mar 2022 17:13:56 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1646759636; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=2m5fIfccJZ/bstZo9F3pTEHD17VqChMLGzuE7dFqXDU=; b=v8GWZ3T2TQmODOL+NXtUMPAbbJZk78VprF/e9s9E/Ta1StZrQO7Vws2FehPneOGZE/gg4p MLzzkKus5ZgYTvWcxcb7QAJOYiCa6i61umgzIW3B/D/hL0zRNGNG/d/qKMbIG+C2B4wIOw Ng121vepVWtcq/O1XZHE9/nZT+HNnGt7VjloxaB2nmoBwzayOgBsKD9qdUq8sRRfkem1YC 5bVMOUyKtWi4BEdcDh0zPeAnMqcKs3xLNDuUnAoHk3Ff1iCMHU1VtRw3lK+kLQq0sjMXxG m2QtYybMT/IQveUPpPcWWLxtXGUzhHWXDg0ZouMx7d8YqEsEc5vQAgNmcpnGEA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id E213E206C2; Tue, 8 Mar 2022 17:13:55 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 228HDt1i033760; Tue, 8 Mar 2022 17:13:55 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 228HDt57033759; Tue, 8 Mar 2022 17:13:55 GMT (envelope-from git) Date: Tue, 8 Mar 2022 17:13:55 GMT Message-Id: <202203081713.228HDt57033759@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Alexander Motin Subject: git: 5678114cd8b3 - main - geom: Allow "load" command for already loaded modules. List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-main@freebsd.org X-BeenThere: dev-commits-src-main@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 5678114cd8b310bd6f0a5699f036fc5b18addd65 Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1646759636; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=2m5fIfccJZ/bstZo9F3pTEHD17VqChMLGzuE7dFqXDU=; b=ZXjbGTm4bqXpxJIJzx0QafuYv0FPnVfRCaBy6zz1NXF0Z1D265zkzt49gulha8oOCBSKEl jYbQKpfpgA6wq7ZMSZph3vyZC2M1MgVSPf/MZRbH4IIlgYM8zg3fGoKx2ikpPOU+1Lfhyp 34qpolf6utz1GX8v27bmwsoo5DI1/EgEwRfQdlNB8KJZA0dbxRJ3JR0xdKm7NRnCBUc567 /gvok2wAbHDsWZhTYvWgwpozgCy68Xs20O8quUzF58NKhtB9251NKSyxpDPzIZqvs4ItVx Hv/Ggw9ZqDYqB03xDGHU8QyXr7BmN5BNqWEUoAuIdfxjYSwDm7fRyG8nlo/2UQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1646759636; a=rsa-sha256; cv=none; b=hGwaC2pjFwfAqjKjr262+iyZD9+aVvBqDlvCsnk64sQxCRLGEXXw7I9xwkIMPdQy+/gDzd b8PAs4UxM9b0sO3xd0FYZvyAt4jtYiwF0VHneTautmM1TukWziS/lqLGwFgKjcZsFM/ZsS N6I0RZwaUlf9cXzWEIBLt8VvsNShtFlcdc2IHguZiCXa1vIVaet719hE2ph2v57zUrKWxE nb95x82tPmlWjmGMhTguzyve1SPTYCsK7lE5R6LOTu8oU7tS+acD8mKFY6vXMcOWDi2XxW qcCJJV/4+rmIh9ifonGPl+/FRjhDkTZh3QBhMo+xW5z2pn2NXmDT5u4W8ub4vg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=5678114cd8b310bd6f0a5699f036fc5b18addd65 commit 5678114cd8b310bd6f0a5699f036fc5b18addd65 Author: Alexander Motin AuthorDate: 2022-03-08 17:04:42 +0000 Commit: Alexander Motin CommitDate: 2022-03-08 17:13:51 +0000 geom: Allow "load" command for already loaded modules. I see more user-friendly to do nothing if the module is already loaded, rather than returning quite confusing error message. As side effect it allows to avoid std_list_available() call, using quite expensive on large systems geom_gettree(). MFC after: 1 month --- sbin/geom/core/geom.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/sbin/geom/core/geom.c b/sbin/geom/core/geom.c index 9d93e9b9989f..b29d73327df8 100644 --- a/sbin/geom/core/geom.c +++ b/sbin/geom/core/geom.c @@ -75,6 +75,8 @@ static struct g_command *class_commands = NULL; static struct g_command *find_command(const char *cmdstr, int flags); static void list_one_geom_by_provider(const char *provider_name); static int std_available(const char *name); +static int std_list_available(void); +static int std_load_available(void); static void std_help(struct gctl_req *req, unsigned flags); static void std_list(struct gctl_req *req, unsigned flags); @@ -657,7 +659,7 @@ get_class(int *argc, char ***argv) set_class_name(); /* If we can't load or list, it's not a class. */ - if (!std_available("load") && !std_available("list")) + if (!std_load_available() && !std_list_available()) errx(EXIT_FAILURE, "Invalid class name '%s'.", class_name); if (*argc < 1) @@ -1319,10 +1321,10 @@ std_load_available(void) snprintf(name, sizeof(name), "g_%s", class_name); /* - * If already in kernel, "load" command is not available. + * If already in kernel, "load" command is NOP. */ if (modfind(name) >= 0) - return (0); + return (1); bzero(paths, sizeof(paths)); len = sizeof(paths); if (sysctlbyname("kern.module_path", paths, &len, NULL, 0) < 0)