I am experiencing some data loss when writing to a partition with an old version of yaffs and then mounting with a new version. I have been using the 2.6.32 branch of the android omap kernel (git:// android.git.kernel.org/kernel/omap.git), which has a version of yaffs2 patched into it. It looks like it is based off this commit on the yaffs2 repository master branch: commit 3a263f2d5074abcd6129dff4f1bd1a0ab45a04da Author: charles Date: Wed Sep 9 03:03:01 2009 +0000 Rationalise stats gathering for nand access. Does not instrument mounting. I am now trying the same 2.6.32 kernel with relatively recent yaffs2 code patched in: commit 7715144e7d55b2854f907001c432348e4caa5954 Author: Charles Manning Date: Wed Apr 13 10:20:06 2011 +1200 yaffs: Handle attribute size query correctly. If getxattr() is passed a buffer size of zero then this is a size query. Return the size of the attribute without copying it out. Signed-off-by: Charles Manning When I remount a nand partition that I originally wrote to with the old yaffs2 kernel, using the new yaffs2 kernel, the partition has no data. Additionally, when I boot back into the old kernel again and remount the data is still missing: root@homebase:~# mount -t yaffs2 /dev/mtdblock5 /mnt/card/ yaffs: dev is 32505861 name is "mtdblock5" yaffs: passed flags "" yaffs: Attempting MTD mount on 31.5, "mtdblock5" yaffs_read_super: isCheckpointed 0 root@homebase:~# ls -l /mnt/card/ drw-rw-rw- 1 root root 2048 Jun 22 19:34 lost+found root@homebase:~# cat /dev/urandom > /mnt/card/testdata ^C root@homebase:~# cat /proc/yaffs YAFFS built:May 26 2011 16:35:02 $Id$ $Id$ Device 0 "system_a" startBlock......... 0 endBlock........... 785 totalBytesPerChunk. 2048 nDataBytesPerChunk. 2048 chunkGroupBits..... 0 chunkGroupSize..... 1 nErasedBlocks...... 767 nReservedBlocks.... 5 blocksInCheckpoint. 0 nTnodesCreated..... 100 nFreeTnodes........ 13 nObjectsCreated.... 200 nFreeObjects....... 95 nFreeChunks........ 49120 nPageWrites........ 1185 nPageReads......... 1186 nBlockErasures..... 1 nGCCopies.......... 0 garbageCollections. 0 passiveGCs......... 0 nRetriedWrites..... 0 nShortOpCaches..... 10 nRetireBlocks...... 0 eccFixed........... 0 eccUnfixed......... 0 tagsEccFixed....... 0 tagsEccUnfixed..... 0 cacheHits.......... 0 nDeletedFiles...... 0 nUnlinkedFiles..... 0 nBackgroudDeletions 0 useNANDECC......... 1 isYaffs2........... 1 inbandTags......... 0 root@homebase:~# ls -l /mnt/card/ drw-rw-rw- 1 root root 2048 Jun 22 19:34 lost+found -rw-r--r-- 1 root root 2420736 Jun 22 19:34 testdata root@homebase:~# umount /dev/mtdblock5 save exit: isCheckpointed 1 save exit: isCheckpointed 1 root@homebase:~# sync root@homebase:~# mount -t yaffs2 /dev/mtdblock5 /mnt/card/ yaffs: dev is 32505861 name is "mtdblock5" rw yaffs: passed flags "" root@homebase:~# cat /proc/yaffs Multi-version YAFFS built:Jun 22 2011 15:11:04 Device 0 "system_a" start_block.......... 0 end_block............ 785 total_bytes_per_chunk 2048 use_nand_ecc......... 1 no_tags_ecc.......... 0 is_yaffs2............ 1 inband_tags.......... 0 empty_lost_n_found... 1 disable_lazy_load.... 0 refresh_period....... 500 n_caches............. 10 n_reserved_blocks.... 5 always_check_erased.. 0 data_bytes_per_chunk. 2048 chunk_grp_bits....... 0 chunk_grp_size....... 1 n_erased_blocks...... 785 blocks_in_checkpt.... 0 n_tnodes............. 0 n_obj................ 4 n_free_chunks........ 50304 n_page_writes........ 0 n_page_reads......... 0 n_erasures........... 1 n_gc_copies.......... 0 all_gcs.............. 1 passive_gc_count..... 1 oldest_dirty_gc_count 0 n_gc_blocks.......... 0 bg_gcs............... 0 n_retired_writes..... 0 n_retired_blocks..... 0 n_ecc_fixed.......... 0 n_ecc_unfixed........ 0 n_tags_ecc_fixed..... 0 n_tags_ecc_unfixed... 0 cache_hits........... 0 n_deleted_files...... 0 n_unlinked_files..... 1 refresh_count........ 1 n_bg_deletions....... 0 root@homebase:~# ls /mnt/card/ lost+found root@homebase:~# root@homebase:~# mount -t yaffs2 /dev/mtdblock5 /mnt/card/ yaffs: dev is 32505861 name is "mtdblock5" yaffs: passed flags "" yaffs: Attempting MTD mount on 31.5, "mtdblock5" yaffs_read_super: isCheckpointed 0 root@homebase:~# ls -l /mnt/card/ drw-rw-rw- 1 root root 2048 Jun 22 20:02 lost+found root@homebase:~# cat /proc/yaffs YAFFS built:May 26 2011 16:35:02 $Id$ $Id$ Device 0 "system_a" startBlock......... 0 endBlock........... 785 totalBytesPerChunk. 2048 nDataBytesPerChunk. 2048 chunkGroupBits..... 0 chunkGroupSize..... 1 nErasedBlocks...... 785 nReservedBlocks.... 5 blocksInCheckpoint. 0 nTnodesCreated..... 100 nFreeTnodes........ 100 nObjectsCreated.... 200 nFreeObjects....... 96 nFreeChunks........ 50304 nPageWrites........ 0 nPageReads......... 0 nBlockErasures..... 0 nGCCopies.......... 0 garbageCollections. 0 passiveGCs......... 0 nRetriedWrites..... 0 nShortOpCaches..... 10 nRetireBlocks...... 0 eccFixed........... 0 eccUnfixed......... 0 tagsEccFixed....... 0 tagsEccUnfixed..... 0 cacheHits.......... 0 nDeletedFiles...... 0 nUnlinkedFiles..... 1 nBackgroudDeletions 0 useNANDECC......... 1 isYaffs2........... 1 inbandTags......... 0 root@homebase:~# Are there some versions in which compatibility is not guaranteed? Is there a compatibility mode I should be using or an upgrade utility? I also tried mounting under the new yaffs kernel with "-t yaffs" and got the same result. Any advice or guidelines for mounting the old partitions with the new code would be appreciated, thanks.