aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/free-space-cache.c
diff options
context:
space:
mode:
authorJosef Bacik <josef@redhat.com>2011-11-10 08:29:20 -0500
committerChris Mason <chris.mason@oracle.com>2012-01-16 15:29:42 -0500
commit3f7de037fb3727b20bc27332cdcf2488b702394c (patch)
tree7e355b7e60b584ca7aaaf7c8abfa1f2408c15ff2 /fs/btrfs/free-space-cache.c
parent45a8090e626ab470c91142954431a93846030b0d (diff)
Btrfs: add allocator tracepoints
I used these tracepoints when figuring out what the cluster stuff was doing, so add them to mainline in case we need to profile this stuff again. Thanks, Signed-off-by: Josef Bacik <josef@redhat.com>
Diffstat (limited to 'fs/btrfs/free-space-cache.c')
-rw-r--r--fs/btrfs/free-space-cache.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/fs/btrfs/free-space-cache.c b/fs/btrfs/free-space-cache.c
index 6c7887a7770c..efe20032e4a1 100644
--- a/fs/btrfs/free-space-cache.c
+++ b/fs/btrfs/free-space-cache.c
@@ -2346,6 +2346,8 @@ again:
2346 &entry->offset_index, 1); 2346 &entry->offset_index, 1);
2347 BUG_ON(ret); 2347 BUG_ON(ret);
2348 2348
2349 trace_btrfs_setup_cluster(block_group, cluster,
2350 total_found * block_group->sectorsize, 1);
2349 return 0; 2351 return 0;
2350} 2352}
2351 2353
@@ -2368,6 +2370,7 @@ setup_cluster_no_bitmap(struct btrfs_block_group_cache *block_group,
2368 u64 window_start; 2370 u64 window_start;
2369 u64 window_free; 2371 u64 window_free;
2370 u64 max_extent; 2372 u64 max_extent;
2373 u64 total_size = 0;
2371 2374
2372 entry = tree_search_offset(ctl, offset, 0, 1); 2375 entry = tree_search_offset(ctl, offset, 0, 1);
2373 if (!entry) 2376 if (!entry)
@@ -2433,11 +2436,12 @@ setup_cluster_no_bitmap(struct btrfs_block_group_cache *block_group,
2433 rb_erase(&entry->offset_index, &ctl->free_space_offset); 2436 rb_erase(&entry->offset_index, &ctl->free_space_offset);
2434 ret = tree_insert_offset(&cluster->root, entry->offset, 2437 ret = tree_insert_offset(&cluster->root, entry->offset,
2435 &entry->offset_index, 0); 2438 &entry->offset_index, 0);
2439 total_size += entry->bytes;
2436 BUG_ON(ret); 2440 BUG_ON(ret);
2437 } while (node && entry != last); 2441 } while (node && entry != last);
2438 2442
2439 cluster->max_size = max_extent; 2443 cluster->max_size = max_extent;
2440 2444 trace_btrfs_setup_cluster(block_group, cluster, total_size, 0);
2441 return 0; 2445 return 0;
2442} 2446}
2443 2447
@@ -2542,6 +2546,10 @@ int btrfs_find_space_cluster(struct btrfs_trans_handle *trans,
2542 goto out; 2546 goto out;
2543 } 2547 }
2544 2548
2549 trace_btrfs_find_cluster(block_group, offset, bytes, empty_size,
2550 min_bytes);
2551
2552 INIT_LIST_HEAD(&bitmaps);
2545 ret = setup_cluster_no_bitmap(block_group, cluster, &bitmaps, offset, 2553 ret = setup_cluster_no_bitmap(block_group, cluster, &bitmaps, offset,
2546 bytes + empty_size, 2554 bytes + empty_size,
2547 cont1_bytes, min_bytes); 2555 cont1_bytes, min_bytes);
@@ -2559,6 +2567,8 @@ int btrfs_find_space_cluster(struct btrfs_trans_handle *trans,
2559 list_add_tail(&cluster->block_group_list, 2567 list_add_tail(&cluster->block_group_list,
2560 &block_group->cluster_list); 2568 &block_group->cluster_list);
2561 cluster->block_group = block_group; 2569 cluster->block_group = block_group;
2570 } else {
2571 trace_btrfs_failed_cluster_setup(block_group);
2562 } 2572 }
2563out: 2573out:
2564 spin_unlock(&cluster->lock); 2574 spin_unlock(&cluster->lock);