Re: [Yaffs] yaffs handle chunk error calling

Top Page
Attachments:
Message as email
+ (text/plain)
Delete this message
Reply to this message
Author: Xiaoguang Chen
Date:  
To: Charles Manning
CC: yaffs@lists.aleph1.co.uk
Subject: Re: [Yaffs] yaffs handle chunk error calling
Hi, Charles
Thanks for your explanation.
I used Sumsung onenand whose page size is 4KB and it can correct up to 4 bits in one sector(521B), onenand driver reports -EUCLEAN if there is less than 4 bit errors (1 ,2,3,4). It doesn’t
Distinguish how many bits error happened. I think it is a good idea to split the report procedure.


thanks
Xiaoguang


-----Original Message-----
From: [mailto:yaffs-bounces@lists.aleph1.co.uk] On Behalf Of Charles Manning
Sent: 2011年9月21日 13:22
To:
Subject: Re: [Yaffs] yaffs handle chunk error calling

On Tuesday 20 September 2011 14:47:08 Xiaoguang Chen wrote:
> Hi, Yaffs friends
> I have one question about yaffs_handleChunkError function calling code
> logic. In yaffs_ReadChunkWithTagsFromNAND:
>
>          if (tags &&
>             tags->eccResult > YAFFS_ECC_RESULT_NO_ERROR) {
>
>                   yaffs_BlockInfo *bi;
>                    bi = yaffs_GetBlockInfo(dev,
> chunkInNAND/dev->param.nChunksPerBlock); yaffs_HandleChunkError(dev, bi);
>          }
>
> Why use "tags->eccResult > YAFFS_ECC_RESULT_NO_ERROR " instead of
> "tags->eccResult > YAFFS_ECC_RESULT_FIXED" ?
>
> If the flash has some one bit errors and these errors are corrected, 
> Tags->eccResult will be set to YAFFS_ECC_RESULT_FIXED. in this condition,
> there should be no ecc problem. Why need to call yaffs_HandleChunkError ?


We do this because we want to handle errors on the block before they start
corrupting data.
>
> The problem is : if call yaffs_HandleChunkError, bi->chunkErrorStrikes++
> will be executed. After chunkErrorStrikes > 3, the block will be retired.
> It will be marked as bad. But the block is not really bad. We can still use
> it since it only has 4 times of fixed ECC error happened.


If you have 1-bit correcting ECC then the above policy handles things well
because single bit errors indicate that a block might have started going bad
and we want to retire it before the block starts corrupting data.

If you have multi-bit correcting data then it makes sense to modify what the
driver reports.

eg if you have 4 bit correcting then something like this makes sense:
For 0,1 or 2 errors report NO ERROR.
For 3 or 4 errors report FIXED.


-- Charles


_______________________________________________
yaffs mailing list

http://lists.aleph1.co.uk/cgi-bin/mailman/listinfo/yaffs