Lines Matching refs:exp
25 * if not, require that we can walk up to exp->ex_dentry
30 struct svc_export *exp = expv;
35 if (exp->ex_flags & NFSEXP_NOSUBTREECHECK)
39 while (tdentry != exp->ex_path.dentry && !IS_ROOT(tdentry)) {
52 if (tdentry != exp->ex_path.dentry)
54 rv = (tdentry == exp->ex_path.dentry);
92 struct svc_export *exp)
94 if (nfsexp_flags(cred, exp) & NFSEXP_INSECURE_PORT)
104 struct svc_export *exp)
107 if (rqstp && !nfsd_originating_port_ok(rqstp, cred, exp)) {
115 return nfserrno(nfsd_setuser(cred, exp));
119 struct svc_export *exp)
121 if (!(exp->ex_flags & NFSEXP_V4ROOT))
135 if (unlikely(dentry != exp->ex_path.dentry))
153 struct svc_export *exp;
193 exp = rqst_exp_find(rqstp ? &rqstp->rq_chandle : NULL,
199 if (IS_ERR(exp)) {
200 trace_nfsd_set_fh_dentry_badexport(rqstp, fhp, PTR_ERR(exp));
202 if (PTR_ERR(exp) == -ENOENT)
205 return nfserrno(PTR_ERR(exp));
208 if (exp->ex_flags & NFSEXP_NOSUBTREECHECK) {
228 error = nfsd_setuser_and_check_port(rqstp, cred, exp);
241 dentry = dget(exp->ex_path.dentry);
243 dentry = exportfs_decode_fh_raw(exp->ex_path.mnt, fid,
245 nfsd_acceptable, exp);
273 fhp->fh_export = exp;
285 if (exp->ex_flags & NFSEXP_V4ROOT)
290 if (EX_WGATHER(exp))
292 if (exp->ex_flags & NFSEXP_V4ROOT)
298 exp_put(exp);
323 struct svc_export *exp = NULL;
335 exp = fhp->fh_export;
355 error = check_pseudo_root(dentry, exp);
359 error = nfsd_setuser_and_check_port(rqstp, cred, exp);
367 if ((access & NFSD_MAY_NLM) && (exp->ex_flags & NFSEXP_NOAUTHNLM))
379 && exp->ex_path.dentry == dentry)
382 error = check_nfsd_access(exp, rqstp, may_bypass_gss);
390 error = nfsd_permission(cred, exp, dentry, access);
394 nfsd_stats_fh_stale_inc(nn, exp);
463 static void _fh_update(struct svc_fh *fhp, struct svc_export *exp,
466 if (dentry != exp->ex_path.dentry) {
470 int fh_flags = (exp->ex_flags & NFSEXP_NOSUBTREECHECK) ? 0 :
483 static bool is_root_export(struct svc_export *exp)
485 return exp->ex_path.dentry == exp->ex_path.dentry->d_sb->s_root;
488 static struct super_block *exp_sb(struct svc_export *exp)
490 return exp->ex_path.dentry->d_sb;
493 static bool fsid_type_ok_for_exp(u8 fsid_type, struct svc_export *exp)
497 if (!old_valid_dev(exp_sb(exp)->s_dev))
502 return exp_sb(exp)->s_type->fs_flags & FS_REQUIRES_DEV;
504 return exp->ex_flags & NFSEXP_FSID;
507 if (!is_root_export(exp))
512 return exp->ex_uuid != NULL;
518 static void set_version_and_fsid_type(struct svc_fh *fhp, struct svc_export *exp, struct svc_fh *ref_fh)
524 if (ref_fh && ref_fh->fh_export == exp) {
546 if (!fsid_type_ok_for_exp(fsid_type, exp))
548 } else if (exp->ex_flags & NFSEXP_FSID) {
550 } else if (exp->ex_uuid) {
552 if (is_root_export(exp))
557 if (is_root_export(exp))
562 } else if (!old_valid_dev(exp_sb(exp)->s_dev))
573 fh_compose(struct svc_fh *fhp, struct svc_export *exp, struct dentry *dentry,
582 dev_t ex_dev = exp_sb(exp)->s_dev;
584 dprintk("nfsd: fh_compose(exp %02x:%02x/%ld %pd2, ino=%ld)\n",
586 (long) d_inode(exp->ex_path.dentry)->i_ino,
594 set_version_and_fsid_type(fhp, exp, ref_fh);
612 fhp->fh_export = exp_get(exp);
621 d_inode(exp->ex_path.dentry)->i_ino,
622 exp->ex_fsid, exp->ex_uuid);
625 _fh_update(fhp, exp, dentry);
750 struct svc_export * exp = fhp->fh_export;
757 if (exp) {
758 exp_put(exp);