On Tue, 2007-11-20 at 20:17 +0300, Vladislav Bolkhovitin wrote: > James Bottomley wrote: > > On Tue, 2007-11-20 at 19:15 +0300, Vladislav Bolkhovitin wrote: > > > >>James Bottomley wrote: > >> > >>>I'm not sure your conclusions necessarily follow your data. What was > >>>the reason for the TASK ABORTED (I'd guess QErr settings, right)? > >> > >>It was my desire/curiosity during tests of SCST (http://scst.sf.net), > >>when it working with several initiators with different transports over > >>the same set of devices, each of them having with TAS bit in the control > >>mode page set. According to SAM, in this case TASK ABORTED status can be > >>returned at any time, similarly to QUEUE FULL, i.e. IMHO such command > >>just should be retried. But QUEUE FULL status handled well, but TASK > >>ABORTED leads to filesystem corruption. > > > > So this is with a soft target implementation ... so it could be an > > ordering issue inside the target that's causing the filesystem > > corruption on error. > > Target offers no ordering guarantees for SIMPLE commands and frankly > says that to initiator via QUEUE ALGORITHM MODIFIER value 1 in the > control mode page. As we know, initiator doesn't use ORDERED tags (and > it really doesn't use them according to the logs), so if it's an > ordering issue, it's at the initiator's side. > > > if you specifically set TAS=1 you're giving up the right to know what > > caused the command termination. With insufficient information, it's > > really unsafe to simply retry, which is why the mid layer just returns > > TASK ABORTED as an error. If you set TAS=0 we'll get a check > > condition/unit attention explaining what happened (usually commands > > cleared by another initiator) and we'll explicitly do the right thing > > based on the sense data. > > But having TAS=1 is legal, right? So it should be handled well. If > TAS=0, TASK ABORTED can't be returned, it would be illegal. So, TASK > ABORTED status can only be returned with TAS=1. Driving with your handbrake on is legal too ... that doesn't mean you should do it ... and it certainly doesn't give you a legitimate complaint against the manufacturer of your car for excessive brake pad wear. We handle TASK ABORTED as well as we can (by failing it). For better handling set TAS=0 and we'll handle the individual cases according to the sense codes. > > One of my test suites has an initiator which randomly spits errors. > > I've yet to see it cause an error that an ext3 journal can't recover > > from. So, if there's a genuine problem we need a nice test case to pass > > to the filesystem people. > > If you need a clear testcase (IMHO, in this case it isn't needed, > because it's clear without it), I can prepare a patch for SCST to > randomly return TASK ABORTED status. > > You can get the latest version of SCST and the target drivers using SVN: > > $ svn co https://scst.svn.sourceforge.net/svnroot/scst There's no real need to bother with setting all this up ... a simple initiator modification randomly to return TASK ABORTED should suffice. James - To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html