diff options
author | Chris Mason <chris.mason@oracle.com> | 2011-07-26 16:01:59 -0400 |
---|---|---|
committer | Chris Mason <chris.mason@oracle.com> | 2011-07-27 12:46:47 -0400 |
commit | 31533fb263928c93a34cda41b66a6e83ade5c766 (patch) | |
tree | b4f3a770e805403adc1931f3bb15213ee2a0d624 | |
parent | 85d4e461117b40eb10722f774566b19bd5e77879 (diff) |
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 <chris.mason@oracle.com>
-rw-r--r-- | fs/btrfs/ctree.c | 36 |
1 files changed, 5 insertions, 31 deletions
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; |