aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs
diff options
context:
space:
mode:
authorChris Mason <chris.mason@oracle.com>2008-07-22 12:08:37 -0400
committerChris Mason <chris.mason@oracle.com>2008-09-25 11:04:05 -0400
commite34a5b4f77b8448cf2863ad0cbac35e2c2a86a0a (patch)
tree52c9d89d2cb31d70f021a0db8587566018edb0ff /fs/btrfs
parent6dddcbeb28b34620ad033f1e8d9f6960bafdd7d2 (diff)
Btrfs: Add some conditional schedules near the alloc_mutex
This helps prevent stalls, especially while the snapshot cleaner is running hard Signed-off-by: Chris Mason <chris.mason@oracle.com>
Diffstat (limited to 'fs/btrfs')
-rw-r--r--fs/btrfs/extent-tree.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
index c51cd11de206..72fa28236e5d 100644
--- a/fs/btrfs/extent-tree.c
+++ b/fs/btrfs/extent-tree.c
@@ -937,6 +937,7 @@ int btrfs_inc_ref(struct btrfs_trans_handle *trans, struct btrfs_root *root,
937 level = btrfs_header_level(buf); 937 level = btrfs_header_level(buf);
938 nritems = btrfs_header_nritems(buf); 938 nritems = btrfs_header_nritems(buf);
939 for (i = 0; i < nritems; i++) { 939 for (i = 0; i < nritems; i++) {
940 cond_resched();
940 if (level == 0) { 941 if (level == 0) {
941 u64 disk_bytenr; 942 u64 disk_bytenr;
942 btrfs_item_key_to_cpu(buf, &key, i); 943 btrfs_item_key_to_cpu(buf, &key, i);
@@ -2189,6 +2190,7 @@ static int noinline drop_leaf_ref(struct btrfs_trans_handle *trans,
2189 2190
2190 for (i = 0; i < nritems; i++) { 2191 for (i = 0; i < nritems; i++) {
2191 u64 disk_bytenr; 2192 u64 disk_bytenr;
2193 cond_resched();
2192 2194
2193 btrfs_item_key_to_cpu(leaf, &key, i); 2195 btrfs_item_key_to_cpu(leaf, &key, i);
2194 if (btrfs_key_type(&key) != BTRFS_EXTENT_DATA_KEY) 2196 if (btrfs_key_type(&key) != BTRFS_EXTENT_DATA_KEY)