Page MenuHomeFreeBSD

D33733.id.diff
No OneTemporary

D33733.id.diff

diff --git a/sbin/mount_nfs/mount_nfs.8 b/sbin/mount_nfs/mount_nfs.8
--- 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 July 10, 2021
+.Dd January 11, 2022
.Dt MOUNT_NFS 8
.Os
.Sh NAME
@@ -129,6 +129,18 @@
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
--- a/sbin/mount_nfs/mount_nfs.c
+++ b/sbin/mount_nfs/mount_nfs.c
@@ -103,10 +103,11 @@
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;
@@ -242,6 +243,9 @@
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;
@@ -421,6 +425,9 @@
argc -= optind;
argv += optind;
+ if ((opflags & (BGRND | BGRNDNOW)) == (BGRND | BGRNDNOW))
+ errx(1, "Options bg and bgnow are mutually exclusive");
+
if (argc != 2) {
usage();
/* NOTREACHED */
@@ -649,6 +656,14 @@
}
}
+ 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 (;;) {
/*

File Metadata

Mime Type
text/plain
Expires
Sun, Nov 23, 2:45 AM (10 h, 42 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
26001674
Default Alt Text
D33733.id.diff (2 KB)

Event Timeline