From: Zygo Blaxell Date: Sun, 1 May 2016 20:34:11 +0000 (-0400) Subject: Revert "Btrfs: track transid for delayed ref flushing" X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=625fd890bdd7b34b31147ba80eb871d58a21942a;p=linux Revert "Btrfs: track transid for delayed ref flushing" This reverts commit e1a2af4b63a4e3df2d9ce14a1f99104443ee31fd. --- diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h index 80166fc22094..585c3b5d56ea 100644 --- a/fs/btrfs/ctree.h +++ b/fs/btrfs/ctree.h @@ -3400,7 +3400,7 @@ void btrfs_put_block_group(struct btrfs_block_group_cache *cache); int btrfs_run_delayed_refs(struct btrfs_trans_handle *trans, struct btrfs_root *root, unsigned long count); int btrfs_async_run_delayed_refs(struct btrfs_root *root, - unsigned long count, u64 transid, int wait); + unsigned long count, int wait); int btrfs_lookup_data_extent(struct btrfs_root *root, u64 start, u64 len); int btrfs_lookup_extent_info(struct btrfs_trans_handle *trans, struct btrfs_root *root, u64 bytenr, diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c index 69296d4b70c7..22027794591a 100644 --- a/fs/btrfs/extent-tree.c +++ b/fs/btrfs/extent-tree.c @@ -2782,7 +2782,6 @@ int btrfs_should_throttle_delayed_refs(struct btrfs_trans_handle *trans, struct async_delayed_refs { struct btrfs_root *root; - u64 transid; int count; int error; int sync; @@ -2798,16 +2797,9 @@ static void delayed_ref_async_start(struct btrfs_work *work) async = container_of(work, struct async_delayed_refs, work); - trans = btrfs_attach_transaction(async->root); + trans = btrfs_join_transaction(async->root); if (IS_ERR(trans)) { - if (PTR_ERR(trans) != -ENOENT) - async->error = PTR_ERR(trans); - goto done; - } - - /* Don't bother flushing if we got into a different transaction */ - if (trans->transid != async->transid) { - btrfs_end_transaction(trans, async->root); + async->error = PTR_ERR(trans); goto done; } @@ -2831,7 +2823,7 @@ done: } int btrfs_async_run_delayed_refs(struct btrfs_root *root, - unsigned long count, u64 transid, int wait) + unsigned long count, int wait) { struct async_delayed_refs *async; int ret; @@ -2843,7 +2835,6 @@ int btrfs_async_run_delayed_refs(struct btrfs_root *root, async->root = root->fs_info->tree_root; async->count = count; async->error = 0; - async->transid = transid; if (wait) async->sync = 1; else diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index efc44a9c4cee..489a73908310 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c @@ -4469,7 +4469,6 @@ delete: BUG_ON(ret); if (btrfs_should_throttle_delayed_refs(trans, root)) btrfs_async_run_delayed_refs(root, - trans->transid, trans->delayed_ref_updates * 2, 0); if (be_nice) { if (truncate_space_check(trans, root, diff --git a/fs/btrfs/transaction.c b/fs/btrfs/transaction.c index e64faed85ad7..e77e36713786 100644 --- a/fs/btrfs/transaction.c +++ b/fs/btrfs/transaction.c @@ -825,7 +825,6 @@ static int __btrfs_end_transaction(struct btrfs_trans_handle *trans, { struct btrfs_transaction *cur_trans = trans->transaction; struct btrfs_fs_info *info = root->fs_info; - u64 transid = trans->transid; unsigned long cur = trans->delayed_ref_updates; int lock = (trans->type != TRANS_JOIN_NOLOCK); int err = 0; @@ -917,7 +916,7 @@ static int __btrfs_end_transaction(struct btrfs_trans_handle *trans, kmem_cache_free(btrfs_trans_handle_cachep, trans); if (must_run_delayed_refs) { - btrfs_async_run_delayed_refs(root, cur, transid, + btrfs_async_run_delayed_refs(root, cur, must_run_delayed_refs == 1); } return err;