Btrfs: more allocator enhancements

Signed-off-by: Chris Mason <chris.mason@oracle.com>
diff --git a/fs/btrfs/bit-radix.c b/fs/btrfs/bit-radix.c
index e9ace32..1a02714 100644
--- a/fs/btrfs/bit-radix.c
+++ b/fs/btrfs/bit-radix.c
@@ -26,8 +26,10 @@
 		if (ret)
 			return ret;
 	}
-	set_bit(bit_slot, bits + 1);
-	return 0;
+	ret = test_and_set_bit(bit_slot, bits + 1);
+	if (ret < 0)
+		ret = 1;
+	return ret;
 }
 
 int test_radix_bit(struct radix_tree_root *radix, unsigned long bit)