diff options
author | Omar Sandoval <osandov@fb.com> | 2017-01-31 17:53:22 -0500 |
---|---|---|
committer | Jens Axboe <axboe@fb.com> | 2017-02-02 12:20:16 -0500 |
commit | 6ac93117ab009d3901ed5d3d0f79056eb5fc0afd (patch) | |
tree | 1f5e064f9ecbbd55d8d72a23a4f3b7f66d411384 | |
parent | 62ebce16c0ac2ffac44e32f931a2d8f6e749be4c (diff) |
blktrace: use existing disk debugfs directory
We may already have a directory to put the blktrace stuff in if
1. The disk uses blk-mq
2. CONFIG_BLK_DEBUG_FS is enabled
3. We are tracing the whole disk and not a partition
Instead of hardcoding this very specific case, let's use the new
debugfs_lookup(). If the directory exists, we use it, otherwise we
create one and clean it up later.
Fixes: 07e4fead45e6 ("blk-mq: create debugfs directory tree")
Signed-off-by: Omar Sandoval <osandov@fb.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
-rw-r--r-- | kernel/trace/blktrace.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c index 8cea91d248d9..b2058a7f94bd 100644 --- a/kernel/trace/blktrace.c +++ b/kernel/trace/blktrace.c | |||
@@ -470,12 +470,12 @@ static int do_blk_trace_setup(struct request_queue *q, char *name, dev_t dev, | |||
470 | if (!blk_debugfs_root) | 470 | if (!blk_debugfs_root) |
471 | goto err; | 471 | goto err; |
472 | 472 | ||
473 | dir = debugfs_create_dir(buts->name, blk_debugfs_root); | 473 | dir = debugfs_lookup(buts->name, blk_debugfs_root); |
474 | 474 | if (!dir) | |
475 | bt->dir = dir = debugfs_create_dir(buts->name, blk_debugfs_root); | ||
475 | if (!dir) | 476 | if (!dir) |
476 | goto err; | 477 | goto err; |
477 | 478 | ||
478 | bt->dir = dir; | ||
479 | bt->dev = dev; | 479 | bt->dev = dev; |
480 | atomic_set(&bt->dropped, 0); | 480 | atomic_set(&bt->dropped, 0); |
481 | INIT_LIST_HEAD(&bt->running_list); | 481 | INIT_LIST_HEAD(&bt->running_list); |
@@ -517,9 +517,12 @@ static int do_blk_trace_setup(struct request_queue *q, char *name, dev_t dev, | |||
517 | if (atomic_inc_return(&blk_probes_ref) == 1) | 517 | if (atomic_inc_return(&blk_probes_ref) == 1) |
518 | blk_register_tracepoints(); | 518 | blk_register_tracepoints(); |
519 | 519 | ||
520 | return 0; | 520 | ret = 0; |
521 | err: | 521 | err: |
522 | blk_trace_free(bt); | 522 | if (dir && !bt->dir) |
523 | dput(dir); | ||
524 | if (ret) | ||
525 | blk_trace_free(bt); | ||
523 | return ret; | 526 | return ret; |
524 | } | 527 | } |
525 | 528 | ||