Hi Ian & all, I am using ARM9 based board with 512MB large page(2K page, 256K Block) nand flash. The linux kernel version is 2.6.14 with yaffs source on date July 12, 2007 from http://www.aleph1.co.uk/cgi-bin/viewcvs.cgi/yaffs2/. I am using the NAND controller present in the SoC, it broadly provide a interface over the NAND SMI interface. Instead of reading/writing on the SMI lines, we read/write to/from the FIFO buffer(length 512byte) of NAND Controller. All the command/data transfer/status can be initiated/read from the controller registers. Using NAND Software ECC for data correction. yaffs configuration is as follows: CONFIG_YAFFS_FS=y CONFIG_YAFFS_YAFFS1=y # CONFIG_YAFFS_DOES_ECC is not set CONFIG_YAFFS_YAFFS2=y CONFIG_YAFFS_AUTO_YAFFS2=y # CONFIG_YAFFS_DISABLE_LAZY_LOAD is not set CONFIG_YAFFS_CHECKPOINT_RESERVED_BLOCKS=10 # CONFIG_YAFFS_DISABLE_WIDE_TNODES is not set # CONFIG_YAFFS_ALWAYS_CHECK_CHUNK_ERASED is not set CONFIG_YAFFS_SHORT_NAMES_IN_RAM=y # CONFIG_JFFS_FS is not set MTD configuration # # NAND Flash Device Drivers # CONFIG_MTD_NAND=y CONFIG_MTD_NAND_VERIFY_WRITE=y CONFIG_MTD_NAND_MM6PLUS=y CONFIG_MTD_NAND_IDS=y # CONFIG_MTD_NAND_DISKONCHIP is not set # CONFIG_MTD_NAND_NANDSIM is not set In the nand flash, there are 5 partition with last partition as ~450MB. The kernel boots up from 2nd partition which have readonly yaffs2 image as rootfs. After bootup, we are mounting this ~450MB partition as yaffs2 and do read/write operation as needed. To ensure the successful completion of a page write, I am using MTD write verify. Until now, all read/write/mount/unmount were working fine. 1) Now on unmount the ~450MB partition, on one particular block the NAND verify failed, but the YAFFS did not write the data of the block into some other block. And during the next mount, it took time more(15second) than expected (~1sec). Which looks like check-pointing failed during last unmount, may be due to the NAND write verify failure during unmount. Is it the correct behavior? 2) It is found that the block on which NAND verify failed, is actually bad, as I am unable to erase/write on that block using nand-utils or the custom bootloader commands. NAND Controller shows status as success after erase/write. But after the erase, all bytes on the 1st, 3rd, 5th, ... page are 0xFF. and all bytes on the 2nd, 4th, 6th,... page are 0x00. Similarily, writing data pattern on any of the pages in that block have no effect on the page data. This also means that, I cannot mark the block bad, as the first page is all 0xff and nand write on the page has no effect on page data. So, it is ending up in a situation, where the block will never be marked bad, and the write will always fail (due to MTD NAND verify) on the block pages. Does anybody faces similar problem, please suggest any solution. Will enabling the yaffs option "CONFIG_YAFFS_ALWAYS_CHECK_CHUNK_ERASED=y" solve the issue. Will it make the erase more slow? All suggestions/comments are welcome. Thanks, Raj Kumar Yadav