From: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
To: linux-block@vger.kernel.org
Cc: axboe@kernel.dk, damien.lemoal@wdc.com,
Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
Subject: [PATCH V4 0/3] null_blk: add tracepoints for zoned mode
Date: Wed, 25 Mar 2020 10:49:53 -0700 [thread overview]
Message-ID: <20200325174956.16719-1-chaitanya.kulkarni@wdc.com> (raw)
Hi,
Recently we've added several new operations for zoned block devices
blk-zone.c (ZBD). These operations have a direct effect on the
zone-state machine present in the null_blk_zoned.c.
This will allow us to add new testcases in blktests in order to verify
the correct operations on the driver side.
This is a small patch series which adds tracepoints for the null_blk
block driver when configured in a zoned mode (with command line
parameter zoned=1).
The first patch is a prep patch that adds a helper to stringify zone
conditions which we use in the trace, the second patch adds new
tracepoint definitions and the third patch allows null_blk_zoned to
trace operations.
Please have a look at the end for sample test output which has tests
for CONFIG_BLK_DEV_ZONED and !CONFIG_BLK_DEV_ZONED.
Regards,
Chaitanya
Changes from V3: -
1. Move blk_zone_cond_str() declaration under CONFIG_BLK_DEV_ZONED in
blkdev.h.
Changes from V2 : -
1. Only compile null_blk_trace.c file if tracing and blk_dev_zoned is
enabled.
2. Add a test log with and without CONFIG_BLK_DEV_ZONED.
3. Move Change log to the cover-letter.
4. Declare blk_zone_cond_str() without any CONFIG_BLK_DEV_ZONED
conditions.
5. Add a comment to the ${KDIR_HOME}/drivers/block/Makefile about
whay we need ccflags-y.
6. Fix cover-letter header.
7. Add a copyright banner in null_blk_trace.c.
Changes from V1 : -
1. Move blk_zone_cond_str() to blk-zoned.c.
2. Mark zone_cond_namd array static.
3. Remove BLK_ZONE_COND_LAST.
4. Get rid of inline prefix for blk_zone_cond_str().
5. Use CONFIG_BLK_DEV_ZONE for null_blk_trace.o.
Chaitanya Kulkarni (3):
block: add a zone condition debug helper
null_blk: add tracepoint helpers for zoned mode
null_blk: add trace in null_blk_zoned.c
block/blk-zoned.c | 32 ++++++++++++++
drivers/block/Makefile | 6 +++
drivers/block/null_blk_trace.c | 21 +++++++++
drivers/block/null_blk_trace.h | 79 ++++++++++++++++++++++++++++++++++
drivers/block/null_blk_zoned.c | 12 +++++-
include/linux/blkdev.h | 4 ++
6 files changed, 153 insertions(+), 1 deletion(-)
create mode 100644 drivers/block/null_blk_trace.c
create mode 100644 drivers/block/null_blk_trace.h
Test Results :-
1. With CONFIG_BLK_DEV_ZONED DISABLED :-
----------------------------------------
# zcat /proc/config.gz | grep BLK_DEV_ZONED
# CONFIG_BLK_DEV_ZONED is not set
# makej M=drivers/block
MODPOST 11 modules
CC [M] drivers/block/brd.mod.o
CC [M] drivers/block/floppy.mod.o
CC [M] drivers/block/loop.mod.o
CC [M] drivers/block/mtip32xx/mtip32xx.mod.o
CC [M] drivers/block/null_blk.mod.o <---
CC [M] drivers/block/pktcdvd.mod.o
CC [M] drivers/block/rbd.mod.o
CC [M] drivers/block/sx8.mod.o
CC [M] drivers/block/virtio_blk.mod.o
CC [M] drivers/block/xen-blkfront.mod.o
CC [M] drivers/block/zram/zram.mod.o
LD [M] drivers/block/xen-blkfront.ko
LD [M] drivers/block/brd.ko
LD [M] drivers/block/rbd.ko
LD [M] drivers/block/virtio_blk.ko
LD [M] drivers/block/sx8.ko
LD [M] drivers/block/floppy.ko
LD [M] drivers/block/null_blk.ko <---
LD [M] drivers/block/pktcdvd.ko
LD [M] drivers/block/loop.ko
LD [M] drivers/block/zram/zram.ko
LD [M] drivers/block/mtip32xx/mtip32xx.ko
# insmod drivers/block/null_blk.ko
# dmesg -c
[ 1610.279303] null_blk: loading out-of-tree module taints kernel.
[ 1610.279390] null_blk: module verification failed: signature and/or required key missing - tainting kernel
[ 1610.290823] null_blk: module loaded
# rmmod drivers/block/null_blk.ko
# insmod drivers/block/null_blk.ko zoned=1
insmod: ERROR: could not insert module drivers/block/null_blk.ko: Invalid parameters
# dmesg -c
[ 1627.347747] null_blk: CONFIG_BLK_DEV_ZONED not enabled
# ls /sys/kernel/debug/tracing/events/ | grep null
# echo $?
1
2. With CONFIG_BLK_DEV_ZONED ENABLED :-
---------------------------------------
# zcat /proc/config.gz | grep BLK_DEV_ZONED
CONFIG_BLK_DEV_ZONED=y
# makej M=drivers/block/
AR drivers/block//built-in.a
CC [M] drivers/block//floppy.o
CC [M] drivers/block//brd.o
CC [M] drivers/block//loop.o
CC [M] drivers/block//pktcdvd.o
CC [M] drivers/block//virtio_blk.o
CC [M] drivers/block//zram/zcomp.o
CC [M] drivers/block//mtip32xx/mtip32xx.o
CC [M] drivers/block//sx8.o
CC [M] drivers/block//zram/zram_drv.o
CC [M] drivers/block//rbd.o
CC [M] drivers/block//xen-blkfront.o
CC [M] drivers/block//null_blk_main.o <---
CC [M] drivers/block//null_blk_trace.o <---
CC [M] drivers/block//null_blk_zoned.o <---
LD [M] drivers/block//zram/zram.o
LD [M] drivers/block//null_blk.o
MODPOST 11 modules
CC [M] drivers/block//brd.mod.o
CC [M] drivers/block//floppy.mod.o
CC [M] drivers/block//loop.mod.o
CC [M] drivers/block//mtip32xx/mtip32xx.mod.o
CC [M] drivers/block//null_blk.mod.o <---
CC [M] drivers/block//pktcdvd.mod.o
CC [M] drivers/block//rbd.mod.o
CC [M] drivers/block//sx8.mod.o
CC [M] drivers/block//virtio_blk.mod.o
CC [M] drivers/block//xen-blkfront.mod.o
CC [M] drivers/block//zram/zram.mod.o
LD [M] drivers/block//pktcdvd.ko
LD [M] drivers/block//floppy.ko
LD [M] drivers/block//brd.ko
LD [M] drivers/block//mtip32xx/mtip32xx.ko
LD [M] drivers/block//loop.ko
LD [M] drivers/block//virtio_blk.ko
LD [M] drivers/block//null_blk.ko
LD [M] drivers/block//rbd.ko
LD [M] drivers/block//xen-blkfront.ko
LD [M] drivers/block//sx8.ko
LD [M] drivers/block//zram/zram.ko
# insmod drivers/block/null_blk.ko
# dmesg -c
[ 543.576548] null_blk: module loaded
# lsblk | grep nullb0
nullb0 252:0 0 250G 0 disk
# rmmod null_blk
# insmod drivers/block/null_blk.ko zoned=1 zone_size=128 gb=1
# dmesg -c
[ 543.654579] null_blk: module loaded
# lsblk | grep nullb0
nullb0 252:0 0 1G 0 disk
# blkzone report /dev/nullb0
start: 0x000000000, len 0x040000, capacity: 0x040000, wptr 0x000000 reset:0 non-seq:0, zcond: 1(em) [type: 2(SEQ_WRITE_REQUIRED)]
start: 0x000040000, len 0x040000, capacity: 0x040000, wptr 0x000000 reset:0 non-seq:0, zcond: 1(em) [type: 2(SEQ_WRITE_REQUIRED)]
start: 0x000080000, len 0x040000, capacity: 0x040000, wptr 0x000000 reset:0 non-seq:0, zcond: 1(em) [type: 2(SEQ_WRITE_REQUIRED)]
start: 0x0000c0000, len 0x040000, capacity: 0x040000, wptr 0x000000 reset:0 non-seq:0, zcond: 1(em) [type: 2(SEQ_WRITE_REQUIRED)]
start: 0x000100000, len 0x040000, capacity: 0x040000, wptr 0x000000 reset:0 non-seq:0, zcond: 1(em) [type: 2(SEQ_WRITE_REQUIRED)]
start: 0x000140000, len 0x040000, capacity: 0x040000, wptr 0x000000 reset:0 non-seq:0, zcond: 1(em) [type: 2(SEQ_WRITE_REQUIRED)]
start: 0x000180000, len 0x040000, capacity: 0x040000, wptr 0x000000 reset:0 non-seq:0, zcond: 1(em) [type: 2(SEQ_WRITE_REQUIRED)]
start: 0x0001c0000, len 0x040000, capacity: 0x040000, wptr 0x000000 reset:0 non-seq:0, zcond: 1(em) [type: 2(SEQ_WRITE_REQUIRED)]
# echo 1 > /sys/kernel/debug/tracing/events/nullb/enable
# for i in open close finish reset; do blkzone $i /dev/nullb0 ; done
# cat /sys/kernel/debug/tracing/trace_pipe
nullb_zone_op: disk=nullb0, req=ZONE_OPEN zone_no=0 zone_cond=EXP_OPEN
nullb_zone_op: disk=nullb0, req=ZONE_OPEN zone_no=1 zone_cond=EXP_OPEN
nullb_zone_op: disk=nullb0, req=ZONE_OPEN zone_no=2 zone_cond=EXP_OPEN
nullb_zone_op: disk=nullb0, req=ZONE_OPEN zone_no=3 zone_cond=EXP_OPEN
nullb_zone_op: disk=nullb0, req=ZONE_OPEN zone_no=4 zone_cond=EXP_OPEN
nullb_zone_op: disk=nullb0, req=ZONE_OPEN zone_no=5 zone_cond=EXP_OPEN
nullb_zone_op: disk=nullb0, req=ZONE_OPEN zone_no=6 zone_cond=EXP_OPEN
nullb_zone_op: disk=nullb0, req=ZONE_OPEN zone_no=7 zone_cond=EXP_OPEN
nullb_zone_op: disk=nullb0, req=ZONE_CLOSE zone_no=0 zone_cond=EMPTY
nullb_zone_op: disk=nullb0, req=ZONE_CLOSE zone_no=1 zone_cond=EMPTY
nullb_zone_op: disk=nullb0, req=ZONE_CLOSE zone_no=2 zone_cond=EMPTY
nullb_zone_op: disk=nullb0, req=ZONE_CLOSE zone_no=3 zone_cond=EMPTY
nullb_zone_op: disk=nullb0, req=ZONE_CLOSE zone_no=4 zone_cond=EMPTY
nullb_zone_op: disk=nullb0, req=ZONE_CLOSE zone_no=5 zone_cond=EMPTY
nullb_zone_op: disk=nullb0, req=ZONE_CLOSE zone_no=6 zone_cond=EMPTY
nullb_zone_op: disk=nullb0, req=ZONE_CLOSE zone_no=7 zone_cond=EMPTY
nullb_zone_op: disk=nullb0, req=ZONE_FINISH zone_no=0 zone_cond=FULL
nullb_zone_op: disk=nullb0, req=ZONE_FINISH zone_no=1 zone_cond=FULL
nullb_zone_op: disk=nullb0, req=ZONE_FINISH zone_no=2 zone_cond=FULL
nullb_zone_op: disk=nullb0, req=ZONE_FINISH zone_no=3 zone_cond=FULL
nullb_zone_op: disk=nullb0, req=ZONE_FINISH zone_no=4 zone_cond=FULL
nullb_zone_op: disk=nullb0, req=ZONE_FINISH zone_no=5 zone_cond=FULL
nullb_zone_op: disk=nullb0, req=ZONE_FINISH zone_no=6 zone_cond=FULL
nullb_zone_op: disk=nullb0, req=ZONE_FINISH zone_no=7 zone_cond=FULL
nullb_zone_op: disk=nullb0, req=ZONE_RESET_ALL zone_no=0 zone_cond=EMPTY
nullb_zone_op: disk=nullb0, req=WRITE zone_no=0 zone_cond=IMP_OPEN
nullb_zone_op: disk=nullb0, req=WRITE zone_no=0 zone_cond=IMP_OPEN
nullb_zone_op: disk=nullb0, req=WRITE zone_no=0 zone_cond=IMP_OPEN
nullb_zone_op: disk=nullb0, req=WRITE zone_no=0 zone_cond=IMP_OPEN
nullb_zone_op: disk=nullb0, req=WRITE zone_no=0 zone_cond=IMP_OPEN
--
2.22.0
next reply other threads:[~2020-03-25 18:55 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-25 17:49 Chaitanya Kulkarni [this message]
2020-03-25 17:49 ` [PATCH V4 1/3] block: add a zone condition debug helper Chaitanya Kulkarni
2020-03-26 1:26 ` Damien Le Moal
2020-03-25 17:49 ` [PATCH V4 2/3] null_blk: add tracepoint helpers for zoned mode Chaitanya Kulkarni
2020-03-25 17:49 ` [PATCH V4 3/3] null_blk: add trace in null_blk_zoned.c Chaitanya Kulkarni
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=20200325174956.16719-1-chaitanya.kulkarni@wdc.com \
--to=chaitanya.kulkarni@wdc.com \
--cc=axboe@kernel.dk \
--cc=damien.lemoal@wdc.com \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.