[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