Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4c098bcd authored by Linus Torvalds's avatar Linus Torvalds
Browse files
parents d006b2b6 284b066a
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -1530,8 +1530,7 @@ int btrfs_search_slot(struct btrfs_trans_handle *trans, struct btrfs_root
			 * for higher level blocks, try not to allocate blocks
			 * with the block and the parent locks held.
			 */
			if (level > 0 && !prealloc_block.objectid &&
			    btrfs_path_lock_waiting(p, level)) {
			if (level > 0 && !prealloc_block.objectid) {
				u32 size = b->len;
				u64 hint = b->start;

+0 −22
Original line number Diff line number Diff line
@@ -236,25 +236,3 @@ int btrfs_tree_locked(struct extent_buffer *eb)
	return test_bit(EXTENT_BUFFER_BLOCKING, &eb->bflags) ||
			spin_is_locked(&eb->lock);
}

/*
 * btrfs_search_slot uses this to decide if it should drop its locks
 * before doing something expensive like allocating free blocks for cow.
 */
int btrfs_path_lock_waiting(struct btrfs_path *path, int level)
{
	int i;
	struct extent_buffer *eb;

	for (i = level; i <= level + 1 && i < BTRFS_MAX_LEVEL; i++) {
		eb = path->nodes[i];
		if (!eb)
			break;
		smp_mb();
		if (spin_is_contended(&eb->lock) ||
		    waitqueue_active(&eb->lock_wq))
			return 1;
	}
	return 0;
}
+0 −2
Original line number Diff line number Diff line
@@ -26,8 +26,6 @@ int btrfs_tree_locked(struct extent_buffer *eb);
int btrfs_try_tree_lock(struct extent_buffer *eb);
int btrfs_try_spin_lock(struct extent_buffer *eb);

int btrfs_path_lock_waiting(struct btrfs_path *path, int level);

void btrfs_set_lock_blocking(struct extent_buffer *eb);
void btrfs_clear_lock_blocking(struct extent_buffer *eb);
#endif