Re: [Yaffs] android boot issue with latest git source

Top Page
Attachments:
Message as email
+ (text/plain)
Delete this message
Reply to this message
Author: Wills, Jordan
Date:  
To: Sudeep K N
CC: yaffs@lists.aleph1.co.uk
Subject: Re: [Yaffs] android boot issue with latest git source
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: ; 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