I think it is because ECC can correct a 1 bit error. The yaffs_isBlockBad function doesn't bother to do ECC so it is possible that there is a 1 bit error in the block status byte. Counting the bits < 7 implies that 2 bits are bad & there is no chance that ECC will fix it.
Side note - if what I say is correct, perhaps the tags should be ECC fixed (if bits < 8) & then checked against 0xFF, otherwise it would be possible for the block status byte to have a single bit error, but also other bytes of the tag to have errors - which would also invalidate the ECC check?
Ie,
if (countBits < 7)
return 1;
else
if (countBits != 0xFF)
{
ecc_correct_tags
if (corrected_status != 0xFF)
}
Cheers
Brad
> -----Original Message-----
> From: Jim Muchow [mailto:james.muchow@qlogic.com]
> Sent: Wednesday, 11 June 2003 4:20 a.m.
> To: yaffs@toby-churchill.org
> Subject: Block Status Question
>
>
> In yaffs_IsBlockBad() a test is made for the number of bits
> in each byte. The original test for 0xFF is #if'd out.
>
> The test for failure is less than 7. Shouldn't this be 8?
> What am I missing?
>
> JM
>
>
> --------------------------------------------------------------
> -------------------------
> This mailing list is hosted by Toby Churchill open software
(
www.toby-churchill.org). If mailing list membership is no longer wanted you can remove yourself from the list by
sending an email to
yaffs-request@toby-churchill.org with the text "unsubscribe"
(without the quotes) as the subject.
---------------------------------------------------------------------------------------
This mailing list is hosted by Toby Churchill open software (
www.toby-churchill.org).
If mailing list membership is no longer wanted you can remove yourself from the list by
sending an email to
yaffs-request@toby-churchill.org with the text "unsubscribe"
(without the quotes) as the subject.