Re: [Yaffs] a question about yaffs_hold_space

Top Page
Attachments:
Message as email
+ (text/plain)
Delete this message
Reply to this message
Author: Charles Manning
Date:  
To: chenjie
CC: YAFFS ML
Subject: Re: [Yaffs] a question about yaffs_hold_space
I don't think that will work.

Consider the case when multiple processes simultaneously write to the
file system. If they all get past write_begin(), but have not yet got
through write_end() then yaffs has committed to storing the data even
if there is no space available.

I do however see your point. An overwrite might be refused even though
it really does not use any space.

I will see if there are any page buffer flags we can use to determine
if the page has already been written.

That would allow us to do something like:

if (page has previously been written)
return OK; /* it is an overwrite so it does not consume space */
else
return n_free_chunks > commit_count; /* Is there space to take more data */


On Mon, Aug 3, 2015 at 9:57 PM, chenjie <> wrote:
>
>
> Hello
>         I think this is no need, just "return (n_free_chunks > 0) ? 1 : 0;" is OK.

>
>         if not , we can not overwrite a file with an existent file
> when the chunk was less than 20.

>
>         What do you think ?

>
>
> Thanks you
>
> Regards
>
> chenjie
>
>
>
>
>
>
>
>
>
> On 2015/7/31 6:13, Charles Manning wrote:
>> The purpose of yaffs_hold_space() is to support the write_begin VFS method.
>>
>> write_begin asks the file system to commit enough space to do the actual write in write_end.
>>
>> Strictly speaking this should really be handled with counter of committed space that is incremented on every write_begin and decremented on every write_end.
>>
>> However, it is workable to just not expect there to be more than n writes in progress at a time. n=20 seems rather conservative.
>>
>> -- Charles
>>
>>
>> On Thu, Jul 30, 2015 at 3:04 PM, chenjie < <mailto:chenjie6@huawei.com>> wrote:
>>
>>
>>     Hi:
>>     why the yaffs_hold_space reserved 20 chunk?
>>             return (n_free_chunks > 20) ? 1 : 0;

>>
>>
>>
>>
>
>