mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 20:48:49 +08:00
btrfs: clean up the left over logged_list usage
We no longer use this list we've passed around so remove it everywhere. Also remove the extra checks for ordered/filemap errors as this is handled higher up now that we're waiting on ordered_extents before getting to the tree log code. Signed-off-by: Josef Bacik <jbacik@fb.com> Reviewed-by: Filipe Manana <fdmanana@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
e7175a6927
commit
a2120a473a
@ -4129,7 +4129,6 @@ static int log_one_extent(struct btrfs_trans_handle *trans,
|
||||
struct btrfs_inode *inode, struct btrfs_root *root,
|
||||
const struct extent_map *em,
|
||||
struct btrfs_path *path,
|
||||
const struct list_head *logged_list,
|
||||
struct btrfs_log_ctx *ctx)
|
||||
{
|
||||
struct btrfs_root *log = root->log_root;
|
||||
@ -4141,17 +4140,11 @@ static int log_one_extent(struct btrfs_trans_handle *trans,
|
||||
u64 block_len;
|
||||
int ret;
|
||||
int extent_inserted = 0;
|
||||
bool ordered_io_err = false;
|
||||
|
||||
ret = log_extent_csums(trans, inode, root, em);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
if (ordered_io_err) {
|
||||
ctx->io_err = -EIO;
|
||||
return ctx->io_err;
|
||||
}
|
||||
|
||||
btrfs_init_map_token(&token);
|
||||
|
||||
ret = __btrfs_drop_extents(trans, log, &inode->vfs_inode, path, em->start,
|
||||
@ -4326,7 +4319,6 @@ static int btrfs_log_changed_extents(struct btrfs_trans_handle *trans,
|
||||
struct btrfs_root *root,
|
||||
struct btrfs_inode *inode,
|
||||
struct btrfs_path *path,
|
||||
struct list_head *logged_list,
|
||||
struct btrfs_log_ctx *ctx,
|
||||
const u64 start,
|
||||
const u64 end)
|
||||
@ -4382,20 +4374,6 @@ static int btrfs_log_changed_extents(struct btrfs_trans_handle *trans,
|
||||
}
|
||||
|
||||
list_sort(NULL, &extents, extent_cmp);
|
||||
btrfs_get_logged_extents(inode, logged_list, logged_start, logged_end);
|
||||
/*
|
||||
* Some ordered extents started by fsync might have completed
|
||||
* before we could collect them into the list logged_list, which
|
||||
* means they're gone, not in our logged_list nor in the inode's
|
||||
* ordered tree. We want the application/user space to know an
|
||||
* error happened while attempting to persist file data so that
|
||||
* it can take proper action. If such error happened, we leave
|
||||
* without writing to the log tree and the fsync must report the
|
||||
* file data write error and not commit the current transaction.
|
||||
*/
|
||||
ret = filemap_check_errors(inode->vfs_inode.i_mapping);
|
||||
if (ret)
|
||||
ctx->io_err = ret;
|
||||
process:
|
||||
while (!list_empty(&extents)) {
|
||||
em = list_entry(extents.next, struct extent_map, list);
|
||||
@ -4414,8 +4392,7 @@ process:
|
||||
|
||||
write_unlock(&tree->lock);
|
||||
|
||||
ret = log_one_extent(trans, inode, root, em, path, logged_list,
|
||||
ctx);
|
||||
ret = log_one_extent(trans, inode, root, em, path, ctx);
|
||||
write_lock(&tree->lock);
|
||||
clear_em_logging(tree, em);
|
||||
free_extent_map(em);
|
||||
@ -4800,7 +4777,6 @@ static int btrfs_log_inode(struct btrfs_trans_handle *trans,
|
||||
struct btrfs_key min_key;
|
||||
struct btrfs_key max_key;
|
||||
struct btrfs_root *log = root->log_root;
|
||||
LIST_HEAD(logged_list);
|
||||
u64 last_extent = 0;
|
||||
int err = 0;
|
||||
int ret;
|
||||
@ -5137,7 +5113,7 @@ log_extents:
|
||||
}
|
||||
if (fast_search) {
|
||||
ret = btrfs_log_changed_extents(trans, root, inode, dst_path,
|
||||
&logged_list, ctx, start, end);
|
||||
ctx, start, end);
|
||||
if (ret) {
|
||||
err = ret;
|
||||
goto out_unlock;
|
||||
@ -5188,10 +5164,6 @@ log_extents:
|
||||
inode->last_log_commit = inode->last_sub_trans;
|
||||
spin_unlock(&inode->lock);
|
||||
out_unlock:
|
||||
if (unlikely(err))
|
||||
btrfs_put_logged_extents(&logged_list);
|
||||
else
|
||||
btrfs_submit_logged_extents(&logged_list, log);
|
||||
mutex_unlock(&inode->log_mutex);
|
||||
|
||||
btrfs_free_path(path);
|
||||
|
Loading…
Reference in New Issue
Block a user