Re: [Yaffs] Bad block management

Top Page
Attachments:
Message as email
+ (text/plain)
Delete this message
Reply to this message
Author: Aras Vaichas
Date:  
CC: yaffs
Subject: Re: [Yaffs] Bad block management
Jacob Dall wrote:
> Hello Aras,
>
> At 02:37 31-01-2005, you wrote:
>
>> Jacob Dall wrote:
>>
>>>>> I've a few questions regarding why yaffs' bad block management is
>>>>> designed
>>>>> the way it is.
>>>>> I've an issue with some of my devices - bad blocks is increased very
>>>>> rapidly. Beyond the fact that it's due to ECC read errors, I'm yet to
>>>>> discover the root of the problem.
>>>>
>>>>
>>>> What do you mean by rapidly? I assume it is far worse than either
>>>> of these!
>>>
>>> Yes, it's far worse. Imagine having a system that, when looked at,
>>> has 2 bad blocks. One hour later it has over 500!!
>>> And this in a system that every 15 second writes approc. 10KB of data
>>
>>
>> I had exactly this same problem and it was fixed by using the proper
>> ECC settings but I am using the kernel module version of YAFFS as
>> opposed to the "direct" version.
>
>
> I'm a bit curious; what settings did you change to achieve 'proper ECC
> settings'?


Since I was backporting the MTD drivers (2.6.x) for my (technically)
unsupported version (2.4.x), I had to make a small patch for where it checked
the kernel version and set "eccbytes" to the correct value. After making this
change, my system had no more ECC problems and I was able to read/write
multi-megabyte files without losing memory.

If you look at the two links that I posted earlier ...

>> http://www.aleph1.co.uk/pipermail/yaffs/2004q4/000854.html
>> http://www.aleph1.co.uk/pipermail/yaffs/2004q4/000868.html


they will explain it all.

Here is an annotated version of my YAFFS Makefile in case it might be useful.
It might not be 100% correct, but it works.

USE_MTD = -DCONFIG_YAFFS_MTD_ENABLED
USE_NANDECC = -DCONFIG_YAFFS_USE_NANDECC
ENABLE_SHORT_NAMES_IN_RAM = -DCONFIG_SHORT_NAMES_IN_RAM

YAFFS_CONFIGS = $(USE_RAM_FOR_TEST) $(USE_MTD) $(USE_GENERIC_RW) 
$(USE_HEADER_FILE_SIZE) $(IGNORE_CHUNK_ERASED) $(IGNORE_WRITE_VERIFY) \
                 $(ENABLE_SHORT_NAMES_IN_RAM) $(USE_NANDECC) $(USE_OLD_MTD) 
$(USE_WRONGECC) \
                 $(ENABLE_YAFFS_MTD_24BACKPORT)


O_TARGET := yaffs.o
obj-y := yaffs_fs.o yaffs_guts.o yaffs_ramem.o yaffs_mtdif.o yaffs_ecc.o
obj-m := $(O_TARGET)
EXTRA_CFLAGS += $(YAFFS_CONFIGS)
include $(TOPDIR)/Rules.make


regards,

Aras