From nobody Sat May 28 22:50:50 2022 X-Original-To: dev-commits-src-all@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 0BB381B671BC; Sat, 28 May 2022 22:50:51 +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 4L9cMt6vnsz3KJf; Sat, 28 May 2022 22:50:50 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1653778251; 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=Co2AH0xMF4D2tgkZwyZ+aEBaodIB0lcxJgQyu5SvBhc=; b=Pv5WPgLUR6mwsQg2il+7ONNCFsmdBv3bMVQ8zCHM6vXX2wLYCuDZsO+s5h3PuxA32xNXbc j3FCVw6oIZxVbPwzKXQc/xTT6bEBYRA0rbq+hnlQWfyB+gKQEkGM8pyFYj+ZymNOgQJovU 4rsZvoD0TjsemLAxlsvnpMvzDiNEdD3niWG97gvre0mO/IUoj+jOYbd0GGlEB48U5896HV XwHSL9kHJKHblrGmT1K9BWD/eAss6hHJ/CralS14gyTRShosfRVLzAZPa1KFyQ6b2fG4qL saYkr6XPOFTnJJFJu/ufmZPb18Ip+NZ9OWxkf6f+Yknaq8NBTCgrwfqv5pWtJw== 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 CD18E17924; Sat, 28 May 2022 22:50:50 +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 24SMooke057482; Sat, 28 May 2022 22:50:50 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 24SMoo6I057481; Sat, 28 May 2022 22:50:50 GMT (envelope-from git) Date: Sat, 28 May 2022 22:50:50 GMT Message-Id: <202205282250.24SMoo6I057481@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Rick Macklem Subject: git: 7cab630ba4fb - main - mount_nfs: Only create a mounttab file entry is nmount(2) succeeds List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: rmacklem X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 7cab630ba4fb26bf85336a89d88721ed2315c46c Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1653778251; 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=Co2AH0xMF4D2tgkZwyZ+aEBaodIB0lcxJgQyu5SvBhc=; b=EXFA6Mv/zya04uD3piSl8PXpCgnt3pDFqGIMUuOOw/GhoHBrC1S7ElYkUjyzIerkQrrIeH Fxveyjqw+HE2XBRgayF4GyZC+W5U818pjIW5hF2vd3ARpzud4fK79oz0+jjARX79/W7DqG 1wSKKtYYEWtZpO6K/kYAXO2A3ixFMOySE5/KwvXnk4mY0ScpU4Op2cWM769qzi0gT0RMh0 EQFgjxVYVybAa9bzZROB9BIvIxanpojgDdEPxET50o/nfRSa6dnCqArM2a4In/Whg44dEz 7dSx0dsCE0QiWjFuBH+VY26wsL9EdPwy4aGz/GV1BXOkY+AGZSCBvVNsHTDTFw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1653778251; a=rsa-sha256; cv=none; b=fOrGpw3z8oXq6gwAuc/Vs4Amwriwm/r+A1LmwtOeFwsI48lWs3pb87pqnubTGrf54CLGN3 O0uTYiSjRruueb/G8Lo6iWSnxuJ7GOHbPi0vvW17tYGgrYNj5n38VFR1ms6YkUO69J3Vbd qmb3QIrywL2KJqSNc4Ow5+xIwiIQFAUG+V9k0EJxIs3OKVaqwP7dy4/wFKkdAyrHpwHT2t OzeoXpYejNUk33UK6sMru5T79VQ7c4u7FkEPPthVMN4ZHy/u57ckjeENARi7ljHjsrh89F lIX58yCjx/FsQlkFZNUKGXH5Om9xbB97Jk9WNrW8PFbb5e20sXDe/fvK8IcDfw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by rmacklem: URL: https://cgit.FreeBSD.org/src/commit/?id=7cab630ba4fb26bf85336a89d88721ed2315c46c commit 7cab630ba4fb26bf85336a89d88721ed2315c46c Author: Rick Macklem AuthorDate: 2022-05-28 22:48:40 +0000 Commit: Rick Macklem CommitDate: 2022-05-28 22:48:40 +0000 mount_nfs: Only create a mounttab file entry is nmount(2) succeeds mount_nfs creates entries in the mounttab file and umount removes them. Entries in the mounttab file ae used by rpc.umntall to notify the NFS server that NFSv3 entries need to be removed when they have not been removed by umount. Without this patch, an enty will be created in the mounttab file, even if the nmount(2) syscall fails for the mount. This patch modifies the code so that the mounttab entry is only created after nmount(2) succeeds. This change only affects NFSv3 and only affects how showmount displays NFSv3 mounts. MFC after: 2 weeks --- sbin/mount_nfs/mount_nfs.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/sbin/mount_nfs/mount_nfs.c b/sbin/mount_nfs/mount_nfs.c index 898a6dc9d724..6ea861193df8 100644 --- a/sbin/mount_nfs/mount_nfs.c +++ b/sbin/mount_nfs/mount_nfs.c @@ -139,7 +139,7 @@ enum tryret { static int sec_name_to_num(const char *sec); static const char *sec_num_to_name(int num); -static int getnfsargs(char *, struct iovec **iov, int *iovlen); +static int getnfsargs(char **, char **, struct iovec **iov, int *iovlen); /* void set_rpc_maxgrouplist(int); */ static struct netconfig *getnetconf_cached(const char *netid); static const char *netidbytype(int af, int sotype); @@ -156,7 +156,7 @@ main(int argc, char *argv[]) int c; struct iovec *iov; int num, iovlen; - char *mntname, *p, *spec, *tmp; + char *host, *mntname, *p, *spec, *tmp; char mntpath[MAXPATHLEN], errmsg[255]; char hostname[MAXHOSTNAMELEN + 1], gssn[MAXHOSTNAMELEN + 50]; const char *gssname, *nmount_errstr; @@ -461,7 +461,7 @@ main(int argc, char *argv[]) __DECONST(void *, gssname), strlen(gssname) + 1); } - if (!getnfsargs(spec, &iov, &iovlen)) + if (!getnfsargs(&spec, &host, &iov, &iovlen)) exit(1); /* resolve the mountpoint with realpath(3) */ @@ -479,6 +479,9 @@ main(int argc, char *argv[]) else err(1, "nmount: %s%s%s", mntpath, errmsg[0] ? ", " : "", errmsg); + } else if (mountmode != V4 && !add_mtab(host, spec)) { + /* Add mounted file system to PATH_MOUNTTAB */ + warnx("can't update %s for %s:%s", PATH_MOUNTTAB, host, spec); } exit(0); @@ -568,15 +571,16 @@ rtm_ifinfo_sleep(time_t sec) } static int -getnfsargs(char *spec, struct iovec **iov, int *iovlen) +getnfsargs(char **specp, char **hostpp, struct iovec **iov, int *iovlen) { struct addrinfo hints, *ai_nfs, *ai; enum tryret ret; int ecode, speclen, remoteerr, offset, have_bracket = 0; - char *hostp, *delimp, *errstr; + char *hostp, *delimp, *errstr, *spec; size_t len; static char nam[MNAMELEN + 1], pname[MAXHOSTNAMELEN + 5]; + spec = *specp; if (*spec == '[' && (delimp = strchr(spec + 1, ']')) != NULL && *(delimp + 1) == ':') { hostp = spec + 1; @@ -718,9 +722,9 @@ getnfsargs(char *spec, struct iovec **iov, int *iovlen) freeaddrinfo(ai_nfs); build_iovec(iov, iovlen, "hostname", nam, (size_t)-1); - /* Add mounted file system to PATH_MOUNTTAB */ - if (mountmode != V4 && !add_mtab(hostp, spec)) - warnx("can't update %s for %s:%s", PATH_MOUNTTAB, hostp, spec); + + *specp = spec; + *hostpp = hostp; return (1); }