From: "Martin K. Petersen" <martin.petersen@oracle.com>
To: Christoph Hellwig <hch@lst.de>
Cc: "Martin K. Petersen" <martin.petersen@oracle.com>,
Jens Axboe <axboe@kernel.dk>, Mike Snitzer <snitzer@kernel.org>,
Mikulas Patocka <mpatocka@redhat.com>, Song Liu <song@kernel.org>,
Yu Kuai <yukuai3@huawei.com>,
Dan Williams <dan.j.williams@intel.com>,
Vishal Verma <vishal.l.verma@intel.com>,
Dave Jiang <dave.jiang@intel.com>,
Ira Weiny <ira.weiny@intel.com>, Keith Busch <kbusch@kernel.org>,
Sagi Grimberg <sagi@grimberg.me>,
Chaitanya Kulkarni <kch@nvidia.com>,
linux-block@vger.kernel.org, dm-devel@lists.linux.dev,
linux-raid@vger.kernel.org, nvdimm@lists.linux.dev,
linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org,
Bart Van Assche <bvanassche@acm.org>,
Kanchan Joshi <joshi.k@samsung.com>
Subject: Re: [PATCH 03/11] block: remove the BIP_IP_CHECKSUM flag
Date: Wed, 12 Jun 2024 13:27:47 -0400 [thread overview]
Message-ID: <yq1tthyw1jr.fsf@ca-mkp.ca.oracle.com> (raw)
In-Reply-To: <20240612035122.GA25733@lst.de> (Christoph Hellwig's message of "Wed, 12 Jun 2024 05:51:22 +0200")
Christoph,
>> > Note that unlike the NOCHECK flag which I just cleaned up because they
>> > were unused, this one actually does get in the way of the architecture
>> > of the whole series :( We could add a per-bip csum_type but it would
>> > feel really weird.
>>
>> Why would it feel weird? That's how it currently works.
>
> Because there's no way to have it set to anything but the per-queue
> one.
That's what the io_uring passthrough changes enable.
Note that the IP checksum is an optional performance feature. A SCSI
controller supporting IP-to-CRC conversion does not imply that all
submitted metadata must use IP checksum format.
The T10 CRC used to be painfully slow to calculate prior to processors
growing support for pclmulqdq or similar. Hence the optional IP
checksum. But on a modern CPU, the T10 CRC can often be calculated fast
enough that it is less of a performance impediment.
The interface was explicitly designed so that the entity which creates
the metadata decides which checksum it wants to use. And then it uses
the bip flag to communicate that to the HBA. The patch which allowed the
user to set the desired guard tag format for block layer-owned PI fell
by the wayside, apparently. Possibly lost track because the T10 CRC
hardware offload changes took a while to land.
Note that I would personally love to get rid of the IP checksum
altogether but I think it's too soon to make it obsolete. Still a lot of
SCSI stuff out there which runs in IP checksum mode. And it is still a
bit faster than CRC for many workloads. And as long as it is in use, we
need the ability to support it and qualify it.
All I'm asking is that we retain the ability to disable checking at the
controller level and at the target level. And that the optional IP
checksum can be selected on a per-I/O basis. IOW, please just retain the
three existing bip flags. Happy to look into what polarity-reversal
would look like but I don't think that should hold up your series.
>> The qualification tool issues a flurry of commands injecting errors at
>> various places in the stack to identify that the right entity (block
>> layer, controller, storage device) catch a bad checksum, reference tag,
>> etc.
>
> How does it do that? There's no actualy way to make it mismatch.
Through a custom passthrough driver that we want to get rid of and
replace with the io_uring interface series.
--
Martin K. Petersen Oracle Linux Engineering
next prev parent reply other threads:[~2024-06-12 17:28 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-07 5:58 move integrity settings to queue_limits v2 Christoph Hellwig
2024-06-07 5:58 ` [PATCH 01/11] dm-integrity: use the nop integrity profile Christoph Hellwig
2024-06-07 6:10 ` Hannes Reinecke
2024-06-07 5:58 ` [PATCH 02/11] block: remove the unused BIP_{CTRL,DISK}_NOCHECK flags Christoph Hellwig
2024-06-07 6:10 ` Hannes Reinecke
2024-06-10 11:48 ` Martin K. Petersen
2024-06-10 11:51 ` Christoph Hellwig
2024-06-11 20:02 ` Martin K. Petersen
2024-06-12 3:57 ` Christoph Hellwig
2024-06-07 5:58 ` [PATCH 03/11] block: remove the BIP_IP_CHECKSUM flag Christoph Hellwig
2024-06-07 6:11 ` Hannes Reinecke
2024-06-10 11:56 ` Martin K. Petersen
2024-06-10 11:57 ` Christoph Hellwig
2024-06-10 12:19 ` Martin K. Petersen
2024-06-10 12:24 ` Christoph Hellwig
2024-06-11 19:51 ` Martin K. Petersen
2024-06-12 3:51 ` Christoph Hellwig
2024-06-12 17:27 ` Martin K. Petersen [this message]
2024-06-13 5:35 ` Christoph Hellwig
2024-06-14 0:57 ` Martin K. Petersen
2024-06-14 3:16 ` Christoph Hellwig
2024-06-07 5:58 ` [PATCH 04/11] block: remove the blk_integrity_profile structure Christoph Hellwig
2024-06-07 6:15 ` Hannes Reinecke
2024-06-07 18:31 ` Kanchan Joshi
2024-06-08 5:08 ` Christoph Hellwig
2024-06-10 12:00 ` Martin K. Petersen
2024-06-07 5:58 ` [PATCH 05/11] block: remove the blk_flush_integrity call in blk_integrity_unregister Christoph Hellwig
2024-06-07 6:16 ` Hannes Reinecke
2024-06-10 12:01 ` Martin K. Petersen
2024-06-07 5:59 ` [PATCH 06/11] block: factor out flag_{store,show} helper for integrity Christoph Hellwig
2024-06-07 6:16 ` Hannes Reinecke
2024-06-10 12:01 ` Martin K. Petersen
2024-06-07 5:59 ` [PATCH 07/11] block: use kstrtoul in flag_store Christoph Hellwig
2024-06-07 6:17 ` Hannes Reinecke
2024-06-10 12:05 ` Martin K. Petersen
2024-06-07 5:59 ` [PATCH 08/11] block: don't require stable pages for non-PI metadata Christoph Hellwig
2024-06-07 6:17 ` Hannes Reinecke
2024-06-10 12:04 ` Martin K. Petersen
2024-06-07 5:59 ` [PATCH 09/11] block: bypass the STABLE_WRITES flag for protection information Christoph Hellwig
2024-06-07 6:20 ` Hannes Reinecke
2024-06-10 12:02 ` Martin K. Petersen
2024-06-07 5:59 ` [PATCH 10/11] block: invert the BLK_INTEGRITY_{GENERATE,VERIFY} flags Christoph Hellwig
2024-06-07 6:21 ` Hannes Reinecke
2024-06-07 5:59 ` [PATCH 11/11] block: move integrity information into queue_limits Christoph Hellwig
2024-06-07 6:29 ` Hannes Reinecke
2024-06-07 6:32 ` Christoph Hellwig
2024-06-07 7:31 ` Hannes Reinecke
2024-06-07 7:35 ` Hannes Reinecke
2024-06-07 14:52 ` Christoph Hellwig
2024-06-07 15:42 ` move integrity settings to queue_limits v2 Mike Snitzer
2024-06-07 16:50 ` Mikulas Patocka
2024-06-08 5:10 ` Christoph Hellwig
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=yq1tthyw1jr.fsf@ca-mkp.ca.oracle.com \
--to=martin.petersen@oracle.com \
--cc=axboe@kernel.dk \
--cc=bvanassche@acm.org \
--cc=dan.j.williams@intel.com \
--cc=dave.jiang@intel.com \
--cc=dm-devel@lists.linux.dev \
--cc=hch@lst.de \
--cc=ira.weiny@intel.com \
--cc=joshi.k@samsung.com \
--cc=kbusch@kernel.org \
--cc=kch@nvidia.com \
--cc=linux-block@vger.kernel.org \
--cc=linux-nvme@lists.infradead.org \
--cc=linux-raid@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=mpatocka@redhat.com \
--cc=nvdimm@lists.linux.dev \
--cc=sagi@grimberg.me \
--cc=snitzer@kernel.org \
--cc=song@kernel.org \
--cc=vishal.l.verma@intel.com \
--cc=yukuai3@huawei.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).