Btrfs: remove lockdep magic from btrfs_next_leaf
authorChris Mason <chris.mason@oracle.com>
Tue, 26 Jul 2011 20:01:59 +0000 (16:01 -0400)
committerChris Mason <chris.mason@oracle.com>
Wed, 27 Jul 2011 16:46:47 +0000 (12:46 -0400)
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>
fs/btrfs/ctree.c

index 0ad48e7..011cab3 100644 (file)
@@ -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;