Lines Matching defs:rqstp

122 nfsd_cross_mnt(struct svc_rqst *rqstp, struct dentry **dpp, 
145 exp2 = rqst_exp_get_by_name(rqstp, &path);
160 if (nfsd_v4client(rqstp) ||
191 static int nfsd_lookup_parent(struct svc_rqst *rqstp, struct dentry *dparent, struct svc_export **exp, struct dentry **dentryp)
199 exp2 = rqst_exp_parent(rqstp, &path);
240 nfsd_lookup_dentry(struct svc_rqst *rqstp, struct svc_fh *fhp,
260 else if (!EX_NOHIDE(exp) && !nfsd_v4client(rqstp))
264 host_err = nfsd_lookup_parent(rqstp, dparent, &exp, &dentry);
274 host_err = nfsd_cross_mnt(rqstp, &dentry, &exp);
293 * @rqstp: the request context
311 nfsd_lookup(struct svc_rqst *rqstp, struct svc_fh *fhp, const char *name,
318 err = fh_verify(rqstp, fhp, S_IFDIR, NFSD_MAY_EXEC);
321 err = nfsd_lookup_dentry(rqstp, fhp, name, len, &exp, &dentry);
324 err = check_nfsd_access(exp, rqstp);
399 nfsd_get_write_access(struct svc_rqst *rqstp, struct svc_fh *fhp,
407 err = nfsd_permission(rqstp, fhp->fh_export, fhp->fh_dentry,
458 * @rqstp: controlling RPC transaction
472 nfsd_setattr(struct svc_rqst *rqstp, struct svc_fh *fhp,
509 err = fh_verify(rqstp, fhp, ftype, accmode);
534 err = nfsd_get_write_access(rqstp, fhp, iap);
552 if (!nfsd_wait_for_delegreturn(rqstp, inode))
606 static struct nfsd4_compound_state *nfsd4_get_cstate(struct svc_rqst *rqstp)
608 return &((struct nfsd4_compoundres *)rqstp->rq_resp)->cstate;
611 __be32 nfsd4_clone_file_range(struct svc_rqst *rqstp,
644 trace_nfsd_clone_file_range_err(rqstp,
645 &nfsd4_get_cstate(rqstp)->save_fh,
647 &nfsd4_get_cstate(rqstp)->current_fh,
651 trace_nfsd_writeverf_reset(nn, rqstp, status);
681 __be32 nfsd4_vfs_fallocate(struct svc_rqst *rqstp, struct svc_fh *fhp,
753 nfsd_access(struct svc_rqst *rqstp, struct svc_fh *fhp, u32 *access, u32 *supported)
761 error = fh_verify(rqstp, fhp, 0, NFSD_MAY_NOP);
783 err2 = nfsd_permission(rqstp, export, dentry, map->how);
827 __nfsd_open(struct svc_rqst *rqstp, struct svc_fh *fhp, umode_t type,
880 nfsd_open(struct svc_rqst *rqstp, struct svc_fh *fhp, umode_t type,
901 err = fh_verify(rqstp, fhp, type, may_flags);
903 host_err = __nfsd_open(rqstp, fhp, type, may_flags, filp);
916 * @rqstp: RPC request
924 nfsd_open_verified(struct svc_rqst *rqstp, struct svc_fh *fhp, int may_flags,
927 return __nfsd_open(rqstp, fhp, S_IFREG, may_flags, filp);
936 * remaining pages in rqstp->rq_pages.
942 struct svc_rqst *rqstp = sd->u.data;
954 if (page == *(rqstp->rq_next_page - 1) &&
955 offset_in_page(rqstp->rq_res.page_base +
956 rqstp->rq_res.page_len))
958 if (unlikely(!svc_rqst_replace_page(rqstp, page)))
961 if (rqstp->rq_res.page_len == 0) // first call
962 rqstp->rq_res.page_base = offset % PAGE_SIZE;
963 rqstp->rq_res.page_len += sd->len;
983 static __be32 nfsd_finish_read(struct svc_rqst *rqstp, struct svc_fh *fhp,
992 trace_nfsd_read_io_done(rqstp, fhp, offset, *count);
995 trace_nfsd_read_err(rqstp, fhp, offset, host_err);
1002 * @rqstp: RPC transaction context
1012 __be32 nfsd_splice_read(struct svc_rqst *rqstp, struct svc_fh *fhp,
1020 .u.data = rqstp,
1024 trace_nfsd_read_splice(rqstp, fhp, offset, *count);
1026 return nfsd_finish_read(rqstp, fhp, file, offset, count, eof, host_err);
1031 * @rqstp: RPC transaction context
1045 __be32 nfsd_iter_read(struct svc_rqst *rqstp, struct svc_fh *fhp,
1058 page = *(rqstp->rq_next_page++);
1059 rqstp->rq_vec[v].iov_base = page_address(page) + base;
1060 rqstp->rq_vec[v].iov_len = min_t(size_t, total, PAGE_SIZE - base);
1061 total -= rqstp->rq_vec[v].iov_len;
1065 WARN_ON_ONCE(v > ARRAY_SIZE(rqstp->rq_vec));
1067 trace_nfsd_read_vector(rqstp, fhp, offset, *count);
1068 iov_iter_kvec(&iter, ITER_DEST, rqstp->rq_vec, v, *count);
1070 return nfsd_finish_read(rqstp, fhp, file, offset, count, eof, host_err);
1111 nfsd_vfs_write(struct svc_rqst *rqstp, struct svc_fh *fhp, struct nfsd_file *nf,
1116 struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id);
1131 trace_nfsd_write_opened(rqstp, fhp, offset, *cnt);
1136 if (test_bit(RQ_LOCAL, &rqstp->rq_flags) &&
1150 use_wgather = (rqstp->rq_vers == 2) && EX_WGATHER(exp);
1167 trace_nfsd_writeverf_reset(nn, rqstp, host_err);
1181 trace_nfsd_writeverf_reset(nn, rqstp, host_err);
1187 trace_nfsd_write_io_done(rqstp, fhp, offset, *cnt);
1190 trace_nfsd_write_err(rqstp, fhp, offset, host_err);
1200 * @rqstp: RPC transaction context
1206 * The caller must verify that there is enough space in @rqstp.rq_res
1214 __be32 nfsd_read(struct svc_rqst *rqstp, struct svc_fh *fhp,
1221 trace_nfsd_read_start(rqstp, fhp, offset, *count);
1222 err = nfsd_file_acquire_gc(rqstp, fhp, NFSD_MAY_READ, &nf);
1227 if (file->f_op->splice_read && test_bit(RQ_SPLICE_OK, &rqstp->rq_flags))
1228 err = nfsd_splice_read(rqstp, fhp, file, offset, count, eof);
1230 err = nfsd_iter_read(rqstp, fhp, file, offset, count, 0, eof);
1233 trace_nfsd_read_done(rqstp, fhp, offset, *count);
1243 nfsd_write(struct svc_rqst *rqstp, struct svc_fh *fhp, loff_t offset,
1250 trace_nfsd_write_start(rqstp, fhp, offset, *cnt);
1252 err = nfsd_file_acquire_gc(rqstp, fhp, NFSD_MAY_WRITE, &nf);
1256 err = nfsd_vfs_write(rqstp, fhp, nf, offset, vec,
1260 trace_nfsd_write_done(rqstp, fhp, offset, *cnt);
1266 * @rqstp: RPC request being processed
1285 nfsd_commit(struct svc_rqst *rqstp, struct svc_fh *fhp, struct nfsd_file *nf,
1326 trace_nfsd_writeverf_reset(nn, rqstp, err2);
1337 * @rqstp: RPC transaction being executed
1345 nfsd_create_setattr(struct svc_rqst *rqstp, struct svc_fh *fhp,
1369 status = nfsd_setattr(rqstp, resfhp, attrs, 0, (time64_t)0);
1407 nfsd_create_locked(struct svc_rqst *rqstp, struct svc_fh *fhp,
1421 err = nfsd_permission(rqstp, fhp->fh_export, dentry, NFSD_MAY_CREATE);
1480 err = nfsd_create_setattr(rqstp, fhp, resfhp, attrs);
1498 nfsd_create(struct svc_rqst *rqstp, struct svc_fh *fhp,
1509 err = fh_verify(rqstp, fhp, S_IFDIR, NFSD_MAY_NOP);
1537 err = nfsd_create_locked(rqstp, fhp, attrs, type, rdev, resfhp);
1550 nfsd_readlink(struct svc_rqst *rqstp, struct svc_fh *fhp, char *buf, int *lenp)
1558 err = fh_verify(rqstp, fhp, S_IFLNK, NFSD_MAY_NOP);
1584 * @rqstp: RPC transaction being executed
1597 nfsd_symlink(struct svc_rqst *rqstp, struct svc_fh *fhp,
1613 err = fh_verify(rqstp, fhp, S_IFDIR, NFSD_MAY_CREATE);
1638 nfsd_create_setattr(rqstp, fhp, resfhp, attrs);
1657 nfsd_link(struct svc_rqst *rqstp, struct svc_fh *ffhp,
1665 err = fh_verify(rqstp, ffhp, S_IFDIR, NFSD_MAY_CREATE);
1668 err = fh_verify(rqstp, tfhp, 0, NFSD_MAY_NOP);
1713 if (host_err == -EXDEV && rqstp->rq_vers == 2)
1756 nfsd_rename(struct svc_rqst *rqstp, struct svc_fh *ffhp, char *fname, int flen,
1765 err = fh_verify(rqstp, ffhp, S_IFDIR, NFSD_MAY_REMOVE);
1768 err = fh_verify(rqstp, tfhp, S_IFDIR, NFSD_MAY_CREATE);
1782 err = (rqstp->rq_vers == 2) ? nfserr_acces : nfserr_xdev;
1842 if (!nfsd_wait_for_delegreturn(rqstp, d_inode(odentry)))
1887 nfsd_unlink(struct svc_rqst *rqstp, struct svc_fh *fhp, int type,
1899 err = fh_verify(rqstp, fhp, S_IFDIR, NFSD_MAY_REMOVE);
1940 if (!nfsd_wait_for_delegreturn(rqstp, rinode))
1961 if (nfsd_v4client(rqstp))
2097 nfsd_readdir(struct svc_rqst *rqstp, struct svc_fh *fhp, loff_t *offsetp,
2106 if (rqstp->rq_vers > 2)
2109 err = nfsd_open(rqstp, fhp, S_IFDIR, may_flags, &file);
2134 nfsd_statfs(struct svc_rqst *rqstp, struct svc_fh *fhp, struct kstatfs *stat, int access)
2138 err = fh_verify(rqstp, fhp, 0, NFSD_MAY_NOP | access);
2150 static int exp_rdonly(struct svc_rqst *rqstp, struct svc_export *exp)
2152 return nfsexp_flags(rqstp, exp) & NFSEXP_READONLY;
2197 nfsd_getxattr(struct svc_rqst *rqstp, struct svc_fh *fhp, char *name,
2206 err = fh_verify(rqstp, fhp, 0, NFSD_MAY_READ);
2270 nfsd_listxattr(struct svc_rqst *rqstp, struct svc_fh *fhp, char **bufp,
2279 err = fh_verify(rqstp, fhp, 0, NFSD_MAY_READ);
2325 * @rqstp: RPC transaction being executed
2335 nfsd_removexattr(struct svc_rqst *rqstp, struct svc_fh *fhp, char *name)
2340 err = fh_verify(rqstp, fhp, 0, NFSD_MAY_WRITE);
2364 nfsd_setxattr(struct svc_rqst *rqstp, struct svc_fh *fhp, char *name,
2370 err = fh_verify(rqstp, fhp, 0, NFSD_MAY_WRITE);
2396 nfsd_permission(struct svc_rqst *rqstp, struct svc_export *exp,
2428 if (exp_rdonly(rqstp, exp) ||