From 31533fb263928c93a34cda41b66a6e83ade5c766 Mon Sep 17 00:00:00 2001 From: Chris Mason Date: Tue, 26 Jul 2011 16:01:59 -0400 Subject: Btrfs: remove lockdep magic from btrfs_next_leaf Before the reader/writer locks, btrfs_next_leaf needed to keep the path blocking to avoid making lockdep upset. Now that btrfs_next_leaf only takes read locks, this isn't required. Signed-off-by: Chris Mason --- fs/btrfs/ctree.c | 36 +++++------------------------------- 1 file changed, 5 insertions(+), 31 deletions(-) (limited to 'fs') diff --git a/fs/btrfs/ctree.c b/fs/btrfs/ctree.c index 0ad48e782d37..011cab3aca8d 100644 --- a/fs/btrfs/ctree.c +++ b/fs/btrfs/ctree.c @@ -4169,21 +4169,12 @@ int btrfs_next_leaf(struct btrfs_root *root, struct btrfs_path *path) u32 nritems; int ret; int old_spinning = path->leave_spinning; - int force_blocking = 0; int next_rw_lock = 0; nritems = btrfs_header_nritems(path->nodes[0]); if (nritems == 0) return 1; - /* - * we take the blocks in an order that upsets lockdep. Using - * blocking mode is the only way around it. - */ -#ifdef CONFIG_DEBUG_LOCK_ALLOC - force_blocking = 1; -#endif - btrfs_item_key_to_cpu(path->nodes[0], &key, nritems - 1); again: level = 1; @@ -4192,9 +4183,7 @@ again: btrfs_release_path(path); path->keep_locks = 1; - - if (!force_blocking) - path->leave_spinning = 1; + path->leave_spinning = 1; ret = btrfs_search_slot(NULL, root, &key, path, 0, 0); path->keep_locks = 0; @@ -4255,18 +4244,10 @@ again: if (!ret) { btrfs_set_path_blocking(path); btrfs_tree_read_lock(next); - if (!force_blocking) { - btrfs_clear_path_blocking(path, next, + btrfs_clear_path_blocking(path, next, BTRFS_READ_LOCK); - } - } - if (force_blocking) { - btrfs_set_lock_blocking_rw(next, - BTRFS_READ_LOCK); - next_rw_lock = BTRFS_READ_LOCK_BLOCKING; - } else { - next_rw_lock = BTRFS_READ_LOCK; } + next_rw_lock = BTRFS_READ_LOCK; } break; } @@ -4300,17 +4281,10 @@ again: if (!ret) { btrfs_set_path_blocking(path); btrfs_tree_read_lock(next); - if (!force_blocking) - btrfs_clear_path_blocking(path, next, + btrfs_clear_path_blocking(path, next, BTRFS_READ_LOCK); } - if (force_blocking) { - btrfs_set_lock_blocking_rw(next, - BTRFS_READ_LOCK); - next_rw_lock = BTRFS_READ_LOCK_BLOCKING; - } else { - next_rw_lock = BTRFS_READ_LOCK; - } + next_rw_lock = BTRFS_READ_LOCK; } } ret = 0; -- cgit v1.2.3