Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 28 Jan 2009 07:46:35 +0000 (UTC)
From:      Craig Rodrigues <rodrigc@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r187812 - in head: sbin/mount_nfs sys/nfsclient
Message-ID:  <200901280746.n0S7kZdP010924@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: rodrigc
Date: Wed Jan 28 07:46:35 2009
New Revision: 187812
URL: http://svn.freebsd.org/changeset/base/187812

Log:
  Fix parsing of acregmin, acregmax, acdirmin and acdirmax NFS mount options
  when passed as strings via nmount().
  
  Submitted by: Jaakko Heinonen <jh saunalahti fi>

Modified:
  head/sbin/mount_nfs/mount_nfs.c
  head/sys/nfsclient/nfs_vfsops.c

Modified: head/sbin/mount_nfs/mount_nfs.c
==============================================================================
--- head/sbin/mount_nfs/mount_nfs.c	Wed Jan 28 05:18:21 2009	(r187811)
+++ head/sbin/mount_nfs/mount_nfs.c	Wed Jan 28 07:46:35 2009	(r187812)
@@ -584,25 +584,25 @@ fallback_mount(struct iovec *iov, int io
 	}
 	if (findopt(iov, iovlen, "acregmin", &opt, NULL) == 0) {
 		ret = sscanf(opt, "%d", &args.acregmin);
-		if (ret != 1 || args.acregmin <= 0) {
+		if (ret != 1 || args.acregmin < 0) {
 			errx(1, "illegal acregmin: %s", opt);
 		}
 	}
 	if (findopt(iov, iovlen, "acregmax", &opt, NULL) == 0) {
 		ret = sscanf(opt, "%d", &args.acregmax);
-		if (ret != 1 || args.acregmax <= 0) {
+		if (ret != 1 || args.acregmax < 0) {
 			errx(1, "illegal acregmax: %s", opt);
 		}
 	}
 	if (findopt(iov, iovlen, "acdirmin", &opt, NULL) == 0) {
 		ret = sscanf(opt, "%d", &args.acdirmin);
-		if (ret != 1 || args.acdirmin <= 0) {
+		if (ret != 1 || args.acdirmin < 0) {
 			errx(1, "illegal acdirmin: %s", opt);
 		}
 	}
 	if (findopt(iov, iovlen, "acdirmax", &opt, NULL) == 0) {
 		ret = sscanf(opt, "%d", &args.acdirmax);
-		if (ret != 1 || args.acdirmax <= 0) {
+		if (ret != 1 || args.acdirmax < 0) {
 			errx(1, "illegal acdirmax: %s", opt);
 		}
 	}

Modified: head/sys/nfsclient/nfs_vfsops.c
==============================================================================
--- head/sys/nfsclient/nfs_vfsops.c	Wed Jan 28 05:18:21 2009	(r187811)
+++ head/sys/nfsclient/nfs_vfsops.c	Wed Jan 28 07:46:35 2009	(r187812)
@@ -976,39 +976,43 @@ nfs_mount(struct mount *mp, struct threa
 	}
 	if (vfs_getopt(mp->mnt_optnew, "acregmin", (void **)&opt, NULL) == 0) {
 		ret = sscanf(opt, "%d", &args.acregmin);
-		if (ret != 1 || args.acregmin <= 0) {
+		if (ret != 1 || args.acregmin < 0) {
 			vfs_mount_error(mp, "illegal acregmin: %s",
 			    opt);
 			error = EINVAL;
 			goto out;
 		}
+		args.flags |= NFSMNT_ACREGMIN;
 	}
 	if (vfs_getopt(mp->mnt_optnew, "acregmax", (void **)&opt, NULL) == 0) {
 		ret = sscanf(opt, "%d", &args.acregmax);
-		if (ret != 1 || args.acregmax <= 0) {
+		if (ret != 1 || args.acregmax < 0) {
 			vfs_mount_error(mp, "illegal acregmax: %s",
 			    opt);
 			error = EINVAL;
 			goto out;
 		}
+		args.flags |= NFSMNT_ACREGMAX;
 	}
 	if (vfs_getopt(mp->mnt_optnew, "acdirmin", (void **)&opt, NULL) == 0) {
 		ret = sscanf(opt, "%d", &args.acdirmin);
-		if (ret != 1 || args.acdirmin <= 0) {
+		if (ret != 1 || args.acdirmin < 0) {
 			vfs_mount_error(mp, "illegal acdirmin: %s",
 			    opt);
 			error = EINVAL;
 			goto out;
 		}
+		args.flags |= NFSMNT_ACDIRMIN;
 	}
 	if (vfs_getopt(mp->mnt_optnew, "acdirmax", (void **)&opt, NULL) == 0) {
 		ret = sscanf(opt, "%d", &args.acdirmax);
-		if (ret != 1 || args.acdirmax <= 0) {
+		if (ret != 1 || args.acdirmax < 0) {
 			vfs_mount_error(mp, "illegal acdirmax: %s",
 			    opt);
 			error = EINVAL;
 			goto out;
 		}
+		args.flags |= NFSMNT_ACDIRMAX;
 	}
 	if (vfs_getopt(mp->mnt_optnew, "deadthresh", (void **)&opt, NULL) == 0) {
 		ret = sscanf(opt, "%d", &args.deadthresh);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200901280746.n0S7kZdP010924>