Charles,
I did attempt to use the patch-ker.sh script at first, but received erroneous output when I tried to run it. To be more specific:
./patch-ker.sh c ~/projects/android2.1/kernel
Resulted in the following output:
~/projects/android2.1/kernel/fs/Kconfig already mentions YAFFS, so we will not change it
~/projects/android2.1/kernel/fs/yaffs2 exists, not patching
When I first received this message, I assumed that it was because my kernel already had YAFFS implemented in it, albeit an out of date version of YAFFS. Should patch-ker.sh be able to update an old version of YAFFS as well as being able to add YAFFS to a kernel that doesn't already include it? If so, did I call patch-ker.sh incorrectly, or is there an issue with patch-ker.sh that caused it to not realize that my kernel/fs/yaffs was out of date?
Thanks,
Jordan Wills
-----Original Message-----
From: Charles Manning [
mailto:manningc2@actrix.gen.nz]
Sent: Monday, August 30, 2010 7:14 PM
To:
yaffs@lists.aleph1.co.uk
Cc: Wills, Jordan
Subject: Re: [Yaffs] android boot issue with latest git source
Glad to see you fixed this.
I strongly recommend that you do not use such a manual process to patch in a
new version of yaffs2. I suggest that you rather use the patch-ker.sh script.
rm -f /kernel-tree/fs/yaffs2
(or mv /kernel-tree/fs/yaffs2 /kernel-tree/fs/old-yaffs2)
cd new-yaffs2
./patch-ker.sh c /kernel-tree
-or-
./patch-ker.sh l /kernel-tree
c will copy, l will create symbolic links.
-- Charles
On Tuesday 31 August 2010 02:38:29 Wills, Jordan wrote:
> Sudeep,
> Thank you very much for your response. It is good to know that the issues
> we were observing were indeed to do a bug that has already been fixed. I
> am still seeing the problematic behavior I detailed in the second paragraph
> of my last post, though- after updating YAFFS2 to the latest version,
> attempting to mount what I know to be a properly written YAFFS2 partition
> results in that partition's contents being erased (save for the lost+found
> directory). Would you mind stepping me through your process for replacing
> the android yaffs2 code with the updated yaffs2 code? I will post the
> steps I take as well- if anything appears to be incorrect, please let me
> know.
>
> Get the latest YAFFS2 code:
> git clone git://www.aleph1.co.uk/yaffs2
>
> Copy the YAFFS2 code into the android kernel
> rm -r android2.1/kernel/fs/yaffs2
> cp -r yaffs2 android2.1/kernel/fs/
>
> Change the YAFFS2 makefile to be compatible with Android
> /* If anything in this process is wrong, my guess is it's this */
> cd android2.1/kernel/fs/yaffs2
> vim Makefile.kernel
> replace yaffs.o with yaffs2.o
> replace all occurrences of yaffs-y with yaffs2-y
> cp Makefile.kernel Makefile
>
> Compile the updated kernel
> cd android2.1/kernel
> export
> PATH=$PWD/../prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin:/opt/ldp-2.10/
>bin:$PATH make ARCH=arm CROSS_COMPILE=arm-eabi- uImage -j8
>
> When I load this image into my device, I am able to mount the OneNAND and
> copy my file system onto it. If I sync, unmount, and mount the file system
> again, though, the OneNAND shows that it contains only the LOST+FOUND
> directory.
>
> Thanks again for the help,
> Jordan Wills
>
>
> -----Original Message-----
> From: Sudeep K N [mailto:sudeepholla.maillist@gmail.com]
> Sent: Saturday, August 28, 2010 8:50 AM
> To: Wills, Jordan
> Cc: yaffs@lists.aleph1.co.uk; Kieran Cox; Lloyd, Jay; Charles Manning
> Subject: Re: [Yaffs] android boot issue with latest git source
>
> Jordon Wills,
>
> We too faced similar issues with data getting zeroed in the first two
> pages of a block following a bad block.
> Below is our analysis:
>
> The problem was the OOB length YAFFS2 was reading from MTD. On OneNand
> there was 20 bytes left free on OOB and YAFFS2 would request a read of
> 28 bytes of OOB. The OneNand MTD driver would read 20 bytes from the
> page requested and the rest 8 bytes from next page. If the next page
> happened to be marked bad we would get an ECC error which would cause
> the current page to be ignored as well. Hence the YAFFS2 mounted file
> would get corrupted (if this happens to be some of the core android
> jar files then it would result in android boot being stuck).
>
> The latest YAFFS2 code ignores reading the ecc portion of the struct
> (12 bytes) from OOB.(YAFFS2 any way does not calculate the ECC and is
> handled by the MTD driver). This way we only read 16 bytes from OOB which
> is less than oobavail and hence fixes the issue.
>
> Hope this helps you.
>
> Regards,
> Sudeep
>
> _______________________________________________
> yaffs mailing list
> yaffs@lists.aleph1.co.uk
> http://lists.aleph1.co.uk/cgi-bin/mailman/listinfo/yaffs