[Yaffs] Weirndess testing YAFFS2 with large files - md5sums …

Top Page
Attachments:
Message as email
+ (text/plain)
+ (text/html)
+ yaffs-30M-test (application/x-shellscript)
Delete this message
Reply to this message
Author: Peter Barada
Date:  
To: YAFFS
Subject: [Yaffs] Weirndess testing YAFFS2 with large files - md5sums don't match when copied.
I've run into a problem using the latest YAFFS code on linux-2.6.28-rc8
using today's YAFFS CVS code.

First off I had to modify the code in yaffs_write_begin to only call
grab_cache_pages_write_begin if the kernel version is newer than 2.6.28
since 2.6.28-rc8 does *not* have __grab_cache_page whereas 2.6.28 proper
does:

#if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 28)
    pg = grab_cache_page_write_begin(mapping, index, flags);
#else
    pg = __grab_cache_page(mapping, index);
#endif


Second I added "dev->nPageWrites++;" to
nandmtd2_ReadChunkWithTagsFromNAND and "dev->nPageReads++;" to
nandmtd2_WriteChunkWithTagsToNAND to track the number of page
read/writes.

With this code, I'm seeing 30MB files that are created have mismatching
checksums while running the attached test script. The output from the
test looks like:

OMAP-35x# . /media/mmcblk0p1/x                                                  
Create 30M file and get
md5sum                                                  
30720+0 records
in                                                              
30720+0 records
out                                                             
5b04790304a4221f1016a8c310da4746
somefile.1                                    
**>> Block 710 needs
retiring                                                   
**>> yaffs write required 2
attempts                                            
**>> Block 710
retired                                                          
Block 710 is in state 9 after gc, should be
erased                              
Calculate md5sums for copied
files                                              
5b04790304a4221f1016a8c310da4746
somefile.1                                    
5b04790304a4221f1016a8c310da4746
somefile.2                                    
5b04790304a4221f1016a8c310da4746
somefile.3                                    
8c8d5a7974d0b9da747bc59edd1991f6
somefile.4                                    
execute sync and recalculate
md5sums                                            
save exit: isCheckpointed
1                                                     
5b04790304a4221f1016a8c310da4746
somefile.1                                    
5b04790304a4221f1016a8c310da4746
somefile.2                                    
5b04790304a4221f1016a8c310da4746
somefile.3                                    
5b04790304a4221f1016a8c310da4746
somefile.4                                    
Delete one of the
files                                                         
5b04790304a4221f1016a8c310da4746
somefile.1                                    
5b04790304a4221f1016a8c310da4746
somefile.3                                    
3cb7668eb7760202d96970a6a9a3361f
somefile.4                                    
recopy the deleted
file                                                         
f6dba6d5af7a7a89481da1849035a417
somefile.1                                    
5b04790304a4221f1016a8c310da4746
somefile.3                                    
5b04790304a4221f1016a8c310da4746
somefile.4                                    
f6dba6d5af7a7a89481da1849035a417
somefile.7                                    
Creating test folder and some junk files in that
folder                         
1+0 records
in                                                                  
1+0 records
out                                                                 
ae1028b8d6aef86d020c9edfae29ca3d
junk.1                                        
md5sums of all files in test
folder                                             
ae1028b8d6aef86d020c9edfae29ca3d
junk.1                                        
ae1028b8d6aef86d020c9edfae29ca3d
junk.2                                        
ae1028b8d6aef86d020c9edfae29ca3d
junk.3                                        
ae1028b8d6aef86d020c9edfae29ca3d
junk.4                                        
ae1028b8d6aef86d020c9edfae29ca3d
junk.5                                        
ae1028b8d6aef86d020c9edfae29ca3d
junk.6                                        
ae1028b8d6aef86d020c9edfae29ca3d
junk.7                                        
ae1028b8d6aef86d020c9edfae29ca3d
junk.8                                        
ae1028b8d6aef86d020c9edfae29ca3d
junk.9                                        
execute sync and recalculate
md5sums                                            
save exit: isCheckpointed
1                                                     
ae1028b8d6aef86d020c9edfae29ca3d
junk.1                                        
ae1028b8d6aef86d020c9edfae29ca3d
junk.2                                        
ae1028b8d6aef86d020c9edfae29ca3d
junk.3                                        
ae1028b8d6aef86d020c9edfae29ca3d
junk.4                                        
ae1028b8d6aef86d020c9edfae29ca3d
junk.5                                        
ae1028b8d6aef86d020c9edfae29ca3d
junk.6                                        
ae1028b8d6aef86d020c9edfae29ca3d
junk.7                                        
ae1028b8d6aef86d020c9edfae29ca3d
junk.8                                        
ae1028b8d6aef86d020c9edfae29ca3d
junk.9                                        
Remove some files and recreate
them                                             
Calculate md5sums for 30M files
again                                           
f6dba6d5af7a7a89481da1849035a417
somefile.1                                    
5b04790304a4221f1016a8c310da4746
somefile.3                                    
5b04790304a4221f1016a8c310da4746
somefile.4                                    
1fee3f481bfa5cf3403efe9e481a0374
somefile.7                                    
execute sync and recalculate
md5sums                                            
save exit: isCheckpointed
1                                                     
a7b6ccfa31115aa75a0fdca07073293d
somefile.1                                    
5b04790304a4221f1016a8c310da4746
somefile.3                                    
1abb3d578e2d129341df26916090b869
somefile.4                                    
f6dba6d5af7a7a89481da1849035a417
somefile.7                                    
OMAP-35x# 


In the output, note that the md5sum of "somefile.*" should all match.

Anyone seen anything like this before? Test attached.