On (30/04/09 23:26), Al Viro wrote: > On Thu, Apr 30, 2009 at 10:08:44PM +0000, James Bottomley wrote: > > > Well, I know why (!STp->use_pf) is wrong: it would set USE_PF in an > > incredibly obscure fashon. The flag PF_TESTED seems to imply that it's > > a don't check this again type deal, and the if clause is looking for it > > not being set, hence I think the most likely thing to be done here is > > set the PF_TESTED flag. > > Not _set_ USE_PF; what's happening there is > ^= USE_PF | PF_TESTED; /* we know that PF_TESTED was not set */ > st.h:#define PF_TESTED 2 st.h:#define USE_PF 1 st.c:2963 if (cmdstatp->sense_hdr.sense_key == ILLEGAL_REQUEST && !(STp->use_pf & PF_TESTED)) '&& !(STp->use_pf & PF_TESTED)' means: STp->use_pf == 0 or STp->use_pf != ... 0010 (PF_TESTED). if == 0 STp->use_pf = !0 | 2 -> 3 if > PF_TESTED STp->use_pf = 0 | PF_TESTED -> PF_TESTED I need to think about > I think the most likely thing to be done here is set the PF_TESTED flag. Sergey. -- 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