Am 29. Juli 2020 17:44:42 MESZ schrieb James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx>: >On Wed, 2020-07-29 at 17:40 +0200, Martin Kepplinger wrote: >> On 29.07.20 16:53, James Bottomley wrote: >> > On Wed, 2020-07-29 at 07:46 -0700, James Bottomley wrote: >> > > On Wed, 2020-07-29 at 10:32 -0400, Alan Stern wrote: >[...] >> > > > This error report comes from the SCSI layer, not the block >> > > > layer. >> > > >> > > That sense code means "NOT READY TO READY CHANGE, MEDIUM MAY HAVE >> > > CHANGED" so it sounds like it something we should be >> > > ignoring. Usually this signals a problem, like you changed the >> > > medium manually (ejected the CD). But in this case you can tell >> > > us to expect this by setting >> > > >> > > sdev->expecting_cc_ua >> > > >> > > And we'll retry. I think you need to set this on all resumed >> > > devices. >> > >> > Actually, it's not quite that easy, we filter out this ASC/ASCQ >> > combination from the check because we should never ignore medium >> > might have changed events on running devices. We could ignore it >> > if we had a flag to say the power has been yanked (perhaps an >> > additional sdev flag you set on resume) but we would still miss the >> > case where you really had powered off the drive and then changed >> > the media ... if you can regard this as the user's problem, then we >> > might have a solution. >> > >> > James >> > >> >> oh I see what you mean now, thanks for the ellaboration. >> >> if I do the following change, things all look normal and runtime pm >> works. I'm not 100% sure if just setting expecting_cc_ua in resume() >> is "correct" but that looks like it is what you're talking about: >> >> (note that this is of course with the one block layer diff applied >> that Alan posted a few emails back) >> >> >> --- a/drivers/scsi/scsi_error.c >> +++ b/drivers/scsi/scsi_error.c >> @@ -554,16 +554,8 @@ int scsi_check_sense(struct scsi_cmnd *scmd) >> * so that we can deal with it there. >> */ >> if (scmd->device->expecting_cc_ua) { >> - /* >> - * Because some device does not queue unit >> - * attentions correctly, we carefully check >> - * additional sense code and qualifier so as >> - * not to squash media change unit attention. >> - */ >> - if (sshdr.asc != 0x28 || sshdr.ascq != 0x00) >> { >> - scmd->device->expecting_cc_ua = 0; >> - return NEEDS_RETRY; >> - } >> + scmd->device->expecting_cc_ua = 0; >> + return NEEDS_RETRY; > >Well, yes, but you can't do this because it would lose us media change >events in the non-suspend/resume case which we really don't want. >That's why I was suggesting a new flag. > >James also if I set expecting_cc_ua in resume() only, like I did? -- Martin Kepplinger xmpp: martink@xxxxxxxxx Sent from mobile.