Blob Blame History Raw
diff -up nfs-utils-1.2.2/support/include/nfslib.h.orig nfs-utils-1.2.2/support/include/nfslib.h
--- nfs-utils-1.2.2/support/include/nfslib.h.orig	2010-05-06 13:43:24.359131000 -0400
+++ nfs-utils-1.2.2/support/include/nfslib.h	2010-05-06 14:10:24.804914000 -0400
@@ -89,6 +89,7 @@ struct exportent {
 	char *          e_fslocdata;
 	char *		e_uuid;
 	struct sec_entry e_secinfo[SECFLAVOR_COUNT+1];
+	int		e_pnfs;
 };
 
 struct rmtabent {
diff -up nfs-utils-1.2.2/support/nfs/exports.c.orig nfs-utils-1.2.2/support/nfs/exports.c
--- nfs-utils-1.2.2/support/nfs/exports.c.orig	2010-05-06 13:43:24.516131000 -0400
+++ nfs-utils-1.2.2/support/nfs/exports.c	2010-05-06 14:10:24.810898000 -0400
@@ -107,6 +107,7 @@ static void init_exportent (struct expor
 	ee->e_nsquids = 0;
 	ee->e_nsqgids = 0;
 	ee->e_uuid = NULL;
+	ee->e_pnfs = 0;
 }
 
 struct exportent *
@@ -299,6 +300,8 @@ putexportent(struct exportent *ep)
 	}
 	fprintf(fp, "anonuid=%d,anongid=%d", ep->e_anonuid, ep->e_anongid);
 	secinfo_show(fp, ep);
+	if (ep->e_pnfs)
+		fprintf(fp, ",pnfs");
 	fprintf(fp, ")\n");
 }
 
@@ -557,6 +560,10 @@ parseopts(char *cp, struct exportent *ep
 			clearflags(NFSEXP_NOACL, active, ep);
 		else if (strcmp(opt, "no_acl") == 0)
 			setflags(NFSEXP_NOACL, active, ep);
+		else if (strcmp(opt, "pnfs") == 0)
+			ep->e_pnfs = 1;
+		else if (strcmp(opt, "no_pnfs") == 0)
+			ep->e_pnfs = 0;
 		else if (strncmp(opt, "anonuid=", 8) == 0) {
 			char *oe;
 			ep->e_anonuid = strtol(opt+8, &oe, 10);
diff -up nfs-utils-1.2.2/utils/exportfs/exportfs.c.orig nfs-utils-1.2.2/utils/exportfs/exportfs.c
--- nfs-utils-1.2.2/utils/exportfs/exportfs.c.orig	2010-02-18 07:35:00.000000000 -0500
+++ nfs-utils-1.2.2/utils/exportfs/exportfs.c	2010-05-06 14:10:24.815911000 -0400
@@ -524,6 +524,8 @@ dump(int verbose)
 #endif
 			}
 			secinfo_show(stdout, ep);
+			if (ep->e_pnfs)
+				c = dumpopt(c, ",pnfs");
 			printf("%c\n", (c != '(')? ')' : ' ');
 		}
 	}
diff -up nfs-utils-1.2.2/utils/exportfs/exports.man.orig nfs-utils-1.2.2/utils/exportfs/exports.man
--- nfs-utils-1.2.2/utils/exportfs/exports.man.orig	2010-02-18 07:35:00.000000000 -0500
+++ nfs-utils-1.2.2/utils/exportfs/exports.man	2010-05-06 14:00:40.598818000 -0400
@@ -378,7 +378,10 @@ is sufficient.)
 If the client asks for alternative locations for the export point, it
 will be given this list of alternatives. (Note that actual replication
 of the filesystem must be handled elsewhere.)
-
+.TP
+.IR pnfs
+Make a file system available to a Parallel NFS (pNFS)
+client.
 .SS User ID Mapping
 .PP
 .I nfsd
diff -up nfs-utils-1.2.2/utils/mountd/cache.c.orig nfs-utils-1.2.2/utils/mountd/cache.c
--- nfs-utils-1.2.2/utils/mountd/cache.c.orig	2010-05-06 13:43:24.448134000 -0400
+++ nfs-utils-1.2.2/utils/mountd/cache.c	2010-05-06 14:10:24.851898000 -0400
@@ -596,6 +596,8 @@ static int dump_to_cache(FILE *f, char *
 		qword_printint(f, exp->e_anonuid);
 		qword_printint(f, exp->e_anongid);
 		qword_printint(f, exp->e_fsid);
+		if (exp->e_pnfs == 1)
+			qword_print(f, "pnfs");
 		write_fsloc(f, exp, path);
 		write_secinfo(f, exp, flag_mask);
  		if (exp->e_uuid == NULL || different_fs) {