All of lore.kernel.org
 help / color / mirror / Atom feed
From: Allison Henderson <achender@linux.vnet.ibm.com>
To: Mingming Cao <cmm@us.ibm.com>
Cc: "Ted Ts'o" <tytso@mit.edu>,
	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 11:03:41 -0700	[thread overview]
Message-ID: <4E3ADEFD.30501@linux.vnet.ibm.com> (raw)
In-Reply-To: <1312479840.7732.7.camel@mingming-laptop>

On 08/04/2011 10:44 AM, Mingming Cao wrote:
> 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

Yeah looking at them again, I think I like the simpler v3.  V2 does both 
operations in one loop, but I think it's cleaner to keep them separate.

Allison Henderson

>> 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
>
>
> --
> 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


      reply	other threads:[~2011-08-04 18:05 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
2011-08-04 18:03         ` Allison Henderson [this message]

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=4E3ADEFD.30501@linux.vnet.ibm.com \
    --to=achender@linux.vnet.ibm.com \
    --cc=cmm@us.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.