[Ocfs2-devel] [PATCH] Treat writes as new when holes span across page boundaries
Goldwyn Rodrigues
rgoldwyn at gmail.com
Tue Feb 22 11:02:13 PST 2011
Hi Joel,
On Tue, Feb 22, 2011 at 2:36 AM, Joel Becker <jlbec at evilplan.org> wrote:
> On Sun, Feb 20, 2011 at 11:44:05PM -0600, Goldwyn Rodrigues wrote:
>> >> > Secondly, ocfs2_should_read_blk() already checks for blocks past
>> >> > i_size and skips reading them. So if you are trying to avoid reading
>> >> > them, it is already handled.
>> >>
>
>> Sorry, I was wrong in my previous explanation on why
>> ocfs2_should_read_blk returns 1. ocfs2_should_read_blk returns 1
>> because of ocfs2_sparse_alloc() and hence forces the garbage read.
>
> You're right, that's why ocfs2_should_read_block() returns 1.
> But why would it ever want to read blocks that are outside i_size?
> We've guaranteed that they won't be initialized...
> I wonder if that's the bug? We originally used to zero to EOC.
> For sparse files, that could never be any clusters past i_size. With
> the fix I put in for writepage, we no longer zero the blocks past
> i_size. I think the sparse check there is no longer accurate.
> Please try the attached patch and see if it fixes the problem.
> It should work on its own, without your changes. If I have it wrong,
> we'll continue to evaluate the problem. I'd test it myself, but my VM
> setup is currently broken.
>
It does not work. However, it shows the behavior similar to "nosparse"
without patch. So, I would say what you are targeting is achieved but
another problem resurfaces. This is because nothing zeros pages beyond
i_size in ocfs2_map_page_blocks(), since we return early because of -
if (ret == 0 || !new)
return ret;
>> On a different note, what I have not been able to explain as yet is,
>> when the file is created on a nosparse filesystem, the holes have junk
>> (not 0xbaadfeed, ie what was written previously but junk). Could you
>> think of a reason why? In any case, this patch resolves this issue.
>
> Do they have junk without your patch, or just with your patch?
>
Without my patch, there is junk in the holes. With my patch holes are zeros.
Understood why it happens, explained before..
--
Goldwyn
More information about the Ocfs2-devel
mailing list