From nobody Thu Jan 27 00:14:32 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 866A8196DFA7;
	Thu, 27 Jan 2022 00:14:34 +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 4Jkh0n2wKxz4d63;
	Thu, 27 Jan 2022 00:14:33 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1643242473;
	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=FjVYJac7vzv6973p2yB5j5Z4joREzN4vr6PtMwMBozQ=;
	b=poVV4cJXwE9EKkWgPtP4WZ6mwRQnf8BECWBW5/zEdqIUjA0K06kf7Tvv0ox2nHigpqnFKf
	EIfxVc/JjooF+PEbqdniyNq8ZasVQcFGvhslGLzfnUe5oL6H3IUK3FNpQLHnyuIoDhC+r3
	Hf39shP4dim34YyfpjgDfj4pt6fK20uQZDjV6gnGc4nNl8Q0t+41nqf2QE5earNNflTTeo
	dNGXMHp6Jmev3mF43SjAAm4476FyG+6evUffteUzzbN5oH8s7u89QCTV5z8UF9Ppa1Xz/6
	JwN8QwzPL9fOu+QVhltyuMw8yfXGx2qS745S2NKsfvSSxl51w+XyE4qmdvsOvw==
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 0AD5C4648;
	Thu, 27 Jan 2022 00:14:33 +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 20R0EWOO002976;
	Thu, 27 Jan 2022 00:14:32 GMT
	(envelope-from git@gitrepo.freebsd.org)
Received: (from git@localhost)
	by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 20R0EWM8002975;
	Thu, 27 Jan 2022 00:14:32 GMT
	(envelope-from git)
Date: Thu, 27 Jan 2022 00:14:32 GMT
Message-Id: <202201270014.20R0EWM8002975@gitrepo.freebsd.org>
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org,
        dev-commits-src-branches@FreeBSD.org
From: Rick Macklem <rmacklem@FreeBSD.org>
Subject: git: 62db233e1fd2 - stable/12 - mount_nfs: Add a "bgnow" NFS mount option
List-Id: Commit messages for all branches of the src repository <dev-commits-src-all.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all
List-Help: <mailto:dev-commits-src-all+help@freebsd.org>
List-Post: <mailto:dev-commits-src-all@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-all+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-all+unsubscribe@freebsd.org>
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/stable/12
X-Git-Reftype: branch
X-Git-Commit: 62db233e1fd23827fa90527ac90c4d98c9644ef5
Auto-Submitted: auto-generated
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1643242473;
	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=FjVYJac7vzv6973p2yB5j5Z4joREzN4vr6PtMwMBozQ=;
	b=HZ8RqaUTukiYMfPguKRGMkY6MqyJodeOr+vGp/HHJ8WrdyKSGCkOfDYyQmwAA2/EvIymS1
	0rE7K3aDDsNwdx+/N855MM/w9/ifpRyysD0IS+ObDrGzTOQH3LmpbY61yWCR7eyZUcMuU7
	xUofwdmDsUkbwq6wAep/AvYWkiGX97Pm31YZQ9HCjV7B2PLLs4hKuIc1ZeNnzNVnvWQrBh
	wHpBTav7MTqbRTl+o/zcurUGGZBCEFLbKSrmS15JT9ed/+ph5RjuhGcJd1DHYChy0Ljypl
	HgBl84i6ULHFayJAXeexlAgO7PkQn3AC38Qjwl5OPfZTGZSK3/62g4HleQfQeQ==
ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1643242473; a=rsa-sha256; cv=none;
	b=nzlIdPaWKRkguPfZ7hijeP3AZJM/HI+lQjekPQg8f531G+AWi8BwCee9A634YAqfejJX9X
	RBgiQCKfCcclZTPCVALLxxtrZGoR3xnITAc1ofGq1dwdqyN5CxvK6BW5MZ8w/1ddV2SUEv
	lGdG2Ck7df2GAbiPIp11hTmTW199Z0RBsrk7jLIuSt9ztYXQHnE8BcMjWaeWWvc5dv9KtR
	wNj30+kU96h8sUUupxiYApI2SKNs0vC5cFli0FdRKPOkNIZItrzdNb8eF7B7/Zmx7THQKE
	4m5YgslPWGsg10JpjcnQGvKYLGaEa6utkQVF6PSy0XoE42RM4H7U7abL4VOLhQ==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
X-ThisMailContainsUnwantedMimeParts: N

The branch stable/12 has been updated by rmacklem:

URL: https://cgit.FreeBSD.org/src/commit/?id=62db233e1fd23827fa90527ac90c4d98c9644ef5

commit 62db233e1fd23827fa90527ac90c4d98c9644ef5
Author:     Rick Macklem <rmacklem@FreeBSD.org>
AuthorDate: 2022-01-11 16:20:01 +0000
Commit:     Rick Macklem <rmacklem@FreeBSD.org>
CommitDate: 2022-01-27 00:13:15 +0000

    mount_nfs: Add a "bgnow" NFS mount option
    
    The "bg" option does not go background until the initial mount
    attempt fails, which can take 60+ seconds.
    
    This new "bgnow" option goes background immediately, avoiding
    the 60+ second delay, if the NFS server is not yet available.
    
    The man page update is a content change.
    
    PR:             260764
    
    (cherry picked from commit 08a8d16cbb269d4c2be02eb67351c59d16f4ecb9)
---
 sbin/mount_nfs/mount_nfs.8 | 14 +++++++++++++-
 sbin/mount_nfs/mount_nfs.c | 23 +++++++++++++++++++----
 2 files changed, 32 insertions(+), 5 deletions(-)

diff --git a/sbin/mount_nfs/mount_nfs.8 b/sbin/mount_nfs/mount_nfs.8
index 41fc8310fa84..3d881a24e84a 100644
--- a/sbin/mount_nfs/mount_nfs.8
+++ b/sbin/mount_nfs/mount_nfs.8
@@ -28,7 +28,7 @@
 .\"	@(#)mount_nfs.8	8.3 (Berkeley) 3/29/95
 .\" $FreeBSD$
 .\"
-.Dd January 17, 2021
+.Dd January 11, 2022
 .Dt MOUNT_NFS 8
 .Os
 .Sh NAME
@@ -127,6 +127,18 @@ trying the mount in the background.
 Useful for
 .Xr fstab 5 ,
 where the file system mount is not critical to multiuser operation.
+.It Cm bgnow
+Like
+.Cm bg ,
+fork off a child to keep trying the mount in the background,
+but do not attempt to mount in the foreground first.
+This eliminates a
+60+ second timeout when the server is not responding.
+Useful for speeding up the boot process of a client when the server is
+likely to be unavailable.
+This is often the case for interdependent servers
+such as cross-mounted servers (each of two servers is an NFS client of
+the other) and for cluster nodes that must boot before the file servers.
 .It Cm deadthresh Ns = Ns Aq Ar value
 Set the
 .Dq "dead server threshold"
diff --git a/sbin/mount_nfs/mount_nfs.c b/sbin/mount_nfs/mount_nfs.c
index 473370ee0209..78ebf6269062 100644
--- a/sbin/mount_nfs/mount_nfs.c
+++ b/sbin/mount_nfs/mount_nfs.c
@@ -100,10 +100,11 @@ struct nfhret {
 	long		fhsize;
 	u_char		nfh[NFS3_FHSIZE];
 };
-#define	BGRND	1
-#define	ISBGRND	2
-#define	OF_NOINET4	4
-#define	OF_NOINET6	8
+#define	BGRND		0x01
+#define	ISBGRND		0x02
+#define	OF_NOINET4	0x04
+#define	OF_NOINET6	0x08
+#define	BGRNDNOW	0x10
 static int retrycnt = -1;
 static int opflags = 0;
 static int nfsproto = IPPROTO_TCP;
@@ -239,6 +240,9 @@ main(int argc, char *argv[])
 				if (strcmp(opt, "bg") == 0) {
 					opflags |= BGRND;
 					pass_flag_to_nmount=0;
+				} else if (strcmp(opt, "bgnow") == 0) {
+					opflags |= BGRNDNOW;
+					pass_flag_to_nmount=0;
 				} else if (strcmp(opt, "fg") == 0) {
 					/* same as not specifying -o bg */
 					pass_flag_to_nmount=0;
@@ -418,6 +422,9 @@ main(int argc, char *argv[])
 	argc -= optind;
 	argv += optind;
 
+	if ((opflags & (BGRND | BGRNDNOW)) == (BGRND | BGRNDNOW))
+		errx(1, "Options bg and bgnow are mutually exclusive");
+
 	if (argc != 2) {
 		usage();
 		/* NOTREACHED */
@@ -588,6 +595,14 @@ getnfsargs(char *spec, struct iovec **iov, int *iovlen)
 		}
 	}
 
+	if ((opflags & (BGRNDNOW | ISBGRND)) == BGRNDNOW) {
+		warnx("Mount %s:%s, backgrounding",
+		    hostp, spec);
+		opflags |= ISBGRND;
+		if (daemon(0, 0) != 0)
+			err(1, "daemon");
+	}
+
 	ret = TRYRET_LOCALERR;
 	for (;;) {
 		/*