From: Damien Le Moal <Damien.LeMoal@wdc.com>
To: Chaitanya Kulkarni <Chaitanya.Kulkarni@wdc.com>,
"axboe@kernel.dk" <axboe@kernel.dk>
Cc: "kbusch@kernel.org" <kbusch@kernel.org>,
"linux-block@vger.kernel.org" <linux-block@vger.kernel.org>
Subject: Re: [PATCH 2/3] null_blk: add tracepoint helpers for zoned mode
Date: Mon, 17 Feb 2020 01:04:22 +0000 [thread overview]
Message-ID: <BN8PR04MB5812963364CBCB8C05C03192E7160@BN8PR04MB5812.namprd04.prod.outlook.com> (raw)
In-Reply-To: 20200215005758.3212-3-chaitanya.kulkarni@wdc.com
On 2020/02/15 9:58, Chaitanya Kulkarni wrote:
> This patch adds two new tracpoints for null_blk_zoned.c that allows us
> to trace report-zones, zone-mgmt-op and zone-write operations which has
> direct effect on the zone condition state machine.
>
> Also, we update drivers/block/Makefile so that new null_blk related
> tracefiles can be compiled.
>
> Signed-off-by: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
> ---
> drivers/block/Makefile | 3 ++
> drivers/block/null_blk_trace.c | 20 +++++++++
> drivers/block/null_blk_trace.h | 78 ++++++++++++++++++++++++++++++++++
> 3 files changed, 101 insertions(+)
> create mode 100644 drivers/block/null_blk_trace.c
> create mode 100644 drivers/block/null_blk_trace.h
>
> diff --git a/drivers/block/Makefile b/drivers/block/Makefile
> index a53cc1e3a2d3..b05aa413f7c0 100644
> --- a/drivers/block/Makefile
> +++ b/drivers/block/Makefile
> @@ -6,6 +6,8 @@
> # Rewritten to use lists instead of if-statements.
> #
>
> +ccflags-y += -I$(src)
> +
> obj-$(CONFIG_MAC_FLOPPY) += swim3.o
> obj-$(CONFIG_BLK_DEV_SWIM) += swim_mod.o
> obj-$(CONFIG_BLK_DEV_FD) += floppy.o
> @@ -39,6 +41,7 @@ obj-$(CONFIG_ZRAM) += zram/
>
> obj-$(CONFIG_BLK_DEV_NULL_BLK) += null_blk.o
> null_blk-objs := null_blk_main.o
> +null_blk-$(CONFIG_TRACING) += null_blk_trace.o
Since the traces are for zoned operations only, why compile this if
CONFIG_BLK_DEV_ZONED is not enabled ?
> null_blk-$(CONFIG_BLK_DEV_ZONED) += null_blk_zoned.o
>
> skd-y := skd_main.o
> diff --git a/drivers/block/null_blk_trace.c b/drivers/block/null_blk_trace.c
> new file mode 100644
> index 000000000000..bd066130ff39
> --- /dev/null
> +++ b/drivers/block/null_blk_trace.c
> @@ -0,0 +1,20 @@
> +// SPDX-License-Identifier: GPL-2.0
> +
> +/*
> + * All trace related helpers for null_blk goes here.
> + */
> +#include "null_blk_trace.h"
> +
> +/*
> + * Helper to use for all null_blk traces to extract disk name.
> + */
> +const char *nullb_trace_disk_name(struct trace_seq *p, char *name)
> +{
> + const char *ret = trace_seq_buffer_ptr(p);
> +
> + if (name && *name)
> + trace_seq_printf(p, "disk=%s, ", name);
> + trace_seq_putc(p, 0);
> +
> + return ret;
> +}
> diff --git a/drivers/block/null_blk_trace.h b/drivers/block/null_blk_trace.h
> new file mode 100644
> index 000000000000..8171bc26f6d1
> --- /dev/null
> +++ b/drivers/block/null_blk_trace.h
> @@ -0,0 +1,78 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
> +/*
> + * null_blk device driver tracepoints.
> + */
> +
> +#undef TRACE_SYSTEM
> +#define TRACE_SYSTEM nullb
> +
> +#if !defined(_TRACE_NULLB_H) || defined(TRACE_HEADER_MULTI_READ)
> +#define _TRACE_NULLB_H
> +
> +#include <linux/tracepoint.h>
> +#include <linux/trace_seq.h>
> +
> +#include "null_blk.h"
> +
> +const char *nullb_trace_disk_name(struct trace_seq *p, char *name);
> +
> +#define __print_disk_name(name) \
> + nullb_trace_disk_name(p, name)
> +
> +#ifndef TRACE_HEADER_MULTI_READ
> +static inline void __assign_disk_name(char *name, struct gendisk *disk)
> +{
> + if (disk)
> + memcpy(name, disk->disk_name, DISK_NAME_LEN);
> + else
> + memset(name, 0, DISK_NAME_LEN);
> +}
> +#endif
> +
> +TRACE_EVENT(nullb_zone_op,
> + TP_PROTO(struct nullb_cmd *cmd, unsigned int zone_no,
> + unsigned int zone_cond),
> + TP_ARGS(cmd, zone_no, zone_cond),
> + TP_STRUCT__entry(
> + __array(char, disk, DISK_NAME_LEN)
> + __field(enum req_opf, op)
> + __field(unsigned int, zone_no)
> + __field(unsigned int, zone_cond)
> + ),
> + TP_fast_assign(
> + __entry->op = req_op(cmd->rq);
> + __entry->zone_no = zone_no;
> + __entry->zone_cond = zone_cond;
> + __assign_disk_name(__entry->disk, cmd->rq->rq_disk);
> + ),
> + TP_printk("%s req=%-15s zone_no=%u zone_cond=%-10s",
> + __print_disk_name(__entry->disk),
> + blk_op_str(__entry->op),
> + __entry->zone_no,
> + blk_zone_cond_str(__entry->zone_cond))
> +);
> +
> +TRACE_EVENT(nullb_report_zones,
> + TP_PROTO(struct nullb *nullb, unsigned int nr_zones),
> + TP_ARGS(nullb, nr_zones),
> + TP_STRUCT__entry(
> + __array(char, disk, DISK_NAME_LEN)
> + __field(unsigned int, nr_zones)
> + ),
> + TP_fast_assign(
> + __entry->nr_zones = nr_zones;
> + __assign_disk_name(__entry->disk, nullb->disk);
> + ),
> + TP_printk("%s nr_zones=%u",
> + __print_disk_name(__entry->disk), __entry->nr_zones)
> +);
> +
> +#endif /* _TRACE_NULLB_H */
> +
> +#undef TRACE_INCLUDE_PATH
> +#define TRACE_INCLUDE_PATH .
> +#undef TRACE_INCLUDE_FILE
> +#define TRACE_INCLUDE_FILE null_blk_trace
> +
> +/* This part must be outside protection */
> +#include <trace/define_trace.h>
>
--
Damien Le Moal
Western Digital Research
next prev parent reply other threads:[~2020-02-17 1:04 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-15 0:57 [PATCH 0/3] null_blk: add tracnepoints for zoned mode Chaitanya Kulkarni
2020-02-15 0:57 ` [PATCH 1/3] block: add a zone condition debug helper Chaitanya Kulkarni
2020-02-17 0:54 ` Damien Le Moal
2020-02-15 0:57 ` [PATCH 2/3] null_blk: add tracepoint helpers for zoned mode Chaitanya Kulkarni
2020-02-17 1:04 ` Damien Le Moal [this message]
2020-02-15 0:57 ` [PATCH 3/3] null_blk: add trace in null_blk_zoned.c Chaitanya Kulkarni
2020-02-17 1:05 ` Damien Le Moal
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=BN8PR04MB5812963364CBCB8C05C03192E7160@BN8PR04MB5812.namprd04.prod.outlook.com \
--to=damien.lemoal@wdc.com \
--cc=Chaitanya.Kulkarni@wdc.com \
--cc=axboe@kernel.dk \
--cc=kbusch@kernel.org \
--cc=linux-block@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).