Lines Matching refs:exp
336 struct svc_export *exp = container_of(ref, struct svc_export, h.ref);
337 path_put(&exp->ex_path);
338 auth_domain_put(exp->ex_client);
339 nfsd4_fslocs_free(&exp->ex_fslocs);
340 kfree(exp->ex_uuid);
341 kfree_rcu(exp, ex_rcu);
354 struct svc_export *exp = container_of(h, struct svc_export, h);
357 qword_add(bpp, blen, exp->ex_client->name);
358 pth = d_path(&exp->ex_path, *bpp, *blen);
475 static int secinfo_parse(char **mesg, char *buf, struct svc_export *exp)
482 if (exp->ex_nflavors)
491 for (f = exp->ex_flavors; f < exp->ex_flavors + listsize; f++) {
505 if (~NFSEXP_SECINFO_FLAGS & (f->flags ^ exp->ex_flags))
508 exp->ex_nflavors = listsize;
516 secinfo_parse(char **mesg, char *buf, struct svc_export *exp) { return 0; }
547 struct svc_export exp = {}, *expp;
574 err = kern_path(buf, 0, &exp.ex_path);
578 exp.ex_client = dom;
579 exp.cd = cd;
580 exp.ex_devid_map = NULL;
584 exp.h.expiry_time = get_expiry(&mesg);
585 if (exp.h.expiry_time == 0)
592 set_bit(CACHE_NEGATIVE, &exp.h.flags);
596 exp.ex_flags= an_int;
602 exp.ex_anon_uid= make_kuid(current_user_ns(), an_int);
608 exp.ex_anon_gid= make_kgid(current_user_ns(), an_int);
614 exp.ex_fsid = an_int;
618 err = fsloc_parse(&mesg, buf, &exp.ex_fslocs);
620 err = nfsd_uuid_parse(&mesg, buf, &exp.ex_uuid);
622 err = secinfo_parse(&mesg, buf, &exp);
633 err = check_export(d_inode(exp.ex_path.dentry), &exp.ex_flags,
634 exp.ex_uuid);
642 if (exp.h.expiry_time < seconds_since_boot())
652 if (!uid_valid(exp.ex_anon_uid))
654 if (!gid_valid(exp.ex_anon_gid))
658 nfsd4_setup_layout_type(&exp);
661 expp = svc_export_lookup(&exp);
666 expp = svc_export_update(&exp, expp);
674 nfsd4_fslocs_free(&exp.ex_fslocs);
675 kfree(exp.ex_uuid);
677 path_put(&exp.ex_path);
687 static void show_secinfo(struct seq_file *m, struct svc_export *exp);
693 struct svc_export *exp ;
699 exp = container_of(h, struct svc_export, h);
700 seq_path(m, &exp->ex_path, " \t\n\\");
702 seq_escape(m, exp->ex_client->name, " \t\n\\");
706 exp_flags(m, exp->ex_flags, exp->ex_fsid,
707 exp->ex_anon_uid, exp->ex_anon_gid, &exp->ex_fslocs);
708 if (exp->ex_uuid) {
714 seq_printf(m, "%02x", exp->ex_uuid[i]);
717 show_secinfo(m, exp);
799 svc_export_hash(struct svc_export *exp)
803 hash = hash_ptr(exp->ex_client, EXPORT_HASHBITS);
804 hash ^= hash_ptr(exp->ex_path.dentry, EXPORT_HASHBITS);
805 hash ^= hash_ptr(exp->ex_path.mnt, EXPORT_HASHBITS);
810 svc_export_lookup(struct svc_export *exp)
813 int hash = svc_export_hash(exp);
815 ch = sunrpc_cache_lookup_rcu(exp->cd, &exp->h, hash);
865 struct svc_export *exp, key;
875 exp = svc_export_lookup(&key);
876 if (exp == NULL)
878 err = cache_check(cd, &exp->h, reqp);
883 return exp;
893 struct svc_export *exp = exp_get_by_name(cd, clp, path, NULL);
895 while (PTR_ERR(exp) == -ENOENT && !IS_ROOT(path->dentry)) {
899 exp = exp_get_by_name(cd, clp, path, NULL);
903 return exp;
917 struct svc_export *exp;
936 exp = exp_parent(cd, clp, &path);
937 if (IS_ERR(exp)) {
938 err = PTR_ERR(exp);
946 if (fh_compose(&fh, exp, path.dentry, NULL))
952 exp_put(exp);
962 struct svc_export *exp;
968 exp = exp_get_by_name(cd, clp, &ek->ek_path, reqp);
971 if (IS_ERR(exp))
972 return ERR_CAST(exp);
973 return exp;
976 __be32 check_nfsd_access(struct svc_export *exp, struct svc_rqst *rqstp)
979 struct exp_flavor_info *end = exp->ex_flavors + exp->ex_nflavors;
982 if (exp->ex_client == rqstp->rq_gssclient)
985 for (f = exp->ex_flavors; f < end; f++) {
990 if (exp->ex_nflavors == 0) {
1020 struct svc_export *gssexp, *exp = ERR_PTR(-ENOENT);
1028 exp = exp_get_by_name(cd, rqstp->rq_client, path, &rqstp->rq_chandle);
1029 if (PTR_ERR(exp) == -ENOENT)
1031 if (IS_ERR(exp))
1032 return exp;
1034 if (exp->ex_nflavors > 0)
1035 return exp;
1039 return exp;
1042 return exp;
1043 if (!IS_ERR(exp))
1044 exp_put(exp);
1051 struct svc_export *gssexp, *exp = ERR_PTR(-ENOENT);
1059 exp = exp_find(cd, rqstp->rq_client, fsid_type,
1061 if (PTR_ERR(exp) == -ENOENT)
1063 if (IS_ERR(exp))
1064 return exp;
1066 if (exp->ex_nflavors > 0)
1067 return exp;
1071 return exp;
1075 return exp;
1076 if (!IS_ERR(exp))
1077 exp_put(exp);
1085 struct svc_export *exp = rqst_exp_get_by_name(rqstp, path);
1087 while (PTR_ERR(exp) == -ENOENT && !IS_ROOT(path->dentry)) {
1091 exp = rqst_exp_get_by_name(rqstp, path);
1095 return exp;
1115 struct svc_export *exp;
1118 exp = rqst_find_fsidzero_export(rqstp);
1119 if (IS_ERR(exp))
1120 return nfserrno(PTR_ERR(exp));
1121 rv = fh_compose(fhp, exp, exp->ex_path.dentry, NULL);
1122 exp_put(exp);
1188 static void show_secinfo(struct seq_file *m, struct svc_export *exp)
1191 struct exp_flavor_info *end = exp->ex_flavors + exp->ex_nflavors;
1194 if (exp->ex_nflavors == 0)
1196 f = exp->ex_flavors;
1198 if (!secinfo_flags_equal(flags, exp->ex_flags))
1240 struct svc_export *exp = container_of(cp, struct svc_export, h);
1249 exp_get(exp);
1250 if (cache_check(cd, &exp->h, NULL))
1252 exp_put(exp);