On Fri, Aug 23, 2024 at 05:27:44PM +0100, Mark Harmstone wrote: > Move the various stack variables needed for encoded reads into struct > btrfs_encoded_read_private, so that we can split it into several > functions. > > Signed-off-by: Mark Harmstone <maharmstone@xxxxxx> > --- > fs/btrfs/btrfs_inode.h | 20 ++++- > fs/btrfs/inode.c | 170 +++++++++++++++++++++-------------------- > fs/btrfs/ioctl.c | 60 ++++++++------- > 3 files changed, 135 insertions(+), 115 deletions(-) > > diff --git a/fs/btrfs/btrfs_inode.h b/fs/btrfs/btrfs_inode.h > index affe70929234..5cd4308bd337 100644 > --- a/fs/btrfs/btrfs_inode.h > +++ b/fs/btrfs/btrfs_inode.h > @@ -605,9 +605,23 @@ int btrfs_encoded_read_regular_fill_pages(struct btrfs_inode *inode, > u64 file_offset, u64 disk_bytenr, > u64 disk_io_size, > struct page **pages); > -ssize_t btrfs_encoded_read(struct file *file, loff_t offset, > - struct iov_iter *iter, > - struct btrfs_ioctl_encoded_io_args *encoded); > + > +struct btrfs_encoded_read_private { > + wait_queue_head_t wait; > + atomic_t pending; > + blk_status_t status; > + unsigned long nr_pages; > + struct page **pages; > + struct extent_state *cached_state; > + size_t count; > + struct iovec iovstack[UIO_FASTIOV]; > + struct iovec *iov; > + struct iov_iter iter; > + struct btrfs_ioctl_encoded_io_args args; > + struct file *file; > +}; > + > +ssize_t btrfs_encoded_read(struct btrfs_encoded_read_private *priv); > ssize_t btrfs_do_encoded_write(struct kiocb *iocb, struct iov_iter *from, > const struct btrfs_ioctl_encoded_io_args *encoded); > > diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c > index a0cc029d95ed..c1292e58366a 100644 > --- a/fs/btrfs/inode.c > +++ b/fs/btrfs/inode.c > @@ -9078,12 +9078,6 @@ static ssize_t btrfs_encoded_read_inline( > return ret; > } > > -struct btrfs_encoded_read_private { > - wait_queue_head_t wait; > - atomic_t pending; > - blk_status_t status; > -}; > - > static void btrfs_encoded_read_endio(struct btrfs_bio *bbio) > { > struct btrfs_encoded_read_private *priv = bbio->private; > @@ -9104,33 +9098,31 @@ static void btrfs_encoded_read_endio(struct btrfs_bio *bbio) > bio_put(&bbio->bio); > } > > -int btrfs_encoded_read_regular_fill_pages(struct btrfs_inode *inode, > - u64 file_offset, u64 disk_bytenr, > - u64 disk_io_size, struct page **pages) > +static void _btrfs_encoded_read_regular_fill_pages(struct btrfs_inode *inode, Please don't use underscores in function names https://btrfs.readthedocs.io/en/latest/dev/Development-notes.html#function-declarations