> 2024年6月18日 00:26,Benjamin Block <bblock@xxxxxxxxxxxxx> 写道: > > Hey, > > On Sat, Jun 15, 2024 at 12:03:47AM +0800, Li Feng wrote: >> There is a scenario where a large number of discard commands >> are issued when the iscsi initiator connects to the target >> and then performs a session rescan operation. > > Is this with just one specific target implementation? This sounds like a > broken/buggy target, or is there a reason why this happens in general? > > And broken target sounds like device quirk, rather than impacting every > possible target. (resend due to GMail HTML bounce) This is a common problem. Before sending a rescan, discard has been negotiated to UNMAP. After the rescan, there will be a short window for it to become WS16, and then it will immediately become UNMAP. However, during this period, a small amount of discard commands may become WS16, resulting in a strange problem. > >> There is a time >> window, most of the commands are in UNMAP mode, and some >> discard commands become WRITE SAME with UNMAP. >> >> The discard mode has been negotiated during the SCSI probe. If >> the mode is temporarily changed from UNMAP to WRITE SAME with >> UNMAP, IO ERROR may occur because the target may not implement >> WRITE SAME with UNMAP. Keep the discard mode stable to fix this >> issue. >> >> Signed-off-by: Li Feng <fengli@xxxxxxxxxx> >> --- >> drivers/scsi/sd.c | 7 ++++++- >> 1 file changed, 6 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c >> index f6c822c9cbd2..0165dc70a99b 100644 >> --- a/drivers/scsi/sd.c >> +++ b/drivers/scsi/sd.c >> @@ -2598,7 +2598,12 @@ static int read_capacity_16(struct scsi_disk *sdkp, struct scsi_device *sdp, >> if (buffer[14] & 0x40) /* LBPRZ */ >> sdkp->lbprz = 1; >> >> - sd_config_discard(sdkp, SD_LBP_WS16); >> + /* >> + * When the discard mode has been set to UNMAP, it should not be set to >> + * WRITE SAME with UNMAP. >> + */ >> + if (!sdkp->max_unmap_blocks) >> + sd_config_discard(sdkp, SD_LBP_WS16); >> } >> >> sdkp->capacity = lba + 1; > > -- > Best Regards, Benjamin Block / Linux on IBM Z Kernel Development > IBM Deutschland Research & Development GmbH / https://www.ibm.com/privacy > Vors. Aufs.-R.: Wolfgang Wendt / Gesch?ftsf?hrung: David Faller > Sitz der Ges.: B?blingen / Registergericht: AmtsG Stuttgart, HRB 243294