Re: [Yaffs] YAFFS readdir rewind causing endless listings

Top Page
Attachments:
Message as email
+ (text/plain)
+ (text/html)
Delete this message
Reply to this message
Author: Yang Chen
Date:  
To: Andrew McKay, Charles Manning
CC: yaffs
Subject: Re: [Yaffs] YAFFS readdir rewind causing endless listings
I have tried Andrew's fix. It worked. And I also tried to execute "rm -rf
some_folder" in my yaffs2 partition, but I didn't see issues. Anybody knows
what's that issue "rewind" fixed ? Thanks.

Regards,
Yang

2008/11/5 Yang Chen <>

> Andrew,
>
> Thanks for your info. I will try the fix. Btw , have you tested below
> fix with more cases?
> I searched archived mails and found an old mailloop regarding the rewind
> change . Looks like that was for rm -rf issues of busybox ...
> http://aleph1.co.uk/lurker/message/20051105.003401.0b8fec14.en.html
> If we removed the "offset = 2;" , will it cause above issue again ? Or do
> we still need above workaround for the rm -rf issue for now ...As i
> understood , it was more like a application issue e.g busybox (i didn't
> check if bb has supported rewind now) , rather than the relatively low level
> file system issue.
>
> Charles,
>
> Appreciate your comments !
>
>
> Regards,
> Yang
>
>
> 2008/11/5 Andrew McKay <>
>
> yang chen wrote:
>>
>>> McKay,All
>>>
>>> Any new update on this issue? Thanks. I just came across similar issue
>>> in which readdir(..) can't return NULL...causing endless loop...
>>>
>>>
>> I just stopped the directory from rewinding if it was read or written. It
>> would cause a loop where it would continuously rewind if there were more
>> entries than could be buffered in a single read.
>>
>> Here's a patch. Not sure if it'll apply directly to your source, but
>> should give you the idea of how I fixed it.
>>
>> --- yaffs_fs.c  21 Dec 2007 00:24:37 -0000      1.1.8.1
>> +++ yaffs_fs.c  5 Sep 2008 19:36:29 -0000       1.1.8.1.24.1
>> @@ -960,7 +960,7 @@
>>           readdir, rewind to after the 2 canned entries. */

>>
>>        if (f->f_version != inode->i_version) {
>> -               offset = 2;
>> +               //offset = 2;  //ARG!!! This is causing readdir to
>> infinitely repeat directory listings.  Don't Rewind!

>>
>>                f->f_pos = offset;
>>                f->f_version = inode->i_version;
>>        }

>>
>> Andrew McKay
>> Iders Inc.
>>
>
>