Commit c9b577c0 authored by Nikolay Borisov's avatar Nikolay Borisov Committed by David Sterba

btrfs: Open code btrfs_write_and_wait_marked_extents

btrfs_write_and_wait_transaction is essentially a wrapper of
btrfs_write_and_wait_marked_extents with the addition of calling
clear_btree_io_tree. Having the code split doesn't really bring any
benefit. Open code the later into the former and add proper
documentation header.
Signed-off-by: default avatarNikolay Borisov <nborisov@suse.com>
Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
[ reformat comment ]
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent 0e34693f
...@@ -1083,42 +1083,35 @@ int btrfs_wait_tree_log_extents(struct btrfs_root *log_root, int mark) ...@@ -1083,42 +1083,35 @@ int btrfs_wait_tree_log_extents(struct btrfs_root *log_root, int mark)
} }
/* /*
* when btree blocks are allocated, they have some corresponding bits set for * When btree blocks are allocated the corresponding extents are marked dirty.
* them in one of two extent_io trees. This is used to make sure all of * This function ensures such extents are persisted on disk for transaction or
* those extents are on disk for transaction or log commit * log commit.
*
* @trans: transaction whose dirty pages we'd like to write
*/ */
static int btrfs_write_and_wait_marked_extents(struct btrfs_fs_info *fs_info, static int btrfs_write_and_wait_transaction(struct btrfs_trans_handle *trans,
struct extent_io_tree *dirty_pages, int mark) struct btrfs_fs_info *fs_info)
{ {
int ret; int ret;
int ret2; int ret2;
struct extent_io_tree *dirty_pages = &trans->transaction->dirty_pages;
struct blk_plug plug; struct blk_plug plug;
blk_start_plug(&plug); blk_start_plug(&plug);
ret = btrfs_write_marked_extents(fs_info, dirty_pages, mark); ret = btrfs_write_marked_extents(fs_info, dirty_pages, EXTENT_DIRTY);
blk_finish_plug(&plug); blk_finish_plug(&plug);
ret2 = btrfs_wait_extents(fs_info, dirty_pages); ret2 = btrfs_wait_extents(fs_info, dirty_pages);
clear_btree_io_tree(&trans->transaction->dirty_pages);
if (ret) if (ret)
return ret; return ret;
if (ret2) else if (ret2)
return ret2; return ret2;
else
return 0; return 0;
} }
static int btrfs_write_and_wait_transaction(struct btrfs_trans_handle *trans,
struct btrfs_fs_info *fs_info)
{
int ret;
ret = btrfs_write_and_wait_marked_extents(fs_info,
&trans->transaction->dirty_pages,
EXTENT_DIRTY);
clear_btree_io_tree(&trans->transaction->dirty_pages);
return ret;
}
/* /*
* this is used to update the root pointer in the tree of tree roots. * this is used to update the root pointer in the tree of tree roots.
* *
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment