linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jan Kara <jack@suse.cz>
To: Lukas Czerner <lczerner@redhat.com>
Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org,
	linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org
Subject: Re: [PATCH v3 12/18] Revert "ext4: fix fsx truncate failure"
Date: Fri, 19 Apr 2013 00:21:39 +0200	[thread overview]
Message-ID: <20130418222139.GC19244@quack.suse.cz> (raw)
In-Reply-To: <1365498867-27782-13-git-send-email-lczerner@redhat.com>

On Tue 09-04-13 11:14:21, Lukas Czerner wrote:
> This reverts commit 189e868fa8fdca702eb9db9d8afc46b5cb9144c9.
> 
> This commit reintroduces the use of ext4_block_truncate_page() in ext4
> truncate operation instead of ext4_discard_partial_page_buffers().
> 
> The statement in the commit description that the truncate operation only
> zero block unaligned portion of the last page is not exactly right,
> since truncate_pagecache_range() also zeroes and invalidate the unaligned
> portion of the page. Then there is no need to zero and unmap it once more
> and ext4_block_truncate_page() was doing the right job, although we
> still need to update the buffer head containing the last block, which is
> exactly what ext4_block_truncate_page() is doing.
> 
> Moreover the problem described in the commit is fixed more properly with
> commit
  Looks good. You can add
Reviewed-by: Jan Kara <jack@suse.cz>

  I'd just add one nit that you might fix. In case of truncate called from
orphan cleanup code, we don't really call mm to zero the tail of the page.
It shouldn't really matter because the page shouldn't be uptodate but it
might be a trap we eventually fall into so calling truncate_inode_pages()
there might be a reasonable precaution.

								Honza
> 
> 15291164b22a357cb211b618adfef4fa82fc0de3
> 	jbd2: clear BH_Delay & BH_Unwritten in journal_unmap_buffer
> 
> This was tested on ppc64 machine with block size of 1024 bytes without
> any problems.
> 
> Signed-off-by: Lukas Czerner <lczerner@redhat.com>
> ---
>  fs/ext4/inode.c |   11 ++---------
>  1 files changed, 2 insertions(+), 9 deletions(-)
> 
> diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
> index 5729d21..d58e13c 100644
> --- a/fs/ext4/inode.c
> +++ b/fs/ext4/inode.c
> @@ -3920,7 +3920,6 @@ void ext4_truncate(struct inode *inode)
>  	unsigned int credits;
>  	handle_t *handle;
>  	struct address_space *mapping = inode->i_mapping;
> -	loff_t page_len;
>  
>  	/*
>  	 * There is a possibility that we're either freeing the inode
> @@ -3964,14 +3963,8 @@ void ext4_truncate(struct inode *inode)
>  		return;
>  	}
>  
> -	if (inode->i_size % PAGE_CACHE_SIZE != 0) {
> -		page_len = PAGE_CACHE_SIZE -
> -			(inode->i_size & (PAGE_CACHE_SIZE - 1));
> -
> -		if (ext4_discard_partial_page_buffers(handle,
> -				mapping, inode->i_size, page_len, 0))
> -			goto out_stop;
> -	}
> +	if (inode->i_size & (inode->i_sb->s_blocksize - 1))
> +		ext4_block_truncate_page(handle, mapping, inode->i_size);
>  
>  	/*
>  	 * We add the inode to the orphan list, so that if this
> -- 
> 1.7.7.6
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
-- 
Jan Kara <jack@suse.cz>
SUSE Labs, CR

  reply	other threads:[~2013-04-18 22:21 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-04-09  9:14 [PATCH v3 00/18] change invalidatepage prototype to accept length Lukas Czerner
2013-04-09  9:14 ` [PATCH v3 01/18] mm: " Lukas Czerner
2013-04-09  9:14 ` [PATCH v3 02/18] jbd2: change jbd2_journal_invalidatepage " Lukas Czerner
2013-04-09 13:22   ` Jan Kara
2013-04-09  9:14 ` [PATCH v3 03/18] ext4: use ->invalidatepage() length argument Lukas Czerner
2013-04-09 13:24   ` Jan Kara
2013-04-09  9:14 ` [PATCH v3 04/18] jbd: change journal_invalidatepage() to accept length Lukas Czerner
2013-04-09 13:20   ` Jan Kara
2013-04-09  9:14 ` [PATCH v3 05/18] xfs: use ->invalidatepage() length argument Lukas Czerner
2013-04-23 14:14   ` Theodore Ts'o
2013-04-23 21:06   ` Ben Myers
2013-04-09  9:14 ` [PATCH v3 06/18] ocfs2: " Lukas Czerner
2013-04-09 13:26   ` Jan Kara
2013-04-23 14:16   ` Theodore Ts'o
2013-05-02 22:00     ` Joel Becker
2013-04-09  9:14 ` [PATCH v3 07/18] ceph: " Lukas Czerner
2013-04-23 14:14   ` Theodore Ts'o
2013-04-23 16:04   ` Sage Weil
2013-04-09  9:14 ` [PATCH v3 08/18] gfs2: " Lukas Czerner
2013-04-09  9:29   ` [Cluster-devel] " Steven Whitehouse
2013-04-09 13:09   ` Bob Peterson
2013-04-09 13:27     ` Lukáš Czerner
2013-04-23 14:16   ` Theodore Ts'o
2013-04-23 14:17     ` Theodore Ts'o
2013-04-09  9:14 ` [PATCH v3 09/18] reiserfs: " Lukas Czerner
2013-04-09 13:27   ` Jan Kara
2013-04-10  9:51     ` Lukáš Czerner
2013-04-09  9:14 ` [PATCH v3 10/18] mm: teach truncate_inode_pages_range() to handle non page aligned ranges Lukas Czerner
2013-04-11 21:18   ` Jan Kara
2013-04-11 22:40     ` Hugh Dickins
2013-04-09  9:14 ` [PATCH v3 11/18] Revert "ext4: remove no longer used functions in inode.c" Lukas Czerner
2013-04-18 22:08   ` Jan Kara
2013-04-09  9:14 ` [PATCH v3 12/18] Revert "ext4: fix fsx truncate failure" Lukas Czerner
2013-04-18 22:21   ` Jan Kara [this message]
2013-04-09  9:14 ` [PATCH v3 13/18] ext4: use ext4_zero_partial_blocks in punch_hole Lukas Czerner
2013-04-19  5:03   ` Jan Kara
2013-04-09  9:14 ` [PATCH v3 14/18] ext4: remove unused discard_partial_page_buffers Lukas Czerner
2013-04-19  5:04   ` Jan Kara
2013-04-09  9:14 ` [PATCH v3 15/18] ext4: remove unused code from ext4_remove_blocks() Lukas Czerner
2013-04-19  5:15   ` Jan Kara
2013-04-09  9:14 ` [PATCH v3 16/18] ext4: update ext4_ext_remove_space trace point Lukas Czerner
2013-04-19  5:16   ` Jan Kara
2013-04-09  9:14 ` [PATCH v3 17/18] ext4: make punch hole code path work with bigalloc Lukas Czerner
2013-04-20 13:42   ` Jan Kara
2013-04-23  9:19     ` Zheng Liu
2013-04-24 11:08       ` Lukáš Czerner
2013-04-24 11:29         ` Zheng Liu
2013-04-24 10:57     ` Lukáš Czerner
2013-04-09  9:14 ` [PATCH v3 18/18] ext4: Allow punch hole with bigalloc enabled Lukas Czerner
2013-04-20 13:43   ` Jan Kara

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=20130418222139.GC19244@quack.suse.cz \
    --to=jack@suse.cz \
    --cc=lczerner@redhat.com \
    --cc=linux-ext4@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).