summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Sterba <dsterba@suse.com>2018-04-03 15:45:57 -0400
committerDavid Sterba <dsterba@suse.com>2018-05-28 12:07:17 -0400
commitf46b24c9457143a367c6707eac82d546e2bcf280 (patch)
treecb09021515f8ed1eb2af36f764c39ac9e5e3f6fb
parent0e08eb9b1c1701f1fda8e8d7f4d2b93e7e54941f (diff)
btrfs: use fs_info for btrfs_handle_em_exist tracepoint
We really want to know to which filesystem the extent map events belong, but as it cannot be reached from the extent_map pointers, we need to pass it down the callchain. Reviewed-by: Nikolay Borisov <nborisov@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
-rw-r--r--fs/btrfs/extent_map.c6
-rw-r--r--fs/btrfs/extent_map.h3
-rw-r--r--fs/btrfs/inode.c2
-rw-r--r--fs/btrfs/tests/extent-map-tests.c8
-rw-r--r--include/trace/events/btrfs.h12
5 files changed, 18 insertions, 13 deletions
diff --git a/fs/btrfs/extent_map.c b/fs/btrfs/extent_map.c
index 1b8a078f92eb..6648d55e5339 100644
--- a/fs/btrfs/extent_map.c
+++ b/fs/btrfs/extent_map.c
@@ -518,6 +518,7 @@ static noinline int merge_extent_mapping(struct extent_map_tree *em_tree,
518 518
519/** 519/**
520 * btrfs_add_extent_mapping - add extent mapping into em_tree 520 * btrfs_add_extent_mapping - add extent mapping into em_tree
521 * @fs_info - used for tracepoint
521 * @em_tree - the extent tree into which we want to insert the extent mapping 522 * @em_tree - the extent tree into which we want to insert the extent mapping
522 * @em_in - extent we are inserting 523 * @em_in - extent we are inserting
523 * @start - start of the logical range btrfs_get_extent() is requesting 524 * @start - start of the logical range btrfs_get_extent() is requesting
@@ -535,7 +536,8 @@ static noinline int merge_extent_mapping(struct extent_map_tree *em_tree,
535 * Return 0 on success, otherwise -EEXIST. 536 * Return 0 on success, otherwise -EEXIST.
536 * 537 *
537 */ 538 */
538int btrfs_add_extent_mapping(struct extent_map_tree *em_tree, 539int btrfs_add_extent_mapping(struct btrfs_fs_info *fs_info,
540 struct extent_map_tree *em_tree,
539 struct extent_map **em_in, u64 start, u64 len) 541 struct extent_map **em_in, u64 start, u64 len)
540{ 542{
541 int ret; 543 int ret;
@@ -553,7 +555,7 @@ int btrfs_add_extent_mapping(struct extent_map_tree *em_tree,
553 555
554 existing = search_extent_mapping(em_tree, start, len); 556 existing = search_extent_mapping(em_tree, start, len);
555 557
556 trace_btrfs_handle_em_exist(existing, em, start, len); 558 trace_btrfs_handle_em_exist(fs_info, existing, em, start, len);
557 559
558 /* 560 /*
559 * existing will always be non-NULL, since there must be 561 * existing will always be non-NULL, since there must be
diff --git a/fs/btrfs/extent_map.h b/fs/btrfs/extent_map.h
index 5fcb80a6ce37..25d985e7532a 100644
--- a/fs/btrfs/extent_map.h
+++ b/fs/btrfs/extent_map.h
@@ -92,7 +92,8 @@ int unpin_extent_cache(struct extent_map_tree *tree, u64 start, u64 len, u64 gen
92void clear_em_logging(struct extent_map_tree *tree, struct extent_map *em); 92void clear_em_logging(struct extent_map_tree *tree, struct extent_map *em);
93struct extent_map *search_extent_mapping(struct extent_map_tree *tree, 93struct extent_map *search_extent_mapping(struct extent_map_tree *tree,
94 u64 start, u64 len); 94 u64 start, u64 len);
95int btrfs_add_extent_mapping(struct extent_map_tree *em_tree, 95int btrfs_add_extent_mapping(struct btrfs_fs_info *fs_info,
96 struct extent_map_tree *em_tree,
96 struct extent_map **em_in, u64 start, u64 len); 97 struct extent_map **em_in, u64 start, u64 len);
97 98
98#endif 99#endif
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index be17cfdcbcf5..f4447986263a 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -7083,7 +7083,7 @@ insert:
7083 7083
7084 err = 0; 7084 err = 0;
7085 write_lock(&em_tree->lock); 7085 write_lock(&em_tree->lock);
7086 err = btrfs_add_extent_mapping(em_tree, &em, start, len); 7086 err = btrfs_add_extent_mapping(fs_info, em_tree, &em, start, len);
7087 write_unlock(&em_tree->lock); 7087 write_unlock(&em_tree->lock);
7088out: 7088out:
7089 7089
diff --git a/fs/btrfs/tests/extent-map-tests.c b/fs/btrfs/tests/extent-map-tests.c
index 8a39de4453e4..9c051c4a3315 100644
--- a/fs/btrfs/tests/extent-map-tests.c
+++ b/fs/btrfs/tests/extent-map-tests.c
@@ -91,7 +91,7 @@ static void test_case_1(struct btrfs_fs_info *fs_info,
91 em->len = len; 91 em->len = len;
92 em->block_start = start; 92 em->block_start = start;
93 em->block_len = len; 93 em->block_len = len;
94 ret = btrfs_add_extent_mapping(em_tree, &em, em->start, em->len); 94 ret = btrfs_add_extent_mapping(fs_info, em_tree, &em, em->start, em->len);
95 if (ret) 95 if (ret)
96 test_msg("case1 [%llu %llu]: ret %d\n", start, start + len, ret); 96 test_msg("case1 [%llu %llu]: ret %d\n", start, start + len, ret);
97 if (em && 97 if (em &&
@@ -155,7 +155,7 @@ static void test_case_2(struct btrfs_fs_info *fs_info,
155 em->len = SZ_1K; 155 em->len = SZ_1K;
156 em->block_start = EXTENT_MAP_INLINE; 156 em->block_start = EXTENT_MAP_INLINE;
157 em->block_len = (u64)-1; 157 em->block_len = (u64)-1;
158 ret = btrfs_add_extent_mapping(em_tree, &em, em->start, em->len); 158 ret = btrfs_add_extent_mapping(fs_info, em_tree, &em, em->start, em->len);
159 if (ret) 159 if (ret)
160 test_msg("case2 [0 1K]: ret %d\n", ret); 160 test_msg("case2 [0 1K]: ret %d\n", ret);
161 if (em && 161 if (em &&
@@ -201,7 +201,7 @@ static void __test_case_3(struct btrfs_fs_info *fs_info,
201 em->len = SZ_16K; 201 em->len = SZ_16K;
202 em->block_start = 0; 202 em->block_start = 0;
203 em->block_len = SZ_16K; 203 em->block_len = SZ_16K;
204 ret = btrfs_add_extent_mapping(em_tree, &em, start, len); 204 ret = btrfs_add_extent_mapping(fs_info, em_tree, &em, start, len);
205 if (ret) 205 if (ret)
206 test_msg("case3 [0x%llx 0x%llx): ret %d\n", 206 test_msg("case3 [0x%llx 0x%llx): ret %d\n",
207 start, start + len, ret); 207 start, start + len, ret);
@@ -288,7 +288,7 @@ static void __test_case_4(struct btrfs_fs_info *fs_info,
288 em->len = SZ_32K; 288 em->len = SZ_32K;
289 em->block_start = 0; 289 em->block_start = 0;
290 em->block_len = SZ_32K; 290 em->block_len = SZ_32K;
291 ret = btrfs_add_extent_mapping(em_tree, &em, start, len); 291 ret = btrfs_add_extent_mapping(fs_info, em_tree, &em, start, len);
292 if (ret) 292 if (ret)
293 test_msg("case4 [0x%llx 0x%llx): ret %d\n", 293 test_msg("case4 [0x%llx 0x%llx): ret %d\n",
294 start, len, ret); 294 start, len, ret);
diff --git a/include/trace/events/btrfs.h b/include/trace/events/btrfs.h
index 9be469706d30..d78d8ab4bc86 100644
--- a/include/trace/events/btrfs.h
+++ b/include/trace/events/btrfs.h
@@ -256,11 +256,13 @@ TRACE_EVENT_CONDITION(btrfs_get_extent,
256 256
257TRACE_EVENT(btrfs_handle_em_exist, 257TRACE_EVENT(btrfs_handle_em_exist,
258 258
259 TP_PROTO(const struct extent_map *existing, const struct extent_map *map, u64 start, u64 len), 259 TP_PROTO(struct btrfs_fs_info *fs_info,
260 const struct extent_map *existing, const struct extent_map *map,
261 u64 start, u64 len),
260 262
261 TP_ARGS(existing, map, start, len), 263 TP_ARGS(fs_info, existing, map, start, len),
262 264
263 TP_STRUCT__entry( 265 TP_STRUCT__entry_btrfs(
264 __field( u64, e_start ) 266 __field( u64, e_start )
265 __field( u64, e_len ) 267 __field( u64, e_len )
266 __field( u64, map_start ) 268 __field( u64, map_start )
@@ -269,7 +271,7 @@ TRACE_EVENT(btrfs_handle_em_exist,
269 __field( u64, len ) 271 __field( u64, len )
270 ), 272 ),
271 273
272 TP_fast_assign( 274 TP_fast_assign_btrfs(fs_info,
273 __entry->e_start = existing->start; 275 __entry->e_start = existing->start;
274 __entry->e_len = existing->len; 276 __entry->e_len = existing->len;
275 __entry->map_start = map->start; 277 __entry->map_start = map->start;
@@ -278,7 +280,7 @@ TRACE_EVENT(btrfs_handle_em_exist,
278 __entry->len = len; 280 __entry->len = len;
279 ), 281 ),
280 282
281 TP_printk("start=%llu len=%llu " 283 TP_printk_btrfs("start=%llu len=%llu "
282 "existing(start=%llu len=%llu) " 284 "existing(start=%llu len=%llu) "
283 "em(start=%llu len=%llu)", 285 "em(start=%llu len=%llu)",
284 __entry->start, 286 __entry->start,