All of lore.kernel.org
 help / color / mirror / Atom feed
From: Zheng Liu <gnehzuil.liu@gmail.com>
To: "Darrick J. Wong" <darrick.wong@oracle.com>
Cc: tytso@mit.edu, linux-ext4@vger.kernel.org
Subject: Re: [PATCH 14/25] e2fsck: only release clusters when shortening a directory during a rehash
Date: Mon, 25 Nov 2013 19:09:33 +0800	[thread overview]
Message-ID: <20131125110933.GA15056@gmail.com> (raw)
In-Reply-To: <20131018045027.7339.9686.stgit@birch.djwong.org>

On Thu, Oct 17, 2013 at 09:50:27PM -0700, Darrick J. Wong wrote:
> When the rehash process is running on a bigalloc filesystem, it
> compresses all the directory entries and hash structures into the
> beginning of the directory file and then uses block_iterate3() to free
> the blocks off the end of the file.  It seems to call
> ext2fs_block_alloc_stats2() for every block in a cluster, which is
> unfortunate because this function allocates and frees entire clusters
> (and updates the summary counts accordingly).  In this case e2fsck
> writes out incorrect summary counts.
> 
> Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>

Reviewed-by: Zheng Liu <wenqing.lz@taobao.com>

                                                - Zheng

> ---
>  e2fsck/rehash.c |   14 +++++++++++---
>  1 file changed, 11 insertions(+), 3 deletions(-)
> 
> 
> diff --git a/e2fsck/rehash.c b/e2fsck/rehash.c
> index 6ef3568..29da9a1 100644
> --- a/e2fsck/rehash.c
> +++ b/e2fsck/rehash.c
> @@ -719,10 +719,18 @@ static int write_dir_block(ext2_filsys fs,
>  		/* We don't need this block, so release it */
>  		e2fsck_read_bitmaps(wd->ctx);
>  		blk = *block_nr;
> -		ext2fs_unmark_block_bitmap2(wd->ctx->block_found_map, blk);
> -		ext2fs_block_alloc_stats2(fs, blk, -1);
> +		/*
> +		 * In theory, we only release blocks from the end of the
> +		 * directory file, so it's fine to clobber a whole cluster at
> +		 * once.
> +		 */
> +		if (blk % EXT2FS_CLUSTER_RATIO(fs) == 0) {
> +			ext2fs_unmark_block_bitmap2(wd->ctx->block_found_map,
> +						    blk);
> +			ext2fs_block_alloc_stats2(fs, blk, -1);
> +			wd->cleared++;
> +		}
>  		*block_nr = 0;
> -		wd->cleared++;
>  		return BLOCK_CHANGED;
>  	}
>  
> 
> --
> 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:[~2013-11-25 11:06 UTC|newest]

Thread overview: 73+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-10-18  4:48 [PATCH v2 00/25] e2fsprogs patchbomb 10/2013 Darrick J. Wong
2013-10-18  4:49 ` [PATCH 01/25] libext2fs: stop iterating dirents when done linking Darrick J. Wong
2013-10-23 23:39   ` Theodore Ts'o
2013-10-18  4:49 ` [PATCH 02/25] libext2fs: fix ext2fs_open2() truncation of the superblock parameter Darrick J. Wong
2013-10-18 18:32   ` Darrick J. Wong
2013-10-23 14:49     ` Lukáš Czerner
2013-10-18  4:49 ` [PATCH 03/25] mke2fs: don't let resize= turn on resize_inode when meta_bg is set Darrick J. Wong
2013-10-23 15:08   ` Lukáš Czerner
2013-10-23 23:40   ` Theodore Ts'o
2013-10-18  4:49 ` [PATCH 04/25] libext2fs: reject 64bit badblocks numbers Darrick J. Wong
2013-10-23 15:24   ` Lukáš Czerner
2013-10-23 23:58     ` Theodore Ts'o
2013-10-24 11:40       ` Lukáš Czerner
2013-10-18  4:49 ` [PATCH 05/25] libext2fs: don't overflow when punching indirect blocks with large blocks Darrick J. Wong
2013-10-24  0:08   ` Theodore Ts'o
2013-12-04  4:40     ` Darrick J. Wong
2013-10-18  4:49 ` [PATCH 06/25] libext2fs: fix tests that set LARGE_FILE Darrick J. Wong
2013-11-25  7:09   ` Zheng Liu
2013-11-25 17:57     ` Darrick J. Wong
2013-10-18  4:49 ` [PATCH 07/25] mke2fs: load configfile blocksize setting before 64bit checks Darrick J. Wong
2013-11-25  8:01   ` Zheng Liu
2013-10-18  4:49 ` [PATCH 08/25] debugfs: fix various minor bogosity Darrick J. Wong
2013-11-25  8:08   ` Zheng Liu
2013-11-25 18:05     ` Darrick J. Wong
2013-10-18  4:49 ` [PATCH 09/25] e2fsck: teach EA refcounting code to handle 64bit block addresses Darrick J. Wong
2013-10-18 18:37   ` Darrick J. Wong
2013-11-25  8:18     ` Zheng Liu
2013-10-18  4:50 ` [PATCH 10/25] debugfs: handle 64bit block numbers Darrick J. Wong
2013-10-18 18:47   ` Darrick J. Wong
2013-11-25  8:33   ` Zheng Liu
2013-11-25 17:49     ` Darrick J. Wong
2013-10-18  4:50 ` [PATCH 11/25] libext2fs: only punch complete clusters Darrick J. Wong
2013-10-18 18:55   ` Darrick J. Wong
2013-11-25  8:51   ` Zheng Liu
2013-10-18  4:50 ` [PATCH 12/25] libext2fs: don't update the summary counts when doing implied cluster allocation Darrick J. Wong
2013-11-25  9:03   ` Zheng Liu
2013-10-18  4:50 ` [PATCH 13/25] libext2fs: use ext2fs_punch() to truncate quota file Darrick J. Wong
2013-11-25  9:08   ` Zheng Liu
2013-10-18  4:50 ` [PATCH 14/25] e2fsck: only release clusters when shortening a directory during a rehash Darrick J. Wong
2013-11-25 11:09   ` Zheng Liu [this message]
2013-10-18  4:50 ` [PATCH 15/25] e2fsck: print cluster ranges when encountering bitmap errors Darrick J. Wong
2013-11-25 11:56   ` Zheng Liu
2013-10-18  4:50 ` [PATCH 16/25] resize2fs: convert fs to and from 64bit mode Darrick J. Wong
2013-10-18 18:59   ` Darrick J. Wong
2013-11-26  6:44   ` Zheng Liu
2013-11-26 18:39     ` Darrick J. Wong
2013-11-27  2:21       ` Zheng Liu
2013-10-18  4:50 ` [PATCH 17/25] resize2fs: when toggling 64bit, don't free in-use bg data clusters Darrick J. Wong
2013-10-18  4:50 ` [PATCH 18/25] resize2fs: adjust reserved_gdt_blocks when changing group descriptor size Darrick J. Wong
2013-10-18  4:51 ` [PATCH 19/25] resize2fs: during shrink, don't free in-use bg data clusters Darrick J. Wong
2013-10-18  4:51 ` [PATCH 20/25] resize2fs: don't free in-use clusters when moving blocks Darrick J. Wong
2013-10-18  4:51 ` [PATCH 21/25] misc: use the checksum predicate function, not raw flag tests Darrick J. Wong
2013-10-18  4:51 ` [PATCH 22/25] resize2fs: rewrite extent/dir/ea block checksums when migrating Darrick J. Wong
2013-10-18  4:51 ` [PATCH 23/25] libext2fs: support modifying arbitrary extended attributes Darrick J. Wong
2013-10-18 19:25   ` Darrick J. Wong
2013-10-22  1:13   ` Darrick J. Wong
2013-11-26  7:21   ` Zheng Liu
2013-11-26 19:55     ` Darrick J. Wong
2013-11-27  2:52       ` Zheng Liu
2013-11-27  3:13         ` Darrick J. Wong
2013-11-27 11:36           ` Zheng Liu
2013-11-27  1:56     ` Darrick J. Wong
2013-11-29  5:30       ` Zheng Liu
2013-11-29  8:17         ` Jan Kara
2013-11-30 20:24           ` Darrick J. Wong
2013-12-02  8:38             ` Jan Kara
2013-10-18  4:51 ` [PATCH 24/25] misc: add fuse2fs, a FUSE server for e2fsprogs Darrick J. Wong
2013-10-18 19:36   ` Darrick J. Wong
2013-10-22  1:20   ` Darrick J. Wong
2013-10-18 13:13 ` [PATCH v2 00/25] e2fsprogs patchbomb 10/2013 Lukáš Czerner
2013-10-18 18:13   ` Darrick J. Wong
2013-10-18 20:37     ` Darrick J. Wong
2013-10-18 18:39 ` Theodore Ts'o

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=20131125110933.GA15056@gmail.com \
    --to=gnehzuil.liu@gmail.com \
    --cc=darrick.wong@oracle.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.