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