summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Mason <chris.mason@oracle.com>2011-07-26 16:01:59 -0400
committerChris Mason <chris.mason@oracle.com>2011-07-27 12:46:47 -0400
commit31533fb263928c93a34cda41b66a6e83ade5c766 (patch)
treeb4f3a770e805403adc1931f3bb15213ee2a0d624
parent85d4e461117b40eb10722f774566b19bd5e77879 (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.c36
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;