|
@@ -566,13 +566,23 @@ enum fsid_source fsid_source(struct svc_fh *fhp)
|
|
|
case FSID_DEV:
|
|
|
case FSID_ENCODE_DEV:
|
|
|
case FSID_MAJOR_MINOR:
|
|
|
- return FSIDSOURCE_DEV;
|
|
|
+ if (fhp->fh_export->ex_dentry->d_inode->i_sb->s_type->fs_flags
|
|
|
+ & FS_REQUIRES_DEV)
|
|
|
+ return FSIDSOURCE_DEV;
|
|
|
+ break;
|
|
|
case FSID_NUM:
|
|
|
- return FSIDSOURCE_FSID;
|
|
|
- default:
|
|
|
if (fhp->fh_export->ex_flags & NFSEXP_FSID)
|
|
|
return FSIDSOURCE_FSID;
|
|
|
- else
|
|
|
- return FSIDSOURCE_UUID;
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
}
|
|
|
+ /* either a UUID type filehandle, or the filehandle doesn't
|
|
|
+ * match the export.
|
|
|
+ */
|
|
|
+ if (fhp->fh_export->ex_flags & NFSEXP_FSID)
|
|
|
+ return FSIDSOURCE_FSID;
|
|
|
+ if (fhp->fh_export->ex_uuid)
|
|
|
+ return FSIDSOURCE_UUID;
|
|
|
+ return FSIDSOURCE_DEV;
|
|
|
}
|