public inbox for linux-block@vger.kernel.org
 help / color / mirror / Atom feed
From: Shinichiro Kawasaki <shinichiro.kawasaki@wdc.com>
To: Ming Lei <ming.lei@redhat.com>
Cc: "linux-block@vger.kernel.org" <linux-block@vger.kernel.org>
Subject: Re: [PATCH blktests v2 1/2] src: add mini ublk source code
Date: Fri, 17 Feb 2023 14:05:48 +0000	[thread overview]
Message-ID: <20230217140547.qvpdniixeeurc5im@shindev> (raw)
In-Reply-To: <20230217013851.1402864-2-ming.lei@redhat.com>

Hi Ming, thanks for the v2 series. Please find my comments in line.

On Feb 17, 2023 / 09:38, Ming Lei wrote:
> Prepare for adding ublk related test:
> 
> 1) ublk delete is sync removal, this way is convenient to
>    blkg/queue/disk instance leak issue
> 
> 2) mini ublk has two builtin target(null, loop), and loop IO is
> handled by io_uring, so we can use ublk to cover part of io_uring
> workloads
> 
> 3) not like loop/nbd, ublk won't pre-allocate/add disk, and always
> add/delete disk dynamically, this way may cover disk plug & unplug
> tests
> 
> 4) ublk specific test given people starts to use it, so better to
> let blktest cover ublk related tests
> 
> Add mini ublk source for test purpose only, which is easy to use:
> 
> ./miniublk add -t {null|loop} [-q nr_queues] [-d depth] [-n dev_id]
> 	 default: nr_queues=2(max 4), depth=128(max 128), dev_id=-1(auto allocation)
> 	 -t loop -f backing_file
> 	 -t null
> ./miniublk del [-n dev_id] [--disk/-d disk_path ] -a
> 	 -a delete all devices, -d delete device by disk path,
> 	 -n delete specified device
> ./miniublk list [-n dev_id] -a
> 	 -a list all devices, -n list specified device, default -a
> 
> ublk depends on liburing 2.2, so allow to ignore ublk build failure
> in case of missing liburing, and we will check if ublk program exits
> inside test. Also v6.0 is the 1st linux kernel release with ublk.

This v2 patch prevents the ublk build failure. Could you rewrite this paragraph?

> 
> Signed-off-by: Ming Lei <ming.lei@redhat.com>
> ---
>  Makefile            |    2 +-
>  src/Makefile        |   18 +
>  src/ublk/miniublk.c | 1376 +++++++++++++++++++++++++++++++++++++++++++
>  3 files changed, 1395 insertions(+), 1 deletion(-)
>  create mode 100644 src/ublk/miniublk.c
> 
> diff --git a/Makefile b/Makefile
> index 5a04479..b9bbade 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -2,7 +2,7 @@ prefix ?= /usr/local
>  dest = $(DESTDIR)$(prefix)/blktests
>  
>  all:
> -	$(MAKE) -C src all
> +	$(MAKE) -i -C src all

As you pointed out in another e-mail, -i is no longer required.

>  
>  clean:
>  	$(MAKE) -C src clean
> diff --git a/src/Makefile b/src/Makefile
> index 3b587f6..eae52db 100644
> --- a/src/Makefile
> +++ b/src/Makefile
> @@ -2,6 +2,10 @@ HAVE_C_HEADER = $(shell if echo "\#include <$(1)>" |		\
>  		$(CC) -E - > /dev/null 2>&1; then echo "$(2)";	\
>  		else echo "$(3)"; fi)
>  
> +HAVE_C_MACRO = $(shell if echo "#include <$(1)>" |	\
> +		$(CC) -E - 2>&1 /dev/null | grep $(2) > /dev/null 2>&1; \
> +		then echo 1;else echo 0; fi)
> +
>  C_TARGETS := \
>  	loblksize \
>  	loop_change_fd \
> @@ -13,16 +17,27 @@ C_TARGETS := \
>  	sg/syzkaller1 \
>  	zbdioctl
>  
> +C_MINIUBLK := ublk/miniublk
> +
> +HAVE_LIBURING := $(call HAVE_C_MACRO,liburing.h,IORING_OP_URING_CMD)
> +HAVE_UBLK_HEADER := $(call HAVE_C_HEADER,linux/ublk_cmd.h,1)
> +
>  CXX_TARGETS := \
>  	discontiguous-io
>  
> +ifeq ($(HAVE_LIBURING)$(HAVE_UBLK_HEADER), 11)
> +TARGETS := $(C_TARGETS) $(CXX_TARGETS) $(C_MINIUBLK)
> +else
> +$(info Skip $(C_MINIUBLK) build due to missing kernel header(v6.0+) or liburing(2.2+))
>  TARGETS := $(C_TARGETS) $(CXX_TARGETS)
> +endif
>  
>  CONFIG_DEFS := $(call HAVE_C_HEADER,linux/blkzoned.h,-DHAVE_LINUX_BLKZONED_H)
>  
>  override CFLAGS   := -O2 -Wall -Wshadow $(CFLAGS) $(CONFIG_DEFS)
>  override CXXFLAGS := -O2 -std=c++11 -Wall -Wextra -Wshadow -Wno-sign-compare \
>  		     -Werror $(CXXFLAGS) $(CONFIG_DEFS)
> +MINIUBLK_FLAGS :=  -D_GNU_SOURCE -lpthread -luring
>  
>  all: $(TARGETS)
>  
> @@ -39,4 +54,7 @@ $(C_TARGETS): %: %.c
>  $(CXX_TARGETS): %: %.cpp
>  	$(CXX) $(CPPFLAGS) $(CXXFLAGS) -o $@ $^
>  
> +$(C_MINIUBLK): %: ublk/miniublk.c
> +	$(CC) $(CFLAGS) $(MINIUBLK_FLAGS) -o $@ ublk/miniublk.c
> +
>  .PHONY: all clean install
> diff --git a/src/ublk/miniublk.c b/src/ublk/miniublk.c
> new file mode 100644
> index 0000000..e84ba41
> --- /dev/null
> +++ b/src/ublk/miniublk.c

Do you plan to add more programs in the ublk/ directory? If not, I suggest to
place miniublk.c in just under src/.

Also, could you add miniublk to src/.gitignore?

-- 
Shin'ichiro Kawasaki

  parent reply	other threads:[~2023-02-17 14:05 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-02-17  1:38 [PATCH blktests v2 0/2] blktests: add mini ublk source and blktests/033 Ming Lei
2023-02-17  1:38 ` [PATCH blktests v2 1/2] src: add mini ublk source code Ming Lei
2023-02-17  1:42   ` Ming Lei
2023-02-17 14:05   ` Shinichiro Kawasaki [this message]
2023-02-20  3:13     ` Ming Lei
2023-02-17  1:38 ` [PATCH blktests v2 2/2] block/033: add test to cover gendisk leak Ming Lei
2023-02-17 14:21   ` Shinichiro Kawasaki

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=20230217140547.qvpdniixeeurc5im@shindev \
    --to=shinichiro.kawasaki@wdc.com \
    --cc=linux-block@vger.kernel.org \
    --cc=ming.lei@redhat.com \
    /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