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) {