Flexible I/O Tester development
 help / color / mirror / Atom feed
From: Ankit Kumar <ankit.kumar@samsung.com>
To: axboe@kernel.dk
Cc: fio@vger.kernel.org, krish.reddy@samsung.com,
	joshi.k@samsung.com, anuj20.g@samsung.com,
	Ankit Kumar <ankit.kumar@samsung.com>
Subject: [PATCH v2 0/8] Add support for uring passthrough commands
Date: Thu, 26 May 2022 20:18:01 +0530	[thread overview]
Message-ID: <20220526144809.14877-1-ankit.kumar@samsung.com> (raw)
In-Reply-To: CGME20220526145343epcas5p362cd1b702fc0d11d21bca2880d6e288c@epcas5p3.samsung.com

This patchset adds a new I/O engine (io_uring_cmd), which enables support for
io_uring passthrough commands. This work is based on upcoming 5.19 kernel.
https://git.kernel.dk/cgit/linux-block/log/?h=for-next

This engine will use most of the existing helpers from io_uring. The I/O
preparation, completion, file open, file close and post init paths are going to
differ and hence io_uring_cmd will have its own helpers for them.

The supported io_uring_cmd options are:
* registerfiles
* sqthread_poll
* sqthread_poll_cpu
* nonvectored
* force_async
* cmd_type (new)

The current uring passthrough support is present only with nvme-ns character
device (/dev/ngXnY). This includes both conventional as well as ZNS devices.
cmd_type provides the flexibility to support different types of passthrough
commands in future.

To enable support for nvme passthrough commands, we are adding nvme.c and
nvme.h files. These will have the necessary NVMe specification data
strcutures, opcodes and helper functions for sending admin and I/O passthrough
commands.

O_DIRECT flag support is not present with nvme-ns charatcer devices, hence
zbd will check for them only if fio filetype is a block device. The
t/zbd/test-zbd-support test case #1 is now updated to run only for
block device.

Changes since v1:
- Removed libnvme dependency.
- Addressed review comments from Jens, no longer messy CONFIG flags for the
  new engine.
- Addressed review comment from Shinichiro.

Ankit Kumar (5):
  configure: check nvme uring command support
  nvme: add nvme opcodes, structures and helper functions
  docs: document options for io_uring_cmd I/O engine
  zbd: Check for direct flag only if its block device
  engines/io_uring: Enable zone device support for io_uring_cmd I/O
    engine

Anuj Gupta (3):
  io_uring.h: add IORING_SETUP_SQE128 and IORING_SETUP_CQE32
  engines/io_uring: add new I/O engine for uring passthrough support
  examples: add 2 example job file for io_uring_cmd engine

 HOWTO.rst                    |  39 +++-
 Makefile                     |   4 +-
 configure                    |  21 +++
 engines/io_uring.c           | 336 +++++++++++++++++++++++++++++++++-
 engines/nvme.c               | 338 +++++++++++++++++++++++++++++++++++
 engines/nvme.h               | 204 +++++++++++++++++++++
 examples/uring-cmd-ng.fio    |  35 ++++
 examples/uring-cmd-zoned.fio |  40 +++++
 file.h                       |  12 +-
 fio.1                        |  28 ++-
 os/linux/io_uring.h          |  45 ++++-
 t/zbd/test-zbd-support       |   3 +-
 zbd.c                        |   4 +-
 13 files changed, 1080 insertions(+), 29 deletions(-)
 create mode 100644 engines/nvme.c
 create mode 100644 engines/nvme.h
 create mode 100644 examples/uring-cmd-ng.fio
 create mode 100644 examples/uring-cmd-zoned.fio


base-commit: 6f1a24593c227a4f392f454698aca20e95f0006c
-- 
2.17.1


       reply	other threads:[~2022-05-26 16:48 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CGME20220526145343epcas5p362cd1b702fc0d11d21bca2880d6e288c@epcas5p3.samsung.com>
2022-05-26 14:48 ` Ankit Kumar [this message]
2022-05-26 14:48   ` [PATCH v2 1/8] io_uring.h: add IORING_SETUP_SQE128 and IORING_SETUP_CQE32 Ankit Kumar
2022-05-26 14:48   ` [PATCH v2 2/8] configure: check nvme uring command support Ankit Kumar
2022-05-26 14:48   ` [PATCH v2 3/8] nvme: add nvme opcodes, structures and helper functions Ankit Kumar
2022-05-27  7:29     ` Kanchan Joshi
2022-05-27 12:24       ` Jens Axboe
2022-05-27 13:21         ` Ankit Kumar
2022-05-27 14:45     ` Vincent Fu
2022-05-27 14:54       ` Jens Axboe
2022-05-27 18:07         ` Jens Axboe
2022-05-26 14:48   ` [PATCH v2 4/8] engines/io_uring: add new I/O engine for uring passthrough support Ankit Kumar
2022-05-27  6:37     ` Kanchan Joshi
2022-05-26 14:48   ` [PATCH v2 5/8] docs: document options for io_uring_cmd I/O engine Ankit Kumar
2022-05-27  6:54     ` Kanchan Joshi
2022-05-27 13:26       ` Ankit Kumar
2022-05-27 15:19     ` Vincent Fu
2022-05-26 14:48   ` [PATCH v2 6/8] zbd: Check for direct flag only if its block device Ankit Kumar
2022-05-27 16:15     ` Vincent Fu
2022-05-30 10:14     ` Shinichiro Kawasaki
2022-05-26 14:48   ` [PATCH v2 7/8] engines/io_uring: Enable zone device support for io_uring_cmd I/O engine Ankit Kumar
2022-05-27 17:23     ` Vincent Fu
2022-05-26 14:48   ` [PATCH v2 8/8] examples: add 2 example job file for io_uring_cmd engine Ankit Kumar
2022-05-27 17:30     ` Vincent Fu
2022-05-27 18:05       ` Jens Axboe
2022-05-27  7:02   ` [PATCH v2 0/8] Add support for uring passthrough commands Kanchan Joshi
2022-05-27 13:24     ` Ankit Kumar

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=20220526144809.14877-1-ankit.kumar@samsung.com \
    --to=ankit.kumar@samsung.com \
    --cc=anuj20.g@samsung.com \
    --cc=axboe@kernel.dk \
    --cc=fio@vger.kernel.org \
    --cc=joshi.k@samsung.com \
    --cc=krish.reddy@samsung.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