[PATCH 00/10] Protection information support for io_uring passthrough

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This patch series enables protection information support with io_uring
passthrough (io_uring_cmd) ioengine. This support is added for both DIF
(extended logical blocks) and DIX (separate metadata buffer) cases.

The initial patch adds support for metadata buffer. As we are unaware
of metadata size during metadata buffer allocation, we provide an option
md_per_io_size, which must be used to specify metadata size for single IO.

This then enables the protection information support with and without
PRACT bit set for both DIF and DIX cases. The support covers 16-bit and
64-bit guard protection information format, without storage tags. As 32-bit
guard protection information format mandates minimum 16 bits for storage
tag, it is not considered.

This series also borrows relevant kernel crc16-t10 and crc64 rocksoft
generation files, along with 48-bit accessors for reference tags.

Ankit Kumar (10):
  engines:io_uring: add missing error during open file
  engines:io_uring: update arguments to fetch nvme data
  engines:io_uring: enable support for separate metadata buffer
  engines:io_uring: uring_cmd add support for protection info
  io_u: move engine data out of union
  crc: pull required crc16-t10 files from linux kernel
  engines:io_uring: generate and verify pi for 16b guard
  crc: pull required rocksoft crc64 apis from linux kernel
  engines:nvme: pull required 48 bit accessors from linux kernel
  engines:io_uring: generate and verify pi for 64b guard

 HOWTO.rst              |  36 ++++
 crc/crc-t10dif.h       |  10 +
 crc/crc64.c            |  31 +++
 crc/crc64.h            |   4 +
 crc/crc64table.h       | 132 ++++++++++++
 crc/crct10dif_common.c |  78 +++++++
 engines/io_uring.c     | 216 ++++++++++++++++---
 engines/nvme.c         | 467 +++++++++++++++++++++++++++++++++++++++--
 engines/nvme.h         | 230 +++++++++++++++++++-
 fio.1                  |  35 +++
 io_u.h                 |   2 +-
 11 files changed, 1191 insertions(+), 50 deletions(-)
 create mode 100644 crc/crc-t10dif.h
 create mode 100644 crc/crc64table.h
 create mode 100644 crc/crct10dif_common.c

-- 
2.25.1




[Index of Archives]     [Linux Kernel]     [Linux SCSI]     [Linux IDE]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux