mirror of
https://github.com/torvalds/linux.git
synced 2026-07-28 10:09:10 +02:00
fuse-uring: use named constants for io-uring iovec indices
Replace magic indices 0 and 1 for the iovec array with named constants FUSE_URING_IOV_HEADERS and FUSE_URING_IOV_PAYLOAD. This makes the usages self-documenting and prepares for buffer ring support which will also reference these iovec slots by index. Reviewed-by: Bernd Schubert <bernd@bsbernd.com> Reviewed-by: Jeff Layton <jlayton@kernel.org> Reviewed-by: Baokun Li <libaokun@linux.alibaba.com> Signed-off-by: Joanne Koong <joannelkoong@gmail.com> Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
This commit is contained in:
parent
c0f9203732
commit
8bbb2ad1f6
|
|
@ -18,7 +18,8 @@ MODULE_PARM_DESC(enable_uring,
|
|||
"Enable userspace communication through io-uring");
|
||||
|
||||
#define FUSE_URING_IOV_SEGS 2 /* header and payload */
|
||||
|
||||
#define FUSE_URING_IOV_HEADERS 0
|
||||
#define FUSE_URING_IOV_PAYLOAD 1
|
||||
|
||||
bool fuse_uring_enabled(void)
|
||||
{
|
||||
|
|
@ -1094,8 +1095,8 @@ static int fuse_uring_do_register(struct fuse_ring_ent *ent,
|
|||
}
|
||||
|
||||
/*
|
||||
* sqe->addr is a ptr to an iovec array, iov[0] has the headers, iov[1]
|
||||
* the payload
|
||||
* sqe->addr is a ptr to an iovec array, iov[FUSE_URING_IOV_HEADERS] has the
|
||||
* headers, iov[FUSE_URING_IOV_PAYLOAD] the payload
|
||||
*/
|
||||
static int fuse_uring_get_iovec_from_sqe(const struct io_uring_sqe *sqe,
|
||||
struct iovec iov[FUSE_URING_IOV_SEGS])
|
||||
|
|
@ -1125,8 +1126,8 @@ fuse_uring_create_ring_ent(struct io_uring_cmd *cmd,
|
|||
{
|
||||
struct fuse_ring *ring = queue->ring;
|
||||
struct fuse_ring_ent *ent;
|
||||
size_t payload_size;
|
||||
struct iovec iov[FUSE_URING_IOV_SEGS];
|
||||
struct iovec *headers, *payload;
|
||||
int err;
|
||||
|
||||
err = fuse_uring_get_iovec_from_sqe(cmd->sqe, iov);
|
||||
|
|
@ -1137,15 +1138,16 @@ fuse_uring_create_ring_ent(struct io_uring_cmd *cmd,
|
|||
}
|
||||
|
||||
err = -EINVAL;
|
||||
if (iov[0].iov_len < sizeof(struct fuse_uring_req_header)) {
|
||||
pr_info_ratelimited("Invalid header len %zu\n", iov[0].iov_len);
|
||||
headers = &iov[FUSE_URING_IOV_HEADERS];
|
||||
if (headers->iov_len < sizeof(struct fuse_uring_req_header)) {
|
||||
pr_info_ratelimited("Invalid header len %zu\n", headers->iov_len);
|
||||
return ERR_PTR(err);
|
||||
}
|
||||
|
||||
payload_size = iov[1].iov_len;
|
||||
if (payload_size < ring->max_payload_sz) {
|
||||
payload = &iov[FUSE_URING_IOV_PAYLOAD];
|
||||
if (payload->iov_len < ring->max_payload_sz) {
|
||||
pr_info_ratelimited("Invalid req payload len %zu\n",
|
||||
payload_size);
|
||||
payload->iov_len);
|
||||
return ERR_PTR(err);
|
||||
}
|
||||
|
||||
|
|
@ -1157,8 +1159,8 @@ fuse_uring_create_ring_ent(struct io_uring_cmd *cmd,
|
|||
INIT_LIST_HEAD(&ent->list);
|
||||
|
||||
ent->queue = queue;
|
||||
ent->headers = iov[0].iov_base;
|
||||
ent->payload = iov[1].iov_base;
|
||||
ent->headers = headers->iov_base;
|
||||
ent->payload = payload->iov_base;
|
||||
|
||||
atomic_inc(&ring->queue_refs);
|
||||
return ent;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user