Linux Device Mapper development
 help / color / mirror / Atom feed
From: Mike Christie <michael.christie@oracle.com>
To: Bart Van Assche <bvanassche@acm.org>,
	linux-block@vger.kernel.org, dm-devel@redhat.com,
	snitzer@kernel.org, hch@lst.de, axboe@kernel.dk,
	martin.petersen@oracle.com,
	james.bottomley@hansenpartnership.com,
	linux-scsi@vger.kernel.org, target-devel@vger.kernel.org
Subject: Re: [dm-devel] [PATCH 0/8] Use block pr_ops in LIO
Date: Sun, 5 Jun 2022 11:55:35 -0500	[thread overview]
Message-ID: <d18d9e19-d184-357c-9921-d024f0b50d1a@oracle.com> (raw)
In-Reply-To: <923053d3-adf8-e4b4-9ef3-8e920ae90a79@acm.org>

On 6/4/22 11:01 PM, Bart Van Assche wrote:
> On 6/2/22 23:55, Mike Christie wrote:
>> The following patches were built over Linus's tree. They allow us to use
>> the block pr_ops with LIO's target_core_iblock module to support cluster
>> applications in VMs.
>>
>> Currently, to use something like windows clustering in VMs with LIO and
>> vhost-scsi, you have to use tcmu or pscsi or use a cluster aware
>> FS/framework for the LIO pr file. Setting up a cluster FS/framework is
>> pain and waste when your real backend device is already a distributed
>> device, and pscsi and tcmu are nice for specific use cases, but iblock
>> gives you the best performance and allows you to use stacked devices
>> like dm-multipath. So these patches allow iblock to work like pscsi/tcmu
>> where they can pass a PR command to the backend module. And then iblock
>> will use the pr_ops to pass the PR command to the real devices similar
>> to what we do for unmap today.
>>
>> Note that this is patchset does not attempt to support every PR SCSI
>> feature in iblock. It has the same limitations as tcmu and pscsi where
>> you can have a single I_T nexus per device and only supports what is
>> needed for windows clustering right now.
> 
> How has this patch series been tested? Does LIO pass the libiscsi persistent reservation tests with this patch series applied?
> 

libiscsi is not suitable for this type of setup. If libiscsi works correctly,
then this patchset should fail. It's probably opposite of what you are
thinking about. We are not supporting a a single instance of LIO/qemu that
handles multiple I_T nexues like what libiscsi can test well. It's more
like multiple LIO/qemu instances each on different systems that each have a
single I_T nexus between the VM's initiator and LIO/qemu. So it's more of
a passthrough between the VM and real device.

For example, right now to use a cluster app in VMs with a backend device that
is itself cluster aware/shared you commonly do:

1. Qemu's userspace block layer which can send SG_IO to your real backend
device to do the PR request. Checks for conflicts are then done by the
backend device as well.

So here you have 2 systems. On system0, Qemu0 exports /dev/sdb to VM0. VM0
only has the one I_T nexus. System1 exports /dev/sdb to  VM1. VM1 only has
the one I_T nexus as well.

2. Qemu vhost-scsi with pscsi or tcmu. In these cases it's similar as 1 where
you have 2 different systems. How you pass the PRs to the real device may
differ for tcmu. pscsi just injects them into the scsi queue. We do not use
the LIO pr code at all (pgr_support=0).

3. This patchset allows you to use Qemu vhost-scsi with iblock. The setup will
be similar as 1 and 2 but we use a different backend driver.

To test this type of thing you would want a cluster aware libiscsi where
you do a pr register and reserve in VM0, then in VM1 you would do the WRITE
to check that your pr_type is honored from that I_T nexus.

And so we are going to run our internal QA type of tests, but we are hoping to
also implement some qemu clustered SCSI type of tests like this. We are still
trying to figure out the framework (looking into Luis's ansible based stuff,
etc) because for general iscsi testing we want to be able to kick off multiple
VMs and bare metal systems and run both open-iscsi + lio tests.

--
dm-devel mailing list
dm-devel@redhat.com
https://listman.redhat.com/mailman/listinfo/dm-devel


  reply	other threads:[~2022-06-06  6:46 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-03  6:55 [dm-devel] [PATCH 0/8] Use block pr_ops in LIO Mike Christie
2022-06-03  6:55 ` [dm-devel] [PATCH 01/11] scsi: target: Rename sbc_ops to exec_cmd_ops Mike Christie
2022-06-20  7:12   ` Christoph Hellwig
2022-06-03  6:55 ` [dm-devel] [PATCH 02/11] scsi: Rename sd_pr_command Mike Christie
2022-06-20  7:13   ` Christoph Hellwig
2022-06-03  6:55 ` [dm-devel] [PATCH 03/11] scsi: Move sd_pr_type to header to share Mike Christie
2022-06-05  3:58   ` Bart Van Assche
2022-06-20  7:13   ` Christoph Hellwig
2022-06-03  6:55 ` [dm-devel] [PATCH 04/11] block: Add PR callouts for read keys and reservation Mike Christie
2022-06-20  7:14   ` Christoph Hellwig
2022-06-03  6:55 ` [dm-devel] [PATCH 05/11] scsi: Add support for block PR read keys/reservation Mike Christie
2022-06-03  6:55 ` [dm-devel] [PATCH 06/11] dm: " Mike Christie
2022-06-03  6:55 ` [dm-devel] [PATCH 07/11] scsi: target: Allow backends to hook into PR handling Mike Christie
2022-06-20  7:15   ` Christoph Hellwig
2022-06-03  6:55 ` [dm-devel] [PATCH 08/11] scsi: target: Add block PR support to iblock Mike Christie
2022-06-20  7:18   ` Christoph Hellwig
2022-06-03  6:55 ` [dm-devel] [PATCH 09/11] block, nvme: Add error for reservation conflicts Mike Christie
2022-06-03 19:45   ` Keith Busch
2022-06-03 23:08     ` Mike Christie
2022-06-04  7:38     ` Hannes Reinecke
2022-06-04 17:13       ` michael.christie
2022-06-05  9:42         ` Hannes Reinecke
2022-06-20  7:23           ` Christoph Hellwig
2022-06-05  4:00   ` Bart Van Assche
2022-06-03  6:55 ` [dm-devel] [PATCH 10/11] scsi: Use BLK_STS_RSV_CONFLICT " Mike Christie
2022-06-03  6:55 ` [dm-devel] [PATCH 11/11] scsi: target: Handle BLK_STS_RSV_CONFLICT Mike Christie
2022-06-03 11:46 ` [dm-devel] [PATCH 0/8] Use block pr_ops in LIO Christoph Hellwig
2022-06-03 17:55   ` Mike Christie
2022-06-20  7:12     ` Christoph Hellwig
2022-06-05  4:01 ` Bart Van Assche
2022-06-05 16:55   ` Mike Christie [this message]
2022-06-05 18:15     ` Bart Van Assche
2022-06-06 16:38       ` Mike Christie

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=d18d9e19-d184-357c-9921-d024f0b50d1a@oracle.com \
    --to=michael.christie@oracle.com \
    --cc=axboe@kernel.dk \
    --cc=bvanassche@acm.org \
    --cc=dm-devel@redhat.com \
    --cc=hch@lst.de \
    --cc=james.bottomley@hansenpartnership.com \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=martin.petersen@oracle.com \
    --cc=snitzer@kernel.org \
    --cc=target-devel@vger.kernel.org \
    /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