From: "Jose R. Santos" <jrs@us.ibm.com>
To: linux-ext4@vger.kernel.org
Subject: [PATCH 3/4][e2fsprogs] Relax group descriptor checking.
Date: Mon, 13 Aug 2007 23:33:03 -0500 [thread overview]
Message-ID: <20070814043303.32206.10239.stgit@gara> (raw)
In-Reply-To: <20070814043245.32206.34785.stgit@gara>
From: Jose R. Santos <jrs@us.ibm.com>
Relax group descriptor checking.
In order for tools such as dump2efs, e2fsck and debugfs to open a ext4
filesystem with FLEX_BG feature enable, some descriptor checking needs
to be relaxed. This patch changes the group desciptor checking so
that bitmaps and inode tables can be located anywhere in the
partitions block range.
Signed-off-by: Jose R. Santos <jrs@us.ibm.com>
--
e2fsck/super.c | 14 ++++++++++++--
lib/ext2fs/check_desc.c | 15 +++++++++++++--
2 files changed, 25 insertions(+), 4 deletions(-)
diff --git a/e2fsck/super.c b/e2fsck/super.c
index 00a131c..ed28732 100644
--- a/e2fsck/super.c
+++ b/e2fsck/super.c
@@ -463,6 +463,8 @@ void check_super_block(e2fsck_t ctx)
int inodes_per_block;
int ipg_max;
int inode_size;
+ dgrp_t start_group;
+ int meta_bg_size;
dgrp_t i;
blk_t should_be;
struct problem_context pctx;
@@ -578,8 +580,16 @@ void check_super_block(e2fsck_t ctx)
for (i = 0, gd=fs->group_desc; i < fs->group_desc_count; i++, gd++) {
pctx.group = i;
- first_block = ext2fs_group_first_block(fs, i);
- last_block = ext2fs_group_last_block(fs, i);
+ if (EXT2_HAS_INCOMPAT_FEATURE (fs->super,
+ EXT4_FEATURE_INCOMPAT_FLEX_BG)) {
+ meta_bg_size = (fs->blocksize / sizeof (struct ext2_group_desc));
+ start_group = (i / meta_bg_size) * meta_bg_size;
+ first_block = ext2fs_group_first_block(fs, start_group);
+ last_block = ext2fs_group_first_block(fs, start_group + meta_bg_size);
+ } else {
+ first_block = ext2fs_group_first_block(fs, i);
+ last_block = ext2fs_group_last_block(fs, i);
+ }
if ((gd->bg_block_bitmap < first_block) ||
(gd->bg_block_bitmap > last_block)) {
diff --git a/lib/ext2fs/check_desc.c b/lib/ext2fs/check_desc.c
index 146f9e5..dbbcfb3 100644
--- a/lib/ext2fs/check_desc.c
+++ b/lib/ext2fs/check_desc.c
@@ -34,12 +34,23 @@ errcode_t ext2fs_check_desc(ext2_filsys fs)
dgrp_t i;
blk_t first_block = fs->super->s_first_data_block;
blk_t last_block;
+ dgrp_t start_group;
+ int meta_bg_size;
EXT2_CHECK_MAGIC(fs, EXT2_ET_MAGIC_EXT2FS_FILSYS);
for (i = 0; i < fs->group_desc_count; i++) {
- first_block = ext2fs_group_first_block(fs, i);
- last_block = ext2fs_group_last_block(fs, i);
+ if (EXT2_HAS_INCOMPAT_FEATURE (fs->super,
+ EXT4_FEATURE_INCOMPAT_FLEX_BG)) {
+ meta_bg_size = (fs->blocksize / sizeof (struct ext2_group_desc));
+ start_group = (i / meta_bg_size) * meta_bg_size;
+ first_block = ext2fs_group_first_block(fs, start_group);
+ last_block = ext2fs_group_first_block(fs, start_group + meta_bg_size);
+ }
+ else {
+ first_block = ext2fs_group_first_block(fs, i);
+ last_block = ext2fs_group_last_block(fs, i);
+ }
/*
* Check to make sure block bitmap for group is
next prev parent reply other threads:[~2007-08-14 4:33 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-08-14 4:32 [PATCH 0/4][e2fsprogs] Enable FLEX_BG support Jose R. Santos
2007-08-14 4:32 ` [PATCH 1/4][e2fsprogs] Reserve the INCOMPAT feature number for FLEX_BG Jose R. Santos
2007-08-14 4:32 ` [PATCH 2/4][e2fsprogs] Allow FLEX_BG to be use as a feature option at mke2fs time Jose R. Santos
2007-11-03 18:18 ` Theodore Tso
2007-08-14 4:33 ` Jose R. Santos [this message]
2007-11-03 23:36 ` [PATCH 3/4][e2fsprogs] Relax group descriptor checking Theodore Tso
2007-11-05 14:53 ` Jose R. Santos
2007-11-05 15:41 ` Theodore Tso
2007-08-14 4:33 ` [PATCH 4/4][e2fsprogs] New bitmap and inode table allocation for FLEX_BG Jose R. Santos
2007-11-04 0:52 ` Theodore Tso
2007-11-05 15:09 ` Jose R. Santos
-- strict thread matches above, loose matches on Subject: below --
2007-08-03 4:00 [PATCH 0/4][e2fsprogs] Enable FLEX_BG support Jose R. Santos
2007-08-03 4:00 ` [PATCH 3/4][e2fsprogs] Relax group descriptor checking Jose R. Santos
2007-08-03 5:24 ` Aneesh Kumar K.V
2007-08-03 12:17 ` Jose R. Santos
2007-08-03 18:22 ` Andreas Dilger
2007-08-03 20:05 ` Jose R. Santos
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=20070814043303.32206.10239.stgit@gara \
--to=jrs@us.ibm.com \
--cc=linux-ext4@vger.kernel.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).