Skip to content

Commit 36e8c62

Browse files
Christoph Hellwigkdave
authored andcommitted
btrfs: add a btrfs_dio_rw wrapper
Add a wrapper around iomap_dio_rw that keeps the direct I/O internals isolated in inode.c. Reviewed-by: Nikolay Borisov <[email protected]> Signed-off-by: Christoph Hellwig <[email protected]> Reviewed-by: David Sterba <[email protected]> Signed-off-by: David Sterba <[email protected]>
1 parent 74e91b1 commit 36e8c62

File tree

3 files changed

+12
-8
lines changed

3 files changed

+12
-8
lines changed

fs/btrfs/ctree.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3359,9 +3359,9 @@ ssize_t btrfs_encoded_read(struct kiocb *iocb, struct iov_iter *iter,
33593359
ssize_t btrfs_do_encoded_write(struct kiocb *iocb, struct iov_iter *from,
33603360
const struct btrfs_ioctl_encoded_io_args *encoded);
33613361

3362+
ssize_t btrfs_dio_rw(struct kiocb *iocb, struct iov_iter *iter, size_t done_before);
3363+
33623364
extern const struct dentry_operations btrfs_dentry_operations;
3363-
extern const struct iomap_ops btrfs_dio_iomap_ops;
3364-
extern const struct iomap_dio_ops btrfs_dio_ops;
33653365

33663366
/* Inode locking type flags, by default the exclusive lock is taken */
33673367
#define BTRFS_ILOCK_SHARED (1U << 0)

fs/btrfs/file.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1929,8 +1929,7 @@ static ssize_t btrfs_direct_write(struct kiocb *iocb, struct iov_iter *from)
19291929
*/
19301930
again:
19311931
from->nofault = true;
1932-
err = iomap_dio_rw(iocb, from, &btrfs_dio_iomap_ops, &btrfs_dio_ops,
1933-
IOMAP_DIO_PARTIAL, written);
1932+
err = btrfs_dio_rw(iocb, from, written);
19341933
from->nofault = false;
19351934

19361935
/* No increment (+=) because iomap returns a cumulative value. */
@@ -3693,8 +3692,7 @@ static ssize_t btrfs_direct_read(struct kiocb *iocb, struct iov_iter *to)
36933692
*/
36943693
pagefault_disable();
36953694
to->nofault = true;
3696-
ret = iomap_dio_rw(iocb, to, &btrfs_dio_iomap_ops, &btrfs_dio_ops,
3697-
IOMAP_DIO_PARTIAL, read);
3695+
ret = btrfs_dio_rw(iocb, to, read);
36983696
to->nofault = false;
36993697
pagefault_enable();
37003698

fs/btrfs/inode.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8155,15 +8155,21 @@ static void btrfs_submit_direct(const struct iomap_iter *iter,
81558155
btrfs_dio_private_put(dip);
81568156
}
81578157

8158-
const struct iomap_ops btrfs_dio_iomap_ops = {
8158+
static const struct iomap_ops btrfs_dio_iomap_ops = {
81598159
.iomap_begin = btrfs_dio_iomap_begin,
81608160
.iomap_end = btrfs_dio_iomap_end,
81618161
};
81628162

8163-
const struct iomap_dio_ops btrfs_dio_ops = {
8163+
static const struct iomap_dio_ops btrfs_dio_ops = {
81648164
.submit_io = btrfs_submit_direct,
81658165
};
81668166

8167+
ssize_t btrfs_dio_rw(struct kiocb *iocb, struct iov_iter *iter, size_t done_before)
8168+
{
8169+
return iomap_dio_rw(iocb, iter, &btrfs_dio_iomap_ops, &btrfs_dio_ops,
8170+
IOMAP_DIO_PARTIAL, done_before);
8171+
}
8172+
81678173
static int btrfs_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,
81688174
u64 start, u64 len)
81698175
{

0 commit comments

Comments
 (0)