Re: [Yaffs] Problem with Yaffs on Routerboard RB112 and kern…

Top Page
Attachments:
Message as email
+ (text/plain)
Delete this message
Reply to this message
Author: Giampaolo Mancini
Date:  
To: David Goodenough
CC: yaffs
Subject: Re: [Yaffs] Problem with Yaffs on Routerboard RB112 and kernel2.6.19
Hi David,

David Goodenough wrote:
> Mancho,
>
> Can you package this up raise a ticket on Trac for OpenWrt and attach
> the fix so that Florian can apply it.


Attached a new 510-Yaffs to #1779 as yaffs_compat_modify.patch:

https://dev.openwrt.org/attachment/ticket/1779/yaffs_compat_and_modify.patch.

See also the comment:

https://dev.openwrt.org/ticket/1779#comment:10

Guys, thank you for your support.

mancho.

> David
>
> On Wednesday 06 June 2007, Giampaolo Mancini wrote:
>> Hi Ian,
>> it works! Now i can edit/modify the files without any problem.
>>
>> Do you still need some debugging on this?
>>
>> Many thaks!
>>
>> Bests,
>> mancho.
>>
>> Ian McDonnell wrote:
>>> Giampaolo,
>>>
>>> On Wednesday 06 June 2007 07:14, Giampaolo Mancini wrote:
>>>>> There are some patches
>>>>> committed by David on the openwrt svn but apparently there
>>>>> are still a few problems. I now have backward
>>>>> compatibility, since I can read the old nand/yaffs data but
>>>>> I am unable to update any data after a first write to the
>>>>> device.
>>>> I'm also having the very same behavior on a RB153 with OpenWRT
>>>> trunk's YAFFS: i can't modify any file on the YAFFS filesystem
>>>> but moving the file to /tmp, editing there and then moving
>>>> back to YAFFS filesystem does the job.
>>> Try applying this patch to yaffs_mtdif1.c. There is a problem
>>> when compiled with the CONFIG_YAFFS_9BYTE_TAGS option --
>>> the line that sets 'shouldbeFF' to all ones, clobbers the
>>> deleted status byte in pt1. This is surely going to mess-up file
>>> updates.
>>>
>>> This patch includes some other tweaks for (missing) stats and
>>> message formating that are in my working version which I diff'ed
>>> with http://users.actrix.co.nz/manningc/yaffs2-ian-20070523.tgz
>>> to generate the patch. It's the change for 'chunkDeleted' that
>>> you need.
>>>
>>> -Ian
>>>
>>> --- yaffs_mtdif1.c-20070523    2007-05-17 11:52:39.000000000 -0400
>>> +++ yaffs_mtdif1.c    2007-06-06 12:45:03.000000000 -0400
>>> @@ -102,6 +102,8 @@
>>>      compile_time_assertion(sizeof(yaffs_PackedTags1) == 12);
>>>      compile_time_assertion(sizeof(yaffs_Tags) == 8);

>>>
>>> +    dev->nPageWrites++;
>>> +
>>>      yaffs_PackTags1(&pt1, etags);
>>>      yaffs_CalcTagsECC((yaffs_Tags *)&pt1);

>>>
>>> @@ -178,6 +180,8 @@
>>>      int retval;
>>>      int deleted;

>>>
>>> +    dev->nPageReads++;
>>> +
>>>      memset(&ops, 0, sizeof(ops));
>>>      ops.mode = MTD_OOB_AUTO;
>>>      ops.len = (data) ? chunkBytes : 0;
>>> @@ -237,7 +241,7 @@
>>>      deleted = !pt1.deleted;
>>>      pt1.deleted = 1;
>>>  #else
>>> -    (void) deleted; /* not used */
>>> +    deleted = (yaffs_CountBits(((__u8 *)&pt1)[8]) < 7);
>>>  #endif

>>>
>>>      /* Check the packed tags mini-ECC and correct if necessary/possible.
>>> @@ -250,7 +254,8 @@
>>>      case 1:
>>>          /* recovered tags-ECC error */
>>>          dev->tagsEccFixed++;
>>> -        eccres = YAFFS_ECC_RESULT_FIXED;
>>> +        if (eccres == YAFFS_ECC_RESULT_NO_ERROR)
>>> +            eccres = YAFFS_ECC_RESULT_FIXED;
>>>          break;
>>>      default:
>>>          /* unrecovered tags-ECC error */
>>> @@ -265,13 +270,8 @@
>>>      yaffs_UnpackTags1(etags, &pt1);
>>>      etags->eccResult = eccres;

>>>
>>> -    /* Set deleted state.
>>> -     */
>>> -#ifndef CONFIG_YAFFS_9BYTE_TAGS
>>> +    /* Set deleted state */
>>>      etags->chunkDeleted = deleted;
>>> -#else
>>> -    etags->chunkDeleted = (yaffs_CountBits(((__u8 *)&pt1)[8]) < 7);
>>> -#endif
>>>      return YAFFS_OK;
>>>  }

>>>
>>> @@ -306,7 +306,7 @@
>>>
>>>      if (oobavail < YTAG1_SIZE) {
>>>          yaffs_trace(YAFFS_TRACE_ERROR,
>>> -            "mtd device has only %d bytes for tags, need %d",
>>> +            "mtd device has only %d bytes for tags, need %d\n",
>>>              oobavail, YTAG1_SIZE);
>>>          return YAFFS_FAIL;
>>>      }

>
>
>
> _______________________________________________
> yaffs mailing list
>
> http://lists.aleph1.co.uk/cgi-bin/mailman/listinfo/yaffs
>



-- 
Giampaolo "mancho" Mancini
    Wi-Next Labs
mailto:giampaolo.mancini@winext.eu
mobile:(+39)3484148682
http://www.winext.eu