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
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.
>