From: Xingui Yang <yangxingui@huawei.com>
To: <jejb@linux.ibm.com>, <martin.petersen@oracle.com>
Cc: <linux-scsi@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
<linuxarm@huawei.com>, <yangxingui@huawei.com>,
<prime.zeng@hisilicon.com>, <kangfenglong@huawei.com>,
<john.garry@huawei.com>
Subject: [PATCH] scsi: sd: Update dix config everytime sd_revalidate_disk is called
Date: Wed, 19 Oct 2022 08:18:25 +0000 [thread overview]
Message-ID: <20221019081825.20794-1-yangxingui@huawei.com> (raw)
When the host protection capabilities are 0x77 and a DIF disk is connected,
the DIX and DIF of the disk are default enabled. Then if that DIF disk is
reformatted as a non-DIF format, per the currently flow, the DIX is kept
enabled which is not correct, which will cause the following errors when
accessing the non-DIF disk:
[root@localhost ~]# lsscsi -p
[7:0:5:0] disk xxx /dev/sdc DIF/Type3 T10-DIF-TYPE3-CRC
[root@localhost ~]# sg_format -F -s 512 /dev/sdc
[root@localhost ~]# lsscsi -p
[7:0:5:0] disk xxx /dev/sdc - T10-DIF-TYPE3-CRC
[142829.032340] hisi_sas_v3_hw 0000:b4:04.0: erroneous completion iptt=2375 task=00000000bea0970c dev id=5 direct-attached phy4 addr=51c20dbaf642a000 CQ hdr: 0x1023 0x50947 0x0 0x20000 Error info: 0x0 0x0 0x4 0x0
[142829.073883] sas: Enter sas_scsi_recover_host busy: 1 failed: 1
[142829.079783] sas: sas_scsi_find_task: aborting task 0x00000000bea0970c
[142829.102342] sas: Internal abort: task to dev 51c20dbaf642a000 response: 0x0 status 0x5
[142829.110319] sas: sas_eh_handle_sas_errors: task 0x00000000bea0970c is done
[142829.117275] sd 7:0:5:0: [sdc] tag#2375 UNKNOWN(0x2003) Result: hostbyte=0x05 driverbyte=DRIVER_OK cmd_age=0s
[142829.127171] sd 7:0:5:0: [sdc] tag#2375 CDB: opcode=0x2a 2a 00 00 00 00 00 00 00 08 00
[142829.135059] I/O error, dev sdc, sector 0 op 0x1:(WRITE) flags 0x18800 phys_seg 1 prio class 2
On the contrary, when a non-DIF disk is connected and formatted as a DIF
disk, it is found that DIX is not enabled. Operation logs as follows:
[root@localhost ~]# lsscsi -p
[7:0:2:0] disk xxx /dev/sdc - none
[root@localhost ~]# sg_format --format --fmtpinfo=3 --pfu=1 /dev/sdc
[root@localhost ~]# lsscsi -p
[7:0:2:0] disk xxx /dev/sdc DIF/Type3 none
This is because dix config is only updated when the first time a disk
is added, in this patch, we fix the issue by with changes:
1. Remove check first_scan when call sd_config_protection().
2. Unregister block integrity profile after DIX becomes to 0.
Signed-off-by: Xingui Yang <yangxingui@huawei.com>
---
drivers/scsi/sd.c | 3 ---
drivers/scsi/sd_dif.c | 4 +++-
2 files changed, 3 insertions(+), 4 deletions(-)
diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
index eb76ba055021..3844f469b6be 100644
--- a/drivers/scsi/sd.c
+++ b/drivers/scsi/sd.c
@@ -2199,9 +2199,6 @@ static void sd_config_protection(struct scsi_disk *sdkp)
{
struct scsi_device *sdp = sdkp->device;
- if (!sdkp->first_scan)
- return;
-
sd_dif_config_host(sdkp);
if (!sdkp->protection_type)
diff --git a/drivers/scsi/sd_dif.c b/drivers/scsi/sd_dif.c
index 968993ee6d5d..78db8d85f97e 100644
--- a/drivers/scsi/sd_dif.c
+++ b/drivers/scsi/sd_dif.c
@@ -39,8 +39,10 @@ void sd_dif_config_host(struct scsi_disk *sdkp)
dif = 0; dix = 1;
}
- if (!dix)
+ if (!dix) {
+ blk_integrity_unregister(disk);
return;
+ }
memset(&bi, 0, sizeof(bi));
--
2.17.1
next reply other threads:[~2022-10-19 8:24 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-10-19 8:18 Xingui Yang [this message]
2022-10-20 0:18 ` Martin K. Petersen
2022-10-22 2:52 ` yangxingui
2022-11-29 2:45 ` yangxingui
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=20221019081825.20794-1-yangxingui@huawei.com \
--to=yangxingui@huawei.com \
--cc=jejb@linux.ibm.com \
--cc=john.garry@huawei.com \
--cc=kangfenglong@huawei.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=linuxarm@huawei.com \
--cc=martin.petersen@oracle.com \
--cc=prime.zeng@hisilicon.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
all inboxes | Powered by JetHome®