|
@@ -1453,28 +1453,35 @@ static struct flags {
|
|
|
{ 0, {"", ""}}
|
|
|
};
|
|
|
|
|
|
-static void exp_flags(struct seq_file *m, int flag, int fsid,
|
|
|
- uid_t anonu, uid_t anong, struct nfsd4_fs_locations *fsloc)
|
|
|
+static void show_expflags(struct seq_file *m, int flags, int mask)
|
|
|
{
|
|
|
- int first = 0;
|
|
|
struct flags *flg;
|
|
|
+ int state, first = 0;
|
|
|
|
|
|
for (flg = expflags; flg->flag; flg++) {
|
|
|
- int state = (flg->flag & flag)?0:1;
|
|
|
+ if (flg->flag & ~mask)
|
|
|
+ continue;
|
|
|
+ state = (flg->flag & flags) ? 0 : 1;
|
|
|
if (*flg->name[state])
|
|
|
seq_printf(m, "%s%s", first++?",":"", flg->name[state]);
|
|
|
}
|
|
|
+}
|
|
|
+
|
|
|
+static void exp_flags(struct seq_file *m, int flag, int fsid,
|
|
|
+ uid_t anonu, uid_t anong, struct nfsd4_fs_locations *fsloc)
|
|
|
+{
|
|
|
+ show_expflags(m, flag, NFSEXP_ALLFLAGS);
|
|
|
if (flag & NFSEXP_FSID)
|
|
|
- seq_printf(m, "%sfsid=%d", first++?",":"", fsid);
|
|
|
+ seq_printf(m, ",fsid=%d", fsid);
|
|
|
if (anonu != (uid_t)-2 && anonu != (0x10000-2))
|
|
|
- seq_printf(m, "%sanonuid=%d", first++?",":"", anonu);
|
|
|
+ seq_printf(m, ",sanonuid=%d", anonu);
|
|
|
if (anong != (gid_t)-2 && anong != (0x10000-2))
|
|
|
- seq_printf(m, "%sanongid=%d", first++?",":"", anong);
|
|
|
+ seq_printf(m, ",sanongid=%d", anong);
|
|
|
if (fsloc && fsloc->locations_count > 0) {
|
|
|
char *loctype = (fsloc->migrated) ? "refer" : "replicas";
|
|
|
int i;
|
|
|
|
|
|
- seq_printf(m, "%s%s=", first++?",":"", loctype);
|
|
|
+ seq_printf(m, ",%s=", loctype);
|
|
|
seq_escape(m, fsloc->locations[0].path, ",;@ \t\n\\");
|
|
|
seq_putc(m, '@');
|
|
|
seq_escape(m, fsloc->locations[0].hosts, ",;@ \t\n\\");
|