On Thu, 30 Apr 2009, 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 */ > Yes, this is the correct interpretation. This "bug" has been on my list of things to fix since David Binderman reported it to me earlier. The fix has waited because the current code is correct but difficult to read. The fix I have been planning is STp->use_pf = (STp->use_pf ^ USE_PF) | PF_TESTED; This is a little more explicit in showing that we want to flip the bit masked by USE_PF and tell that we have tried both alternatives. I can make a patch later today or tomorrow. Thanks, Kai -- 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