On Thursday 23 June 2011 08:05:21 Mark Whitney wrote: > 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. This is odd. These should be compatible. -- Charles