From: Hannes Reinecke <hare@suse.de>
To: himanshu.madhani@oracle.com, martin.petersen@oracle.com,
linux-scsi@vger.kernel.org
Subject: Re: [RFC v1 0/8] scsi: Multipath support for scsi disk devices.
Date: Fri, 22 Nov 2024 15:27:32 +0100 [thread overview]
Message-ID: <5353841e-2b6e-4ea0-9d46-08adb8925029@suse.de> (raw)
In-Reply-To: <20241109044529.992935-1-himanshu.madhani@oracle.com>
On 11/9/24 05:45, himanshu.madhani@oracle.com wrote:
> From: Himanshu Madhani <himanshu.madhani@oracle.com>
>
> Hello Folks,
>
> Here is a very early RFC for multipath support in the scsi layer. This patch series
> implements native multipath support for scsi disks devices.
>
> In this series, I am providing conceptual changes which still needs work. However,
> I wanted to get this RFC out to get community feedback on the direction of changes.
>
> This RFC follows NVMe multipath implementation closely for SCSI multipath. Currently,
> SCSI multipath only supports disk devices which advertises ALUA (Asymmetric Logical
> Unit Access) capability in the Inquiry response data.
>
First of all, thank you for doing this.
Had been on my to-do list for a long time.
However, the one crucial thing why I kept pushing it back is:
Residuals.
NVMe native multipathing works because NVMe is a 'all-or-nothing'
protocol, ie either the entire I/O had been completed, or nothing has
happened.
Which means for any failure we can safely retry the entire I/O on a
different path (that's the 'steal_bio' thingie), knowing that it's safe
to do so.
For SCSI, however, this is not the case; it's perfectly valid for a
target to do a partial completion, and ask the initiator to retry the
remainders. And this partial completion might be at any position within
the bvec, requiring us to resend the bio from a random starting position.
Meaning we cannot do a blind 'steal_bio' thing.
So: have you evaluated you series wrt to residuals?
Have you _measured_ if residuals are happening?
Have you considered your patchset how residuals could be
treated?
(It _might_ be possible to resend the entire I/O over to another path,
even if the command had been partially completed. That's perfectly safe
for reads, but for writes you have to be extremely careful to not cause
a data corruption. We had some fun discussions here over at the NVMe
side ...)
And: please drop the device handler thingie for this, and concentrate
on ALUA. No point in carrying legacy stuff around.
_AND_ you have to evaluate the ALUA settings anyway to get a decent
path selection.
Cheers,
Hannes
--
Dr. Hannes Reinecke Kernel Storage Architect
hare@suse.de +49 911 74053 688
SUSE Software Solutions GmbH, Frankenstr. 146, 90461 Nürnberg
HRB 36809 (AG Nürnberg), GF: I. Totev, A. McDonald, W. Knoblich
prev parent reply other threads:[~2024-11-22 14:27 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-09 4:45 [RFC v1 0/8] scsi: Multipath support for scsi disk devices himanshu.madhani
2024-11-09 4:45 ` [RFC v1 1/8] scsi: Add multipath device support himanshu.madhani
2024-11-12 21:09 ` Bart Van Assche
2024-11-13 0:20 ` Himanshu Madhani
2024-11-09 4:45 ` [RFC v1 2/8] scsi: create multipath capable scsi host himanshu.madhani
2024-11-10 21:11 ` Bart Van Assche
2024-11-09 4:45 ` [RFC v1 3/8] scsi: Add error handling capability for multipath himanshu.madhani
2024-11-09 4:45 ` [RFC v1 4/8] scsi: Complete multipath request himanshu.madhani
2024-11-09 4:45 ` [RFC v1 5/8] scsi: Add scsi multipath sysfs hooks himanshu.madhani
2024-11-09 4:45 ` [RFC v1 6/8] scsi: Add multipath suppport for device handler himanshu.madhani
2024-11-09 7:29 ` kernel test robot
2024-11-09 8:10 ` kernel test robot
2024-11-09 4:45 ` [RFC v1 7/8] scsi: Add multipath disk init code for sd driver himanshu.madhani
2024-11-09 8:51 ` kernel test robot
2024-11-09 4:45 ` [RFC v1 8/8] scsi_debug: Add module parameter for ALUA multipath himanshu.madhani
2024-11-10 21:15 ` [RFC v1 0/8] scsi: Multipath support for scsi disk devices Bart Van Assche
2024-11-12 20:46 ` Himanshu Madhani
2024-11-22 14:27 ` Hannes Reinecke [this message]
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=5353841e-2b6e-4ea0-9d46-08adb8925029@suse.de \
--to=hare@suse.de \
--cc=himanshu.madhani@oracle.com \
--cc=linux-scsi@vger.kernel.org \
--cc=martin.petersen@oracle.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.