lkml.org 
[lkml]   [2013]   [Sep]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
SubjectRe: [PATCH v6] fat: additions to support fat_fallocate
From
2013/9/24, OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>:
> Namjae Jeon <linkinjeon@gmail.com> writes:
>
>>>> We considered after your advice before. we reach for the conclusion
>>>> that use this method.
>>>> because, Cluster is already allocated in fat fallocate and
>>>> when we write with radom offset over i_size on fallocated region, It
>>>> will be hit by fat cache in fat_bmap of get_block, which mean buffer
>>>> is not set to new.
>>>
>>> Hm, how does it hit to fat cache? I think fat_alloc_clusters() and
>>> fat_chain_add() doesn't update fat cache, right? I.e. initial write
>>> after fallocate() should not hit fat cache over i_size?
>>
>> Ah.. Sorry for wrong reply. old memory make me confusing.
>> By allocating cluster in fat fallocate, when write, fat_bmap of
>> get_block return physical sector number.
>> So buffer is not set to new in _fat_get_block.
>>
>> When we fallocate with keep size on -> only clusters are added to the
>> fat chain calling fat_get_cluster(),and add the cluster to cluster
>> chain.
>> This doesn’t call fat_get_block() .
>
> Right.
>
>> Now when we try to write in the fallocated region in the
>> fat_write_begin() when it is called first time it checks that the
>> mismatch is present between the mmu_private and mmu_actual (i.e., the
>> file has pre-allocated blocks), and hence zero out the region ;
>> Since buffer_new() is not set for fallocated region by fat_get_block()
>> , we explicitly zero out the lseek'ed region using
>> “fat_zero_falloc_area” and normal write occurs beyond that,and i_size
>> is updated accordingly.
>
> Yes. So I'm saying fixing fat_get_block() would not be hard.
>
> For example, add new size the disk_size, totally 3 sizes - 1) i_size 2)
> mmu_private (aka, initialized size) 3) disk_size (aka, uninitialized
> size).
>
> When called fat_get_block(), it checks the region between mmu_private
> and disk_size. If block hits that region, block is uninitialized area,
> so return as buffer_new().
>
> Like this, I think it is not hard. Please consider like above example
> too.
Yes, I checked after change as your suggestion. it work fine.
I will post the updated patch soon.

Thanks. OGAWA.
>
> Thanks.
> --
> OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2013-09-26 13:41    [W:0.062 / U:0.728 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site