From: Sagi Grimberg <sagig@dev.mellanox.co.il>
To: "Martin K. Petersen" <martin.petersen@oracle.com>,
linux-scsi@vger.kernel.org
Subject: Re: [PATCH 11/14] block: Integrity checksum flag
Date: Wed, 06 Aug 2014 18:43:49 +0300 [thread overview]
Message-ID: <53E24D35.8070201@dev.mellanox.co.il> (raw)
In-Reply-To: <1406320469-29352-12-git-send-email-martin.petersen@oracle.com>
On 7/25/2014 11:34 PM, Martin K. Petersen wrote:
> Make the choice of checksum a per-I/O property by introducing a flag
> that can be inspected by the SCSI layer. There are several reasons for
> this:
>
> 1. It allows us to switch choice of checksum without unloading and
> reloading the HBA driver.
>
> 2. During error recovery we need to be able to tell the HBA that
> checksums read from disk should not be verified and converted to IP
> checksums.
>
> 3. For error injection purposes we need to be able to write a bad guard
> tag to storage. Since the storage device only supports T10 CRC we
> need to be able to disable IP checksum conversion on the HBA.
>
> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
> ---
> block/bio-integrity.c | 3 +++
> drivers/scsi/sd_dif.c | 6 ++++--
> include/linux/bio.h | 1 +
> include/linux/blkdev.h | 1 +
> 4 files changed, 9 insertions(+), 2 deletions(-)
>
> diff --git a/block/bio-integrity.c b/block/bio-integrity.c
> index 63460cc34abe..31795b05339e 100644
> --- a/block/bio-integrity.c
> +++ b/block/bio-integrity.c
> @@ -303,6 +303,9 @@ int bio_integrity_prep(struct bio *bio)
> bip->bip_iter.bi_size = len;
> bip_set_seed(bip, bio->bi_iter.bi_sector);
>
> + if (bi->flags & BLK_INTEGRITY_IP_CHECKSUM)
> + bip->bip_flags |= BIP_IP_CHECKSUM;
> +
> /* Map it */
> offset = offset_in_page(buf);
> for (i = 0 ; i < nr_pages ; i++) {
> diff --git a/drivers/scsi/sd_dif.c b/drivers/scsi/sd_dif.c
> index 4ce636fdc15f..2198abee619e 100644
> --- a/drivers/scsi/sd_dif.c
> +++ b/drivers/scsi/sd_dif.c
> @@ -255,12 +255,14 @@ void sd_dif_config_host(struct scsi_disk *sdkp)
> return;
>
> /* Enable DMA of protection information */
> - if (scsi_host_get_guard(sdkp->device->host) & SHOST_DIX_GUARD_IP)
> + if (scsi_host_get_guard(sdkp->device->host) & SHOST_DIX_GUARD_IP) {
> if (type == SD_DIF_TYPE3_PROTECTION)
> blk_integrity_register(disk, &dif_type3_integrity_ip);
> else
> blk_integrity_register(disk, &dif_type1_integrity_ip);
> - else
> +
> + disk->integrity->flags |= BLK_INTEGRITY_IP_CHECKSUM;
> + } else
> if (type == SD_DIF_TYPE3_PROTECTION)
> blk_integrity_register(disk, &dif_type3_integrity_crc);
> else
> diff --git a/include/linux/bio.h b/include/linux/bio.h
> index 2657425629a8..a60195e07cff 100644
> --- a/include/linux/bio.h
> +++ b/include/linux/bio.h
> @@ -327,6 +327,7 @@ enum bip_flags {
> BIP_MAPPED_INTEGRITY = 1 << 1, /* ref tag has been remapped */
> BIP_CTRL_NOCHECK = 1 << 2, /* disable HBA integrity checking */
> BIP_DISK_NOCHECK = 1 << 3, /* disable disk integrity checking */
> + BIP_IP_CHECKSUM = 1 << 4, /* IP checksum */
> };
>
> static inline sector_t bip_get_seed(struct bio_integrity_payload *bip)
> diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
> index 57ac257c6872..68570d6cfec9 100644
> --- a/include/linux/blkdev.h
> +++ b/include/linux/blkdev.h
> @@ -1466,6 +1466,7 @@ enum blk_integrity_flags {
> BLK_INTEGRITY_VERIFY = 1 << 0,
> BLK_INTEGRITY_GENERATE = 1 << 1,
> BLK_INTEGRITY_DEVICE_CAPABLE = 1 << 2,
> + BLK_INTEGRITY_IP_CHECKSUM = 1 << 3,
> };
>
> struct blk_integrity_iter {
>
Looks good to me,
Reviewed-by: Sagi Grimberg <sagig@mellanox.com>
next prev parent reply other threads:[~2014-08-06 15:43 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-25 20:34 Block/SCSI data integrity update v2 Martin K. Petersen
2014-07-25 20:34 ` [PATCH 01/14] block: Get rid of bdev_integrity_enabled() Martin K. Petersen
2014-07-25 20:34 ` [PATCH 02/14] block: Replace bi_integrity with bi_special Martin K. Petersen
2014-07-26 15:24 ` Christoph Hellwig
2014-08-06 13:15 ` Sagi Grimberg
2014-07-25 20:34 ` [PATCH 03/14] block: Remove integrity tagging functions Martin K. Petersen
2014-08-06 13:16 ` Sagi Grimberg
2014-07-25 20:34 ` [PATCH 04/14] block: Remove bip_buf Martin K. Petersen
2014-07-25 20:34 ` [PATCH 05/14] block: Deprecate the use of the term sector in the context of block integrity Martin K. Petersen
2014-07-26 15:25 ` Christoph Hellwig
2014-08-06 13:32 ` Sagi Grimberg
2014-08-06 13:43 ` Sagi Grimberg
2014-07-25 20:34 ` [PATCH 06/14] block: Make protection interval calculation generic Martin K. Petersen
2014-07-26 15:26 ` Christoph Hellwig
2014-08-06 15:43 ` Sagi Grimberg
2014-07-25 20:34 ` [PATCH 07/14] block: Clean up the code used to generate and verify integrity metadata Martin K. Petersen
2014-07-25 20:34 ` [PATCH 08/14] block: Add prefix to block integrity profile flags Martin K. Petersen
2014-07-25 20:34 ` [PATCH 09/14] block: Add a disk flag to block integrity profile Martin K. Petersen
2014-07-25 20:34 ` [PATCH 10/14] block: Relocate bio integrity flags Martin K. Petersen
2014-07-25 20:34 ` [PATCH 11/14] block: Integrity checksum flag Martin K. Petersen
2014-08-06 15:43 ` Sagi Grimberg [this message]
2014-07-25 20:34 ` [PATCH 12/14] block: Don't merge requests if integrity flags differ Martin K. Petersen
2014-07-25 20:34 ` [PATCH 13/14] block: Add T10 Protection Information functions Martin K. Petersen
2014-07-25 20:34 ` [PATCH 14/14] sd: Honor block layer integrity handling flags Martin K. Petersen
2014-07-26 16:23 ` Block/SCSI data integrity update v2 Christoph Hellwig
2014-07-26 16:33 ` Martin K. Petersen
2014-07-29 12:29 ` Christoph Hellwig
-- strict thread matches above, loose matches on Subject: below --
2014-08-28 19:31 Block/SCSI data integrity update v3 Martin K. Petersen
2014-08-28 19:31 ` [PATCH 11/14] block: Integrity checksum flag Martin K. Petersen
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=53E24D35.8070201@dev.mellanox.co.il \
--to=sagig@dev.mellanox.co.il \
--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.