On Monday 19 November 2007 05:40:01 Zavi wrote: > I'm trying to compile Yaffs direct on a 64-bit linux machine in the > emulation mode, using the Makefile in the direct sub-directory. > > 1. When I tried to run the default test in direct/dtest.c- > resize_stress_test_no_grow("/flash/flash",20); > > I got an error message: "yaffs_Tnode should be 32 but is 64." > When I change the following line > #define YAFFS_NTNODES_INTERNAL (YAFFS_NTNODES_LEVEL0 / 2) > to > #define YAFFS_NTNODES_INTERNAL (YAFFS_NTNODES_LEVEL0 / 4) > the test executes fine. Could the problem have something to do with > the fact my machine is 64-bit? I expect so. I don't think you should try to fix it like this though. The problem is most likely due to the tnode allocations not being wide enough to hold 64-bit pointers. Try this patch instead. --- yaffs_guts.c.old 2007-11-19 08:48:44.000000000 +1300 +++ yaffs_guts.c 2007-11-19 08:48:44.000000000 +1300 @@ -1146,6 +1146,10 @@ * Must be a multiple of 32-bits */ tnodeSize = (dev->tnodeWidth * YAFFS_NTNODES_LEVEL0)/8; + if(tnodeSize < sizeof(yaffs_Tnode)) + tnodeSize = sizeof(yaffs_Tnode); + + /* make these things */ newTnodes = YMALLOC(nTnodes * tnodeSize); > > 2. Even after this I'm still having problems with all the following > tests (last tests in dtest.c) - > long_test_on_path("/ram2k"); > long_test_on_path("/flash"); > simple_rw_test("/flash/flash"); > fill_disk_test("/flash/flash"); > rename_over_test("/flash"); > ... > > I keep getting a segmentation fault, and trying to trace it led me to > the return statement of yaffs_write for no apparent reason. > What could be the reason? can it be it's again related to the 64-bit issue? I think it was most likely caused by the way you tried to fix it. Try the above patch instead. Please get back to me as to how this works. -- CHarles