mbox series

[v8,00/10] Support persistent reservation operations

Message ID 20240708130107.11495-1-luchangqi.123@bytedance.com
Headers show
Series Support persistent reservation operations | expand

Message

Changqi Lu July 8, 2024, 1 p.m. UTC
Stefan, the issue you mentioned has been fixed.

Almost all patches have been reviewed, thank you very much
to Stefan and Klaus.


v7->v8:
- Fix num_keys may be less than 0 at scsi_pr_read_keys_complete().
- Fix buf memory leak at iscsi driver.

v6->v7:
- Add buferlen size check at SCSI layer.
- Add pr_cap calculation in bdrv_merge_limits() function at block layer,
  so the ugly bs->file->bs->bl.pr_cap in scsi and nvme layers was
  changed to bs->bl.pr_cap.
- Fix memory leak at iscsi driver, and some other spelling errors.

v5->v6:
- Add relevant comments in the io layer.

v4->v5:
- Fixed a memory leak bug at hw/nvme/ctrl.c.

v3->v4:
- At the nvme layer, the two patches of enabling the ONCS
  function and enabling rescap are combined into one.
- At the nvme layer, add helper functions for pr capacity
  conversion between the block layer and the nvme layer.

v2->v3:
In v2 Persist Through Power Loss(PTPL) is enable default.
In v3 PTPL is supported, which is passed as a parameter.

v1->v2:
- Add sg_persist --report-capabilities for SCSI protocol and enable
  oncs and rescap for NVMe protocol.
- Add persistent reservation capabilities constants and helper functions for
  SCSI and NVMe protocol.
- Add comments for necessary APIs.

v1:
- Add seven APIs about persistent reservation command for block layer.
  These APIs including reading keys, reading reservations, registering,
  reserving, releasing, clearing and preempting.
- Add the necessary pr-related operation APIs for both the
  SCSI protocol and NVMe protocol at the device layer.
- Add scsi driver at the driver layer to verify the functions


Changqi Lu (10):
  block: add persistent reservation in/out api
  block/raw: add persistent reservation in/out driver
  scsi/constant: add persistent reservation in/out protocol constants
  scsi/util: add helper functions for persistent reservation types
    conversion
  hw/scsi: add persistent reservation in/out api for scsi device
  block/nvme: add reservation command protocol constants
  hw/nvme: add helper functions for converting reservation types
  hw/nvme: enable ONCS and rescap function
  hw/nvme: add reservation protocal command
  block/iscsi: add persistent reservation in/out driver

 block/block-backend.c             | 403 ++++++++++++++++++++++++++++
 block/io.c                        | 164 ++++++++++++
 block/iscsi.c                     | 425 ++++++++++++++++++++++++++++++
 block/raw-format.c                |  56 ++++
 hw/nvme/ctrl.c                    | 326 ++++++++++++++++++++++-
 hw/nvme/ns.c                      |   5 +
 hw/nvme/nvme.h                    |  88 +++++++
 hw/scsi/scsi-disk.c               | 368 ++++++++++++++++++++++++++
 include/block/block-common.h      |  40 +++
 include/block/block-io.h          |  20 ++
 include/block/block_int-common.h  |  84 ++++++
 include/block/nvme.h              | 100 ++++++-
 include/scsi/constants.h          |  52 ++++
 include/scsi/utils.h              |   8 +
 include/sysemu/block-backend-io.h |  24 ++
 scsi/utils.c                      |  81 ++++++
 16 files changed, 2241 insertions(+), 3 deletions(-)

Comments

Changqi Lu July 8, 2024, 1:43 p.m. UTC | #1
Hi,

I am sorry.  There may be a problem with the mailbox server, and all emails
cannot be send out. Please ignore the above emails.
From: "Changqi Lu"<luchangqi.123@bytedance.com>
Date: Mon, Jul 8, 2024, 21:01
Subject: [PATCH v8 00/10] Support persistent reservation operations
To: <qemu-block@nongnu.org>, <qemu-devel@nongnu.org>
Cc: <kwolf@redhat.com>, <hreitz@redhat.com>, <stefanha@redhat.com>, <
fam@euphon.net>, <ronniesahlberg@gmail.com>, <pbonzini@redhat.com>, <
pl@dlhnet.de>, <kbusch@kernel.org>, <its@irrelevant.dk>, <foss@defmacro.it>,
<philmd@linaro.org>, <pizhenwei@bytedance.com>, "Changqi Lu"<
luchangqi.123@bytedance.com>
Stefan, the issue you mentioned has been fixed. Almost all patches have
been reviewed, thank you very much to Stefan and Klaus. v7->v8: - Fix
num_keys may be less than 0 at scsi_pr_read_keys_complete(). - Fix buf
memory leak at iscsi driver. v6->v7: - Add buferlen size check at SCSI
layer. - Add pr_cap calculation in bdrv_merge_limits() function at block
layer, so the ugly bs->file->bs->bl.pr_cap in scsi and nvme layers was
changed to bs->bl.pr_cap. - Fix memory leak at iscsi driver, and some other
spelling errors. v5->v6: - Add relevant comments in the io layer. v4->v5: -
Fixed a memory leak bug at hw/nvme/ctrl.c. v3->v4: - At the nvme layer, the
two patches of enabling the ONCS function and enabling rescap are combined
into one. - At the nvme layer, add helper functions for pr capacity
conversion between the block layer and the nvme layer. v2->v3: In v2
Persist Through Power Loss(PTPL) is enable default. In v3 PTPL is
supported, which is passed as a parameter. v1->v2: - Add sg_persist
--report-capabilities for SCSI protocol and enable oncs and rescap for NVMe
protocol. - Add persistent reservation capabilities constants and helper
functions for SCSI and NVMe protocol. - Add comments for necessary APIs.
v1: - Add seven APIs about persistent reservation command for block layer.
These APIs including reading keys, reading reservations, registering,
reserving, releasing, clearing and preempting. - Add the necessary
pr-related operation APIs for both the SCSI protocol and NVMe protocol at
the device layer. - Add scsi driver at the driver layer to verify the
functions Changqi Lu (10): block: add persistent reservation in/out api
block/raw: add persistent reservation in/out driver scsi/constant: add
persistent reservation in/out protocol constants scsi/util: add helper
functions for persistent reservation types conversion hw/scsi: add
persistent reservation in/out api for scsi device block/nvme: add
reservation command protocol constants hw/nvme: add helper functions for
converting reservation types hw/nvme: enable ONCS and rescap function
hw/nvme: add reservation protocal command block/iscsi: add persistent
reservation in/out driver block/block-backend.c | 403
++++++++++++++++++++++++++++ block/io.c | 164 ++++++++++++ block/iscsi.c |
425 ++++++++++++++++++++++++++++++ block/raw-format.c | 56 ++++
hw/nvme/ctrl.c | 326 ++++++++++++++++++++++- hw/nvme/ns.c | 5 +
hw/nvme/nvme.h | 88 +++++++ hw/scsi/scsi-disk.c | 368
++++++++++++++++++++++++++ include/block/block-common.h | 40 +++
include/block/block-io.h | 20 ++ include/block/block_int-common.h | 84
++++++ include/block/nvme.h | 100 ++++++- include/scsi/constants.h | 52
++++ include/scsi/utils.h | 8 + include/sysemu/block-backend-io.h | 24 ++
scsi/utils.c | 81 ++++++ 16 files changed, 2241 insertions(+), 3
deletions(-) -- 2.20.1