mirror of
git://git.yoctoproject.org/linux-yocto.git
synced 2025-10-23 07:23:12 +02:00
fuse: Add fuse-io-uring handling into fuse_copy
Add special fuse-io-uring into the fuse argument copy handler. Signed-off-by: Bernd Schubert <bschubert@ddn.com> Reviewed-by: Joanne Koong <joannelkoong@gmail.com> Reviewed-by: Luis Henriques <luis@igalia.com> Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
This commit is contained in:
parent
d0f9c62aaf
commit
f773a7c2c3
|
@ -786,6 +786,9 @@ static int fuse_copy_do(struct fuse_copy_state *cs, void **val, unsigned *size)
|
|||
*size -= ncpy;
|
||||
cs->len -= ncpy;
|
||||
cs->offset += ncpy;
|
||||
if (cs->is_uring)
|
||||
cs->ring.copied_sz += ncpy;
|
||||
|
||||
return ncpy;
|
||||
}
|
||||
|
||||
|
@ -1922,7 +1925,14 @@ static struct fuse_req *request_find(struct fuse_pqueue *fpq, u64 unique)
|
|||
int fuse_copy_out_args(struct fuse_copy_state *cs, struct fuse_args *args,
|
||||
unsigned nbytes)
|
||||
{
|
||||
unsigned reqsize = sizeof(struct fuse_out_header);
|
||||
|
||||
unsigned int reqsize = 0;
|
||||
|
||||
/*
|
||||
* Uring has all headers separated from args - args is payload only
|
||||
*/
|
||||
if (!cs->is_uring)
|
||||
reqsize = sizeof(struct fuse_out_header);
|
||||
|
||||
reqsize += fuse_len_args(args->out_numargs, args->out_args);
|
||||
|
||||
|
|
|
@ -27,6 +27,10 @@ struct fuse_copy_state {
|
|||
unsigned int len;
|
||||
unsigned int offset;
|
||||
unsigned int move_pages:1;
|
||||
unsigned int is_uring:1;
|
||||
struct {
|
||||
unsigned int copied_sz; /* copied size into the user buffer */
|
||||
} ring;
|
||||
};
|
||||
|
||||
static inline struct fuse_dev *fuse_get_dev(struct file *file)
|
||||
|
|
Loading…
Reference in New Issue
Block a user