aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfsd/nfsfh.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/nfsd/nfsfh.c')
-rw-r--r--fs/nfsd/nfsfh.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/fs/nfsd/nfsfh.c b/fs/nfsd/nfsfh.c
index 0eb464a39aae..7011d62acfc8 100644
--- a/fs/nfsd/nfsfh.c
+++ b/fs/nfsd/nfsfh.c
@@ -566,13 +566,23 @@ enum fsid_source fsid_source(struct svc_fh *fhp)
566 case FSID_DEV: 566 case FSID_DEV:
567 case FSID_ENCODE_DEV: 567 case FSID_ENCODE_DEV:
568 case FSID_MAJOR_MINOR: 568 case FSID_MAJOR_MINOR:
569 return FSIDSOURCE_DEV; 569 if (fhp->fh_export->ex_dentry->d_inode->i_sb->s_type->fs_flags
570 & FS_REQUIRES_DEV)
571 return FSIDSOURCE_DEV;
572 break;
570 case FSID_NUM: 573 case FSID_NUM:
571 return FSIDSOURCE_FSID;
572 default:
573 if (fhp->fh_export->ex_flags & NFSEXP_FSID) 574 if (fhp->fh_export->ex_flags & NFSEXP_FSID)
574 return FSIDSOURCE_FSID; 575 return FSIDSOURCE_FSID;
575 else 576 break;
576 return FSIDSOURCE_UUID; 577 default:
578 break;
577 } 579 }
580 /* either a UUID type filehandle, or the filehandle doesn't
581 * match the export.
582 */
583 if (fhp->fh_export->ex_flags & NFSEXP_FSID)
584 return FSIDSOURCE_FSID;
585 if (fhp->fh_export->ex_uuid)
586 return FSIDSOURCE_UUID;
587 return FSIDSOURCE_DEV;
578} 588}