Lines Matching refs:rqstp

82 check_attr_support(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
104 nfsd4_check_open_attributes(struct svc_rqst *rqstp,
112 status = check_attr_support(rqstp, cstate,
115 status = check_attr_support(rqstp, cstate,
142 do_open_permission(struct svc_rqst *rqstp, struct svc_fh *current_fh, struct nfsd4_open *open, int accmode)
158 return fh_verify(rqstp, current_fh, S_IFREG, accmode);
232 nfsd4_create_file(struct svc_rqst *rqstp, struct svc_fh *fhp,
251 status = fh_verify(rqstp, fhp, S_IFDIR, NFSD_MAY_EXEC);
273 status = fh_verify(rqstp, fhp, S_IFDIR, NFSD_MAY_CREATE);
370 status = nfsd_create_setattr(rqstp, fhp, resfhp, &attrs);
418 do_open_lookup(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, struct nfsd4_open *open, struct svc_fh **resfh)
447 status = nfsd4_create_file(rqstp, current_fh, *resfh, open);
459 status = nfsd_lookup(rqstp, current_fh,
478 status = do_open_permission(rqstp, *resfh, open, accmode);
485 do_open_fhandle(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, struct nfsd4_open *open)
512 return do_open_permission(rqstp, current_fh, open, accmode);
526 nfsd4_open(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
532 struct net *net = SVC_NET(rqstp);
541 open->op_rqstp = rqstp;
567 status = fh_verify(rqstp, &cstate->current_fh, 0, NFSD_MAY_NOP);
581 status = nfsd4_check_open_attributes(rqstp, cstate, open);
597 status = do_open_lookup(rqstp, cstate, open, &resfh);
610 status = do_open_fhandle(rqstp, cstate, open);
624 status = nfsd4_process_open2(rqstp, resfh, open);
651 static __be32 nfsd4_open_omfg(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, struct nfsd4_op *op)
660 return nfsd4_open(rqstp, cstate, &op->u);
667 nfsd4_getfh(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
675 nfsd4_putfh(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
685 ret = fh_verify(rqstp, &cstate->current_fh, 0, NFSD_MAY_BYPASS_GSS);
696 nfsd4_putrootfh(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
701 return exp_pseudoroot(rqstp, &cstate->current_fh);
705 nfsd4_restorefh(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
720 nfsd4_savefh(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
735 nfsd4_access(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
750 return nfsd_access(rqstp, &cstate->current_fh, &access->ac_resp_access,
764 nfsd4_commit(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
771 status = nfsd_file_acquire(rqstp, &cstate->current_fh, NFSD_MAY_WRITE |
776 status = nfsd_commit(rqstp, &cstate->current_fh, nf, commit->co_offset,
784 nfsd4_create(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
798 status = fh_verify(rqstp, &cstate->current_fh, S_IFDIR, NFSD_MAY_NOP);
802 status = check_attr_support(rqstp, cstate, create->cr_bmval,
811 status = nfsd_symlink(rqstp, &cstate->current_fh,
822 status = nfsd_create(rqstp, &cstate->current_fh,
833 status = nfsd_create(rqstp, &cstate->current_fh,
839 status = nfsd_create(rqstp, &cstate->current_fh,
845 status = nfsd_create(rqstp, &cstate->current_fh,
852 status = nfsd_create(rqstp, &cstate->current_fh,
879 nfsd4_getattr(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
885 status = fh_verify(rqstp, &cstate->current_fh, 0, NFSD_MAY_NOP);
901 nfsd4_link(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
907 status = nfsd_link(rqstp, &cstate->current_fh,
914 static __be32 nfsd4_do_lookupp(struct svc_rqst *rqstp, struct svc_fh *fh)
920 ret = exp_pseudoroot(rqstp, &tmp_fh);
928 return nfsd_lookup(rqstp, fh, "..", 2, fh);
932 nfsd4_lookupp(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
935 return nfsd4_do_lookupp(rqstp, &cstate->current_fh);
939 nfsd4_lookup(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
942 return nfsd_lookup(rqstp, &cstate->current_fh,
948 nfsd4_read(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
956 trace_nfsd_read_start(rqstp, &cstate->current_fh,
959 read->rd_length = min_t(u32, read->rd_length, svc_max_payload(rqstp));
973 if (!nfsd4_last_compound_op(rqstp))
974 clear_bit(RQ_SPLICE_OK, &rqstp->rq_flags);
977 status = nfs4_preprocess_stateid_op(rqstp, cstate, &cstate->current_fh,
981 read->rd_rqstp = rqstp;
997 nfsd4_readdir(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
1017 readdir->rd_rqstp = rqstp;
1023 nfsd4_readlink(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
1026 u->readlink.rl_rqstp = rqstp;
1032 nfsd4_remove(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
1038 if (opens_in_grace(SVC_NET(rqstp)))
1040 status = nfsd_unlink(rqstp, &cstate->current_fh, 0,
1048 nfsd4_rename(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
1054 if (opens_in_grace(SVC_NET(rqstp)))
1056 status = nfsd_rename(rqstp, &cstate->save_fh, rename->rn_sname,
1067 nfsd4_secinfo(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
1075 err = fh_verify(rqstp, &cstate->current_fh, S_IFDIR, NFSD_MAY_EXEC);
1078 err = nfsd_lookup_dentry(rqstp, &cstate->current_fh,
1096 nfsd4_secinfo_no_name(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
1105 err = nfsd4_do_lookupp(rqstp, &cstate->current_fh);
1133 nfsd4_setattr(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
1146 status = nfs4_preprocess_stateid_op(rqstp, cstate,
1157 status = check_attr_support(rqstp, cstate, setattr->sa_bmval,
1168 status = nfsd_setattr(rqstp, &cstate->current_fh, &attrs,
1181 nfsd4_write(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
1196 trace_nfsd_write_start(rqstp, &cstate->current_fh,
1198 status = nfs4_preprocess_stateid_op(rqstp, cstate, &cstate->current_fh,
1205 nvecs = svc_fill_write_vector(rqstp, &write->wr_payload);
1206 WARN_ON_ONCE(nvecs > ARRAY_SIZE(rqstp->rq_vec));
1208 status = nfsd_vfs_write(rqstp, &cstate->current_fh, nf,
1209 write->wr_offset, rqstp->rq_vec, nvecs, &cnt,
1215 trace_nfsd_write_done(rqstp, &cstate->current_fh,
1221 nfsd4_verify_copy(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
1230 status = nfs4_preprocess_stateid_op(rqstp, cstate, &cstate->save_fh,
1235 status = nfs4_preprocess_stateid_op(rqstp, cstate, &cstate->current_fh,
1259 nfsd4_clone(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
1266 status = nfsd4_verify_copy(rqstp, cstate, &clone->cl_src_stateid, &src,
1271 status = nfsd4_clone_file_range(rqstp, src, clone->cl_src_pos,
1408 nfsd4_interssc_connect(struct nl4_server *nss, struct svc_rqst *rqstp,
1420 struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id);
1423 tmp_addrlen = rpc_uaddr2sockaddr(SVC_NET(rqstp), naddr->addr,
1508 nfsd4_setup_inter_ssc(struct svc_rqst *rqstp,
1517 status = nfs4_preprocess_stateid_op(rqstp, cstate, &cstate->current_fh,
1523 status = nfsd4_interssc_connect(copy->cp_src, rqstp, &copy->ss_nsui);
1566 nfsd4_setup_inter_ssc(struct svc_rqst *rqstp,
1588 nfsd4_setup_intra_ssc(struct svc_rqst *rqstp,
1592 return nfsd4_verify_copy(rqstp, cstate, &copy->cp_src_stateid,
1794 nfsd4_copy(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
1806 status = nfsd4_setup_inter_ssc(rqstp, cstate, copy);
1810 status = nfsd4_setup_intra_ssc(rqstp, cstate, copy);
1819 struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id);
1896 nfsd4_offload_cancel(struct svc_rqst *rqstp,
1906 struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id);
1916 nfsd4_copy_notify(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
1921 struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id);
1926 status = nfs4_preprocess_stateid_op(rqstp, cstate, &cstate->current_fh,
1947 status = nfsd4_set_netaddr((struct sockaddr *)&rqstp->rq_daddr,
1960 nfsd4_fallocate(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
1966 status = nfs4_preprocess_stateid_op(rqstp, cstate, &cstate->current_fh,
1972 status = nfsd4_vfs_fallocate(rqstp, &cstate->current_fh, nf->nf_file,
1981 nfsd4_offload_status(struct svc_rqst *rqstp,
2002 nfsd4_allocate(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
2005 return nfsd4_fallocate(rqstp, cstate, &u->allocate, 0);
2009 nfsd4_deallocate(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
2012 return nfsd4_fallocate(rqstp, cstate, &u->deallocate,
2017 nfsd4_seek(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
2025 status = nfs4_preprocess_stateid_op(rqstp, cstate, &cstate->current_fh,
2064 _nfsd4_verify(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
2071 status = fh_verify(rqstp, &cstate->current_fh, 0, NFSD_MAY_NOP);
2075 status = check_attr_support(rqstp, cstate, verify->ve_bmval, NULL);
2098 rqstp, 0);
2122 nfsd4_nverify(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
2127 status = _nfsd4_verify(rqstp, cstate, &u->verify);
2132 nfsd4_verify(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
2137 status = _nfsd4_verify(rqstp, cstate, &u->nverify);
2161 nfsd4_getdeviceinfo(struct svc_rqst *rqstp,
2183 exp = rqst_exp_find(rqstp, map->fsid_type, map->fsid);
2197 rqstp, cstate->clp, gdp);
2213 nfsd4_layoutget(struct svc_rqst *rqstp,
2237 nfserr = fh_verify(rqstp, current_fh, 0, accmode);
2267 nfserr = nfsd4_preprocess_layout_stateid(rqstp, cstate, &lgp->lg_sid,
2299 nfsd4_layoutcommit(struct svc_rqst *rqstp,
2311 nfserr = fh_verify(rqstp, current_fh, 0, NFSD_MAY_WRITE);
2335 nfserr = nfsd4_preprocess_layout_stateid(rqstp, cstate, &lcp->lc_sid,
2363 nfsd4_layoutreturn(struct svc_rqst *rqstp,
2370 nfserr = fh_verify(rqstp, current_fh, 0, NFSD_MAY_NOP);
2392 nfserr = nfsd4_return_file_layouts(rqstp, cstate, lrp);
2396 nfserr = nfsd4_return_client_layouts(rqstp, cstate, lrp);
2410 nfsd4_getxattr(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
2415 return nfsd_getxattr(rqstp, &cstate->current_fh,
2421 nfsd4_setxattr(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
2427 if (opens_in_grace(SVC_NET(rqstp)))
2430 ret = nfsd_setxattr(rqstp, &cstate->current_fh, setxattr->setxa_name,
2441 nfsd4_listxattrs(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
2448 return nfsd_listxattr(rqstp, &cstate->current_fh,
2453 nfsd4_removexattr(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
2459 if (opens_in_grace(SVC_NET(rqstp)))
2462 ret = nfsd_removexattr(rqstp, &cstate->current_fh,
2475 nfsd4_proc_null(struct svc_rqst *rqstp)
2540 static bool need_wrongsec_check(struct svc_rqst *rqstp)
2542 struct nfsd4_compoundres *resp = rqstp->rq_resp;
2543 struct nfsd4_compoundargs *argp = rqstp->rq_argp;
2616 nfsd4_proc_compound(struct svc_rqst *rqstp)
2618 struct nfsd4_compoundargs *args = rqstp->rq_argp;
2619 struct nfsd4_compoundres *resp = rqstp->rq_resp;
2624 struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id);
2627 resp->xdr = &rqstp->rq_res_stream;
2637 resp->rqstp = rqstp;
2645 clear_bit(RQ_USEDEFERRAL, &rqstp->rq_flags);
2663 rqstp->rq_lease_breaker = (void **)&cstate->clp;
2665 trace_nfsd_compound(rqstp, args->tag, args->taglen, args->client_opcnt);
2686 op->status = nfsd4_open_omfg(rqstp, cstate, op);
2710 u32 plen = op->opdesc->op_rsize_bop(rqstp, op);
2725 op->status = op->opdesc->op_func(rqstp, cstate, &op->u);
2741 need_wrongsec_check(rqstp))
2742 op->status = check_nfsd_access(current_fh->fh_export, rqstp);
2767 set_bit(RQ_USEDEFERRAL, &rqstp->rq_flags);
2795 static u32 nfsd4_max_payload(const struct svc_rqst *rqstp)
2799 buflen = (rqstp->rq_page_end - rqstp->rq_next_page) * PAGE_SIZE;
2800 buflen -= rqstp->rq_auth_slack;
2801 buflen -= rqstp->rq_res.head[0].iov_len;
2802 return min_t(u32, buflen, svc_max_payload(rqstp));
2805 static u32 nfsd4_only_status_rsize(const struct svc_rqst *rqstp,
2811 static u32 nfsd4_status_stateid_rsize(const struct svc_rqst *rqstp,
2817 static u32 nfsd4_access_rsize(const struct svc_rqst *rqstp,
2824 static u32 nfsd4_commit_rsize(const struct svc_rqst *rqstp,
2830 static u32 nfsd4_create_rsize(const struct svc_rqst *rqstp,
2842 static u32 nfsd4_getattr_rsize(const struct svc_rqst *rqstp,
2850 return nfsd4_max_payload(rqstp);
2852 return nfsd4_max_payload(rqstp);
2880 static u32 nfsd4_getfh_rsize(const struct svc_rqst *rqstp,
2886 static u32 nfsd4_link_rsize(const struct svc_rqst *rqstp,
2893 static u32 nfsd4_lock_rsize(const struct svc_rqst *rqstp,
2900 static u32 nfsd4_open_rsize(const struct svc_rqst *rqstp,
2909 static u32 nfsd4_read_rsize(const struct svc_rqst *rqstp,
2912 u32 rlen = min(op->u.read.rd_length, nfsd4_max_payload(rqstp));
2917 static u32 nfsd4_read_plus_rsize(const struct svc_rqst *rqstp,
2920 u32 rlen = min(op->u.read.rd_length, nfsd4_max_payload(rqstp));
2931 static u32 nfsd4_readdir_rsize(const struct svc_rqst *rqstp,
2934 u32 rlen = min(op->u.readdir.rd_maxcount, nfsd4_max_payload(rqstp));
2940 static u32 nfsd4_readlink_rsize(const struct svc_rqst *rqstp,
2946 static u32 nfsd4_remove_rsize(const struct svc_rqst *rqstp,
2953 static u32 nfsd4_rename_rsize(const struct svc_rqst *rqstp,
2960 static u32 nfsd4_sequence_rsize(const struct svc_rqst *rqstp,
2967 static u32 nfsd4_test_stateid_rsize(const struct svc_rqst *rqstp,
2974 static u32 nfsd4_setattr_rsize(const struct svc_rqst *rqstp,
2980 static u32 nfsd4_secinfo_rsize(const struct svc_rqst *rqstp,
2987 static u32 nfsd4_setclientid_rsize(const struct svc_rqst *rqstp,
2994 static u32 nfsd4_write_rsize(const struct svc_rqst *rqstp,
3000 static u32 nfsd4_exchange_id_rsize(const struct svc_rqst *rqstp,
3015 static u32 nfsd4_bind_conn_to_session_rsize(const struct svc_rqst *rqstp,
3023 static u32 nfsd4_create_session_rsize(const struct svc_rqst *rqstp,
3033 static u32 nfsd4_copy_rsize(const struct svc_rqst *rqstp,
3046 static u32 nfsd4_offload_status_rsize(const struct svc_rqst *rqstp,
3054 static u32 nfsd4_copy_notify_rsize(const struct svc_rqst *rqstp,
3070 static u32 nfsd4_getdeviceinfo_rsize(const struct svc_rqst *rqstp,
3073 u32 rlen = min(op->u.getdeviceinfo.gd_maxcount, nfsd4_max_payload(rqstp));
3086 static u32 nfsd4_layoutget_rsize(const struct svc_rqst *rqstp,
3096 static u32 nfsd4_layoutcommit_rsize(const struct svc_rqst *rqstp,
3104 static u32 nfsd4_layoutreturn_rsize(const struct svc_rqst *rqstp,
3114 static u32 nfsd4_seek_rsize(const struct svc_rqst *rqstp,
3120 static u32 nfsd4_getxattr_rsize(const struct svc_rqst *rqstp,
3123 u32 rlen = min_t(u32, XATTR_SIZE_MAX, nfsd4_max_payload(rqstp));
3128 static u32 nfsd4_setxattr_rsize(const struct svc_rqst *rqstp,
3134 static u32 nfsd4_listxattrs_rsize(const struct svc_rqst *rqstp,
3137 u32 rlen = min(op->u.listxattrs.lsxa_maxcount, nfsd4_max_payload(rqstp));
3142 static u32 nfsd4_removexattr_rsize(const struct svc_rqst *rqstp,
3566 * @rqstp: a pointer to the struct svc_rqst
3572 bool nfsd4_spo_must_allow(struct svc_rqst *rqstp)
3574 struct nfsd4_compoundres *resp = rqstp->rq_resp;
3575 struct nfsd4_compoundargs *argp = rqstp->rq_argp;
3592 nfsd4_mach_creds_match(cstate->clp, rqstp)) {
3601 int nfsd4_max_reply(struct svc_rqst *rqstp, struct nfsd4_op *op)
3607 return OPDESC(op)->op_rsize_bop(rqstp, op);