diff options
| author | Mark Harmstone <[email protected]> | 2024-10-22 14:50:17 +0000 |
|---|---|---|
| committer | David Sterba <[email protected]> | 2024-11-11 13:34:21 +0000 |
| commit | 26efd44796c6dd7a64f039a0dda6d558eac97a3e (patch) | |
| tree | 12b0028c44bcd2fcaeeff96eb9ae4753aa45ecf4 /fs/btrfs/btrfs_inode.h | |
| parent | btrfs: remove pointless iocb::ki_pos addition in btrfs_encoded_read() (diff) | |
| download | kernel-26efd44796c6dd7a64f039a0dda6d558eac97a3e.tar.gz kernel-26efd44796c6dd7a64f039a0dda6d558eac97a3e.zip | |
btrfs: change btrfs_encoded_read() so that reading of extent is done by caller
Change the behaviour of btrfs_encoded_read() so that if it needs to read
an extent from disk, it leaves the extent and inode locked and returns
-EIOCBQUEUED. The caller is then responsible for doing the I/O via
btrfs_encoded_read_regular() and unlocking the extent and inode.
Signed-off-by: Mark Harmstone <[email protected]>
Reviewed-by: David Sterba <[email protected]>
Signed-off-by: David Sterba <[email protected]>
Diffstat (limited to 'fs/btrfs/btrfs_inode.h')
| -rw-r--r-- | fs/btrfs/btrfs_inode.h | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/fs/btrfs/btrfs_inode.h b/fs/btrfs/btrfs_inode.h index 157fd3f4cb33..2817f0cc692b 100644 --- a/fs/btrfs/btrfs_inode.h +++ b/fs/btrfs/btrfs_inode.h @@ -615,7 +615,14 @@ int btrfs_encoded_read_regular_fill_pages(struct btrfs_inode *inode, u64 disk_bytenr, u64 disk_io_size, struct page **pages); ssize_t btrfs_encoded_read(struct kiocb *iocb, struct iov_iter *iter, - struct btrfs_ioctl_encoded_io_args *encoded); + struct btrfs_ioctl_encoded_io_args *encoded, + struct extent_state **cached_state, + u64 *disk_bytenr, u64 *disk_io_size); +ssize_t btrfs_encoded_read_regular(struct kiocb *iocb, struct iov_iter *iter, + u64 start, u64 lockend, + struct extent_state **cached_state, + u64 disk_bytenr, u64 disk_io_size, + size_t count, bool compressed, bool *unlocked); ssize_t btrfs_do_encoded_write(struct kiocb *iocb, struct iov_iter *from, const struct btrfs_ioctl_encoded_io_args *encoded); |
