mirror of
https://github.com/torvalds/linux.git
synced 2024-11-22 12:11:40 +00:00
btrfs: use btrfs_finish_ordered_extent to complete direct writes
Use the btrfs_finish_ordered_extent helper to complete compressed writes using the bbio->ordered pointer instead of requiring an rbtree lookup in the otherwise equivalent btrfs_mark_ordered_io_finished called from btrfs_writepage_endio_finish_ordered. Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com> Reviewed-by: Josef Bacik <josef@toxicpanda.com> Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
7dd4395490
commit
b41b6f6937
@ -7775,8 +7775,8 @@ static int btrfs_dio_iomap_end(struct inode *inode, loff_t pos, loff_t length,
|
||||
pos += submitted;
|
||||
length -= submitted;
|
||||
if (write)
|
||||
btrfs_mark_ordered_io_finished(BTRFS_I(inode), NULL,
|
||||
pos, length, false);
|
||||
btrfs_finish_ordered_extent(dio_data->ordered, NULL,
|
||||
pos, length, false);
|
||||
else
|
||||
unlock_extent(&BTRFS_I(inode)->io_tree, pos,
|
||||
pos + length - 1, NULL);
|
||||
@ -7806,12 +7806,14 @@ static void btrfs_dio_end_io(struct btrfs_bio *bbio)
|
||||
dip->file_offset, dip->bytes, bio->bi_status);
|
||||
}
|
||||
|
||||
if (btrfs_op(bio) == BTRFS_MAP_WRITE)
|
||||
btrfs_mark_ordered_io_finished(inode, NULL, dip->file_offset,
|
||||
dip->bytes, !bio->bi_status);
|
||||
else
|
||||
if (btrfs_op(bio) == BTRFS_MAP_WRITE) {
|
||||
btrfs_finish_ordered_extent(bbio->ordered, NULL,
|
||||
dip->file_offset, dip->bytes,
|
||||
!bio->bi_status);
|
||||
} else {
|
||||
unlock_extent(&inode->io_tree, dip->file_offset,
|
||||
dip->file_offset + dip->bytes - 1, NULL);
|
||||
}
|
||||
|
||||
bbio->bio.bi_private = bbio->private;
|
||||
iomap_dio_bio_end_io(bio);
|
||||
|
Loading…
Reference in New Issue
Block a user