rpms/nfs-utils/F-7 nfs-utils-1.1.0-mount-nosharecache.patch, NONE, 1.1 nfs-utils.spec, 1.158, 1.159

Steve Dickson (steved) fedora-extras-commits at redhat.com
Mon Aug 13 14:35:25 UTC 2007


Author: steved

Update of /cvs/pkgs/rpms/nfs-utils/F-7
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv27585

Modified Files:
	nfs-utils.spec 
Added Files:
	nfs-utils-1.1.0-mount-nosharecache.patch 
Log Message:
- Added nosharecache mount option which re-enables
  rw/ro mounts to the same server (bz 243913).


nfs-utils-1.1.0-mount-nosharecache.patch:

--- NEW FILE nfs-utils-1.1.0-mount-nosharecache.patch ---
Adds support for the 'nosharecache' mount option to nfs-utils.

Signed-off-by: Trond Myklebust <Trond.Myklebust at netapp.com>
---

 utils/mount/nfs.man      |   34 ++++++++++++++++++++++++++++++++++
 utils/mount/nfs4_mount.h |    1 +
 utils/mount/nfs4mount.c  |   14 ++++++++++----
 utils/mount/nfs_mount.h  |    1 +
 utils/mount/nfsmount.c   |    4 ++++
 5 files changed, 50 insertions(+), 4 deletions(-)

diff --git a/utils/mount/nfs.man b/utils/mount/nfs.man
index 673556c..e66daba 100644
--- a/utils/mount/nfs.man
+++ b/utils/mount/nfs.man
@@ -288,6 +288,23 @@ Mount the NFS filesystem using the UDP protocol.
 Disables NFSv3 READDIRPLUS RPCs. Use this option when
 mounting servers that don't support or have broken
 READDIRPLUS implementations.
+.TP 1.5i
+.I nosharecache
+As of kernel 2.6.18, it is no longer possible to mount the same
+same filesystem with different mount options to a new mountpoint.
+It was deemed unsafe to do so, since cached data cannot be shared
+between the two mountpoints. In consequence, files or directories
+that were common to both mountpoint subtrees could often be seen to
+be out of sync following an update.
+.br
+This option allows administrators to select the pre-2.6.18 behaviour,
+permitting the same filesystem to be mounted with different mount
+options.
+.br
+.B Beware:
+Use of this option is not recommended unless you are certain that there
+are no hard links or subtrees of this mountpoint that are mounted
+elsewhere.
 .P
 All of the non-value options have corresponding nooption forms.
 For example, nointr means don't allow file operations to be
@@ -444,6 +461,23 @@ This extracts a
 server performance penalty but it allows two different NFS clients
 to get reasonable good results when both clients are actively
 writing to common filesystem on the server.
+.TP 1.5i
+.I nosharecache
+As of kernel 2.6.18, it is no longer possible to mount the same
+same filesystem with different mount options to a new mountpoint.
+It was deemed unsafe to do so, since cached data cannot be shared
+between the two mountpoints. In consequence, files or directories
+that were common to both mountpoint subtrees could often be seen to
+be out of sync following an update.
+.br
+This option allows administrators to select the pre-2.6.18 behaviour,
+permitting the same filesystem to be mounted with different mount
+options.
+.br
+.B Beware:
+Use of this option is not recommended unless you are certain that there
+are no hard links or subtrees of this mountpoint that are mounted
+elsewhere.
 .P
 All of the non-value options have corresponding nooption forms.
 For example, nointr means don't allow file operations to be
diff --git a/utils/mount/nfs4_mount.h b/utils/mount/nfs4_mount.h
index 74c9b95..2fcca6d 100644
--- a/utils/mount/nfs4_mount.h
+++ b/utils/mount/nfs4_mount.h
@@ -65,6 +65,7 @@ struct nfs4_mount_data {
 #define NFS4_MOUNT_NOCTO	0x0010	/* 1 */
 #define NFS4_MOUNT_NOAC		0x0020	/* 1 */
 #define NFS4_MOUNT_STRICTLOCK	0x1000	/* 1 */
+#define NFS4_MOUNT_UNSHARED	0x8000	/* 5 */
 #define NFS4_MOUNT_FLAGMASK	0xFFFF
 
 /* pseudoflavors: */
diff --git a/utils/mount/nfs4mount.c b/utils/mount/nfs4mount.c
index 2a58d0a..0376f32 100644
--- a/utils/mount/nfs4mount.c
+++ b/utils/mount/nfs4mount.c
@@ -201,7 +201,7 @@ int nfs4mount(const char *spec, const char *node, int *flags,
 	char *s;
 	int val;
 	int bg, soft, intr;
-	int nocto, noac;
+	int nocto, noac, unshared;
 	int retry;
 	int retval;
 	time_t timeout, t;
@@ -252,6 +252,7 @@ int nfs4mount(const char *spec, const char *node, int *flags,
 	intr = NFS4_MOUNT_INTR;
 	nocto = 0;
 	noac = 0;
+	unshared = 0;
 	retry = 10000;		/* 10000 minutes ~ 1 week */
 
 	/*
@@ -336,6 +337,8 @@ int nfs4mount(const char *spec, const char *node, int *flags,
 				nocto = !val;
 			else if (!strcmp(opt, "ac"))
 				noac = !val;
+			else if (!strcmp(opt, "sharecache"))
+				unshared = !val;
 			else if (!sloppy) {
 				printf(_("unknown nfs mount option: "
 					 "%s%s\n"), val ? "" : "no", opt);
@@ -347,7 +350,8 @@ int nfs4mount(const char *spec, const char *node, int *flags,
 	data.flags = (soft ? NFS4_MOUNT_SOFT : 0)
 		| (intr ? NFS4_MOUNT_INTR : 0)
 		| (nocto ? NFS4_MOUNT_NOCTO : 0)
-		| (noac ? NFS4_MOUNT_NOAC : 0);
+		| (noac ? NFS4_MOUNT_NOAC : 0)
+		| (unshared ? NFS4_MOUNT_UNSHARED : 0);
 
 	/*
 	 * Give a warning if the rpc.idmapd daemon is not running
@@ -388,11 +392,13 @@ int nfs4mount(const char *spec, const char *node, int *flags,
 	       data.acregmin, data.acregmax, data.acdirmin, data.acdirmax);
 	printf("port = %d, bg = %d, retry = %d, flags = %.8x\n",
 	       ntohs(server_addr.sin_port), bg, retry, data.flags);
-	printf("soft = %d, intr = %d, nocto = %d, noac = %d\n",
+	printf("soft = %d, intr = %d, nocto = %d, noac = %d, "
+	       "nosharecache = %d\n",
 	       (data.flags & NFS4_MOUNT_SOFT) != 0,
 	       (data.flags & NFS4_MOUNT_INTR) != 0,
 	       (data.flags & NFS4_MOUNT_NOCTO) != 0,
-	       (data.flags & NFS4_MOUNT_NOAC) != 0);
+	       (data.flags & NFS4_MOUNT_NOAC) != 0,
+	       (data.flags & NFS4_MOUNT_UNSHARED) != 0);
 
 	if (num_flavour > 0) {
 		int pf_cnt, i;
diff --git a/utils/mount/nfs_mount.h b/utils/mount/nfs_mount.h
index 4a061d8..50ce2a8 100644
--- a/utils/mount/nfs_mount.h
+++ b/utils/mount/nfs_mount.h
@@ -64,6 +64,7 @@ struct nfs_mount_data {
 #define NFS_MOUNT_NOACL     0x0800  /* 4 */
 #define NFS_MOUNT_SECFLAVOUR	0x2000	/* 5 */
 #define NFS_MOUNT_NORDIRPLUS	0x4000	/* 5 */
+#define NFS_MOUNT_UNSHARED	0x8000	/* 5 */
 
 /* security pseudoflavors */
 
diff --git a/utils/mount/nfsmount.c b/utils/mount/nfsmount.c
index 815064a..f21aaff 100644
--- a/utils/mount/nfsmount.c
+++ b/utils/mount/nfsmount.c
@@ -804,6 +804,10 @@ parse_options(char *old_opts, struct nfs_mount_data *data,
 				data->flags &= ~NFS_MOUNT_NORDIRPLUS;
 				if (!val)
 					data->flags |= NFS_MOUNT_NORDIRPLUS;
+			} else if (!strcmp(opt, "sharecache")) {
+				data->flags &= ~NFS_MOUNT_UNSHARED;
+				if (!val)
+					data->flags |= NFS_MOUNT_UNSHARED;
 #endif
 			} else {
 			bad_option:



Index: nfs-utils.spec
===================================================================
RCS file: /cvs/pkgs/rpms/nfs-utils/F-7/nfs-utils.spec,v
retrieving revision 1.158
retrieving revision 1.159
diff -u -r1.158 -r1.159
--- nfs-utils.spec	2 Aug 2007 15:41:57 -0000	1.158
+++ nfs-utils.spec	13 Aug 2007 14:34:52 -0000	1.159
@@ -2,7 +2,7 @@
 Name: nfs-utils
 URL: http://sourceforge.net/projects/nfs
 Version: 1.1.0
-Release: 2%{?dist}
+Release: 3%{?dist}
 Epoch: 1
 
 # group all 32bit related archs
@@ -32,6 +32,7 @@
 Patch07: nfs-utils-1.1.0-exp-subtree-warn-off.patch
 Patch08: nfs-utils-1.1.0-showmount-rpcerror.patch
 Patch09: nfs-utils-1.1.0-mount-v4-errors.patch
+Patch10: nfs-utils-1.1.0-mount-nosharecache.patch
 
 %if %{enablefscache}
 Patch90: nfs-utils-1.1.0-mount-fsc.patch
@@ -94,6 +95,7 @@
 %patch07 -p1
 %patch08 -p1
 %patch09 -p1
+%patch10 -p1
 
 %if %{enablefscache}
 %patch90 -p1
@@ -268,6 +270,10 @@
 %attr(4755,root,root)   /sbin/umount.nfs4
 
 %changelog
+* Mon Aug 13 2007 Steve Dickson <steved at redhat.com>  1.1.0-3
+- Added nosharecache mount option which re-enables
+  rw/ro mounts to the same server (bz 243913).
+
 * Thu Aug  2 2007 Steve Dickson <steved at redhat.com>  1.1.0-2
 - Make sure the initscript exits if rpc.mountd does 
   not start (bz 250622)




More information about the fedora-extras-commits mailing list