svn commit: r315648 - head/lib/libstand
Toomas Soome
tsoome at FreeBSD.org
Mon Mar 20 19:16:30 UTC 2017
Author: tsoome
Date: Mon Mar 20 19:16:28 2017
New Revision: 315648
URL: https://svnweb.freebsd.org/changeset/base/315648
Log:
libstand: verify value provided by nfs.read_size
Implement simple value check and feedback.
Reviewed by: allanjude, rpokala
Approved by: allanjude (mentor)
Differential Revision: https://reviews.freebsd.org/D8491
Modified:
head/lib/libstand/nfs.c
Modified: head/lib/libstand/nfs.c
==============================================================================
--- head/lib/libstand/nfs.c Mon Mar 20 18:28:22 2017 (r315647)
+++ head/lib/libstand/nfs.c Mon Mar 20 19:16:28 2017 (r315648)
@@ -214,6 +214,38 @@ struct fs_ops nfs_fsops = {
static int nfs_read_size = NFSREAD_MIN_SIZE;
+/*
+ * Improve boot performance over NFS
+ */
+static void
+set_nfs_read_size(void)
+{
+ char *env, *end;
+ char buf[10];
+
+ if ((env = getenv("nfs.read_size")) != NULL) {
+ errno = 0;
+ nfs_read_size = (int)strtol(env, &end, 0);
+ if (errno != 0 || *env == '\0' || *end != '\0') {
+ printf("%s: bad value: \"%s\", defaulting to %d\n",
+ "nfs.read_size", env, NFSREAD_MIN_SIZE);
+ nfs_read_size = NFSREAD_MIN_SIZE;
+ }
+ }
+ if (nfs_read_size < NFSREAD_MIN_SIZE) {
+ printf("%s: bad value: \"%d\", defaulting to %d\n",
+ "nfs.read_size", nfs_read_size, NFSREAD_MIN_SIZE);
+ nfs_read_size = NFSREAD_MIN_SIZE;
+ }
+ if (nfs_read_size > NFSREAD_MAX_SIZE) {
+ printf("%s: bad value: \"%d\", defaulting to %d\n",
+ "nfs.read_size", nfs_read_size, NFSREAD_MIN_SIZE);
+ nfs_read_size = NFSREAD_MAX_SIZE;
+ }
+ snprintf(buf, sizeof (buf), "%d", nfs_read_size);
+ setenv("nfs.read_size", buf, 1);
+}
+
#ifdef OLD_NFSV2
/*
* Fetch the root file handle (call mount daemon)
@@ -269,16 +301,7 @@ nfs_getrootfh(struct iodesc *d, char *pa
return (ntohl(repl->errno));
bcopy(repl->fh, fhp, sizeof(repl->fh));
- /*
- * Improve boot performance over NFS
- */
- if (getenv("nfs.read_size") != NULL)
- nfs_read_size = strtol(getenv("nfs.read_size"), NULL, 0);
- if (nfs_read_size < NFSREAD_MIN_SIZE)
- nfs_read_size = NFSREAD_MIN_SIZE;
- if (nfs_read_size > NFSREAD_MAX_SIZE)
- nfs_read_size = NFSREAD_MAX_SIZE;
-
+ set_nfs_read_size();
return (0);
}
@@ -885,6 +908,8 @@ nfs_getrootfh(struct iodesc *d, char *pa
return (ntohl(repl->errno));
*fhlenp = ntohl(repl->fhsize);
bcopy(repl->fh, fhp, *fhlenp);
+
+ set_nfs_read_size();
return (0);
}
More information about the svn-src-head
mailing list