From: Akira Fujita <a-fujita@rs.jp.nec.com>
To: Theodore Tso <tytso@mit.edu>
Cc: ext4 development <linux-ext4@vger.kernel.org>
Subject: Re: [PATCH] e2fsprogs: Fix reserved blocks calculation for mke2fs -m 50%
Date: Thu, 20 Sep 2012 10:05:06 +0900 [thread overview]
Message-ID: <505A6BC2.4080803@rs.jp.nec.com> (raw)
In-Reply-To: <503F4B71.7090001@rs.jp.nec.com>
Hi Ted,
Could you check this patch?
(2012/08/30 20:16), Akira Fujita wrote:
> mke2fs -m option can set reserved blocks ratio up to 50%.
> But if the last BG is not big enough to support the necessary data
> structures, reserved blocks ratio can exceed 50%
> and we never succeed in e2fsck with that FS.
> This bug happens on ext2, ext3 and ext4.
>
> To fix this, the patch recalculates reserved blocks count
> if FS blocks count is changed in mke2fs because of
> the last BG's size.
>
> Steps to reproduce:
>
> 1. Create a FS which has the overhead for the last BG
> and specify 50 % for reserved blocks ratio
> # mke2fs -m 50 -t ext4 DEV 1025M
>
> mke2fs 1.42.5 (29-Jul-2012)
> warning: 256 blocks unused.
>
> Filesystem label=
> OS type: Linux
> Block size=4096 (log=2)
> Fragment size=4096 (log=2)
> Stride=0 blocks, Stripe width=0 blocks
> 656640 inodes, 2621440 blocks
> 1310848 blocks (50.00%) reserved for the super user
> ~~~~~~~ <-- Reserved blocks exceed 50% of FS blocks count!
>
> 2. e2fsck outputs filesystem corruption
> # e2fsck DEV
>
> e2fsck 1.42.5 (29-Jul-2012)
> Corruption found in superblock. (r_blocks_count = 1310848).
>
> The superblock could not be read or does not describe a correct ext2
> filesystem. If the device is valid and it really contains an ext2
> filesystem (and not swap or ufs or something else), then the superblock
> is corrupt, and you might try running e2fsck with an alternate superblock:
> e2fsck -b 32768 <device>
>
>
> Signed-off-by: Akira Fujita <a-fujita@rs.jp.ne.com>
> ---
> lib/ext2fs/initialize.c | 9 +++++++++
> 1 files changed, 9 insertions(+), 0 deletions(-)
> diff --git a/lib/ext2fs/initialize.c b/lib/ext2fs/initialize.c
> index 5a6f8ea..3567722 100644
> --- a/lib/ext2fs/initialize.c
> +++ b/lib/ext2fs/initialize.c
> @@ -101,6 +101,7 @@ errcode_t ext2fs_initialize(const char *name, int flags,
> unsigned reserved_inos;
> char *buf = 0;
> char c;
> + double reserved_ratio;
>
> if (!param || !ext2fs_blocks_count(param))
> return EXT2_ET_INVALID_ARGUMENT;
> @@ -391,6 +392,14 @@ ipg_retry:
> if (rem && (rem < overhead+50)) {
> ext2fs_blocks_count_set(super, ext2fs_blocks_count(super) -
> rem);
> + /*
> + * If blocks count is changed, we need to recalculate
> + * reserved blocks count not to exceed 50%.
> + */
> + reserved_ratio = 100.0 * ext2fs_r_blocks_count(param) /
> + ext2fs_blocks_count(param);
> + ext2fs_r_blocks_count_set(super, reserved_ratio *
> + ext2fs_blocks_count(super) / 100.0);
>
> goto retry;
> }
> --
> 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
>
--
Akira Fujita <a-fujita@rs.jp.nec.com>
The First Fundamental Software Development Group,
Platform Division, NEC Software Tohoku, Ltd.
next prev parent reply other threads:[~2012-09-20 1:11 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-08-30 11:16 [PATCH] e2fsprogs: Fix reserved blocks calculation for mke2fs -m 50% Akira Fujita
2012-09-20 1:05 ` Akira Fujita [this message]
2012-09-20 19:15 ` 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=505A6BC2.4080803@rs.jp.nec.com \
--to=a-fujita@rs.jp.nec.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.