[PATCH v7 00/10] Support persistent reservation operations

Changqi Lu posted 10 patches 4 months, 3 weeks ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20240705105614.3377694-1-luchangqi.123@bytedance.com
Maintainers: Kevin Wolf <kwolf@redhat.com>, Hanna Reitz <hreitz@redhat.com>, Stefan Hajnoczi <stefanha@redhat.com>, Fam Zheng <fam@euphon.net>, Ronnie Sahlberg <ronniesahlberg@gmail.com>, Paolo Bonzini <pbonzini@redhat.com>, Peter Lieven <pl@dlhnet.de>, Keith Busch <kbusch@kernel.org>, Klaus Jensen <its@irrelevant.dk>, Jesper Devantier <foss@defmacro.it>, "Philippe Mathieu-Daudé" <philmd@linaro.org>
There is a newer version of this series
block/block-backend.c             | 403 ++++++++++++++++++++++++++++
block/io.c                        | 164 ++++++++++++
block/iscsi.c                     | 431 ++++++++++++++++++++++++++++++
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, 2247 insertions(+), 3 deletions(-)
[PATCH v7 00/10] Support persistent reservation operations
Posted by Changqi Lu 4 months, 3 weeks ago
Hi,

Patch v7 has been modified.
Thanks again to Stefan for reviewing the code.

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                     | 431 ++++++++++++++++++++++++++++++
 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, 2247 insertions(+), 3 deletions(-)

-- 
2.20.1
Re: [PATCH v7 00/10] Support persistent reservation operations
Posted by Stefan Hajnoczi 4 months, 2 weeks ago
On Fri, Jul 05, 2024 at 06:56:04PM +0800, Changqi Lu wrote:
> Hi,
> 
> Patch v7 has been modified.
> Thanks again to Stefan for reviewing the code.
> 
> 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.

I have left comments. Thanks!

Stefan