diff options
author | David Sterba <dsterba@suse.com> | 2018-11-22 17:16:49 +0100 |
---|---|---|
committer | David Sterba <dsterba@suse.com> | 2018-12-17 14:51:40 +0100 |
commit | b3a0dd50c3951ec1b9a12ec39034194022fd8693 (patch) | |
tree | 10898fe39a7737103169898b38a753db0b92aded /fs/btrfs/inode.c | |
parent | 31fecccbd7b2174487a6b7361153b60a4eda6108 (diff) | |
download | lwn-b3a0dd50c3951ec1b9a12ec39034194022fd8693.tar.gz lwn-b3a0dd50c3951ec1b9a12ec39034194022fd8693.zip |
btrfs: replace btrfs_io_bio::end_io with a simple helper
The end_io callback implemented as btrfs_io_bio_endio_readpage only
calls kfree. Also the callback is set only in case the csum buffer is
allocated and not pointing to the inline buffer. We can use that
information to drop the indirection and call a helper that will free the
csums only in the right case.
This shrinks struct btrfs_io_bio by 8 bytes.
Reviewed-by: Nikolay Borisov <nborisov@suse.com>
Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'fs/btrfs/inode.c')
-rw-r--r-- | fs/btrfs/inode.c | 7 |
1 files changed, 2 insertions, 5 deletions
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index 26b8bec7c2dc..6bfd37e58924 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c @@ -8017,9 +8017,7 @@ static void btrfs_endio_direct_read(struct bio *bio) dio_bio->bi_status = err; dio_end_io(dio_bio); - - if (io_bio->end_io) - io_bio->end_io(io_bio, blk_status_to_errno(err)); + btrfs_io_bio_free_csum(io_bio); bio_put(bio); } @@ -8372,8 +8370,7 @@ static void btrfs_submit_direct(struct bio *dio_bio, struct inode *inode, if (!ret) return; - if (io_bio->end_io) - io_bio->end_io(io_bio, ret); + btrfs_io_bio_free_csum(io_bio); free_ordered: /* |