From: Mingming Cao <cmm@us.ibm.com>
To: "Ted Ts'o" <tytso@mit.edu>
Cc: Allison Henderson <achender@linux.vnet.ibm.com>,
Ext4 Developers List <linux-ext4@vger.kernel.org>
Subject: Re: [PATCH 1/1 v3] ext4: fix xfstests 75, 112, 127 punch hole failure
Date: Thu, 04 Aug 2011 10:44:00 -0700 [thread overview]
Message-ID: <1312479840.7732.7.camel@mingming-laptop> (raw)
In-Reply-To: <20110804152519.GJ3150@thunk.org>
On Thu, 2011-08-04 at 11:25 -0400, Ted Ts'o wrote:
> On Thu, Aug 04, 2011 at 12:22:58AM -0700, Allison Henderson wrote:
> >
> > Oh, I think we do avoid calling the unmap for this last condition
> > though. The first and last page offsets are calculated earlier for
> > calling truncate_inode_pages_range to release all the pages in the
> > hole. The idea is that everything from first_page_offset to
> > last_page_offset covers all the page aligned pages in the hole. So
> > then if offset and length are aligned, we basically end up with
> > first_page_offset = offset and last_page_offset = offset + length,
> > and the page_len will turn out to be zero. Right math? Maybe we
> > can add some comments or something to help clarify.
>
> Yeah, sorry, I wasn't clear enough about the condition. Consider the
> situation where we punch the region:
>
> 4092 -- 8197
>
> In the previous section of code, we would zero out the byte ranges
> 4092--4095 and 8192--8197. What's left is a completely page-aligned
> range, which would have already been taken care of already. But since
> we're calculating based on offsets, I believe there will be an
> unnecessary call to ext4_unmap_page_range().
>
Yep, for the default 4k block size, if the offset is not block aligned,
with the patch we could end of unnecessary unamp_page_range.
> BTW, the name ext4_unmap_page_range() is a bit confusing; maybe we
> should rename it to ext4_unmap_partial_page_buffers()?
>
The new name sounds better. It should only called for punch hole in the
range (blocksize != pagesize) and (offset is block aligned) and (offset
is not page aligned)
> I know you were copying from the ext4_block_zero_page_range() function
> and its calling sequence (but in my opinion that function wasn't named
> well and the comments in that code aren't good either).
>
> I also wonder why we can't fold the functionality found in
> ext4_unmap_page_range() into ext4_block_zero_page_range(). Did you
> look into that option?
>
ext4_block_zero_page_range() also called from ext4 truncate code path,
which only zero out within a block, but do not need to handle the
partial page unmap. There are two logical steps need by punch hole, one
is to zero out the non-block-aligned portion(like truncate), second is
to unmap_partial_page_buffers(). It seems cleaner to separate the two
logical steps out from the code simplify point of view.
Regards,
Mingming
> Regards,
>
> - Ted
> --
> To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2011-08-04 17:44 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-08-03 15:20 [PATCH 1/1 v3] ext4: fix xfstests 75, 112, 127 punch hole failure Allison Henderson
2011-08-04 0:50 ` Ted Ts'o
2011-08-04 6:21 ` Allison Henderson
2011-08-04 7:22 ` Allison Henderson
2011-08-04 15:25 ` Ted Ts'o
2011-08-04 16:10 ` Allison Henderson
2011-08-04 17:44 ` Mingming Cao [this message]
2011-08-04 18:03 ` Allison Henderson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1312479840.7732.7.camel@mingming-laptop \
--to=cmm@us.ibm.com \
--cc=achender@linux.vnet.ibm.com \
--cc=linux-ext4@vger.kernel.org \
--cc=tytso@mit.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.