btrfs: assert nowait mode is not used for some btree search functions
authorStefan Roesch <shr@fb.com>
Mon, 12 Sep 2022 19:27:51 +0000 (12:27 -0700)
committerDavid Sterba <dsterba@suse.com>
Thu, 29 Sep 2022 15:08:29 +0000 (17:08 +0200)
Adds nowait asserts to btree search functions which are not used by
buffered IO and direct IO paths.

Reviewed-by: Filipe Manana <fdmanana@suse.com>
Signed-off-by: Stefan Roesch <shr@fb.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/ctree.c

index 84548b4..b39b339 100644 (file)
@@ -2164,6 +2164,7 @@ int btrfs_search_old_slot(struct btrfs_root *root, const struct btrfs_key *key,
 
        lowest_level = p->lowest_level;
        WARN_ON(p->nodes[0] != NULL);
+       ASSERT(!p->nowait);
 
        if (p->search_commit_root) {
                BUG_ON(time_seq);
@@ -4465,6 +4466,7 @@ int btrfs_search_forward(struct btrfs_root *root, struct btrfs_key *min_key,
        int ret = 1;
        int keep_locks = path->keep_locks;
 
+       ASSERT(!path->nowait);
        path->keep_locks = 1;
 again:
        cur = btrfs_read_lock_root_node(root);
@@ -4645,6 +4647,8 @@ int btrfs_next_old_leaf(struct btrfs_root *root, struct btrfs_path *path,
        int ret;
        int i;
 
+       ASSERT(!path->nowait);
+
        nritems = btrfs_header_nritems(path->nodes[0]);
        if (nritems == 0)
                return 1;