2009-09-11 15:18:33

by Eric Sandeen

[permalink] [raw]
Subject: [PATCH] debugfs: open with EXT2_FLAG_64BITS

Pointing debugfs from the pu branch at a large filesystem is
still failing with:

Filesystem too large to use legacy bitmaps while reading block bitmap

We need to open with EXT2_FLAG_64BITS; I'm not sure if this
should be a switch based on the size of the fs or not?

But in any case the below gets things moving enough to
use debugfs on a large filesystem.

Signed-off-by: Eric Sandeen <[email protected]>
---

diff --git a/debugfs/debugfs.c b/debugfs/debugfs.c
index 3bb309f..fbebae7 100644
--- a/debugfs/debugfs.c
+++ b/debugfs/debugfs.c
@@ -127,7 +127,7 @@ void do_open_filesys(int argc, char **argv)
int catastrophic = 0;
blk64_t superblock = 0;
blk64_t blocksize = 0;
- int open_flags = EXT2_FLAG_SOFTSUPP_FEATURES;
+ int open_flags = EXT2_FLAG_SOFTSUPP_FEATURES | EXT2_FLAG_64BITS;
char *data_filename = 0;

reset_getopt();
@@ -2148,7 +2148,7 @@ int main(int argc, char **argv)
int sci_idx;
const char *usage = "Usage: %s [-b blocksize] [-s superblock] [-f cmd_file] [-R request] [-V] [[-w] [-c] device]";
int c;
- int open_flags = EXT2_FLAG_SOFTSUPP_FEATURES;
+ int open_flags = EXT2_FLAG_SOFTSUPP_FEATURES | EXT2_FLAG_64BITS;
char *request = 0;
int exit_status = 0;
char *cmd_file = 0;



2009-09-12 20:29:22

by Andreas Dilger

[permalink] [raw]
Subject: Re: [PATCH] debugfs: open with EXT2_FLAG_64BITS

On Sep 11, 2009 10:18 -0500, Eric Sandeen wrote:
> Pointing debugfs from the pu branch at a large filesystem is
> still failing with:
>
> Filesystem too large to use legacy bitmaps while reading block bitmap
>
> We need to open with EXT2_FLAG_64BITS; I'm not sure if this
> should be a switch based on the size of the fs or not?

The one thing that is already VERY painful is the time it takes for
debugfs to read the bitmaps from disk at startup. Running with
"-c" allows that step to be skipped, but tha means it isn't possible
to modify the filesystem at all.

The time for 8TB filesystems is already in the multi-minute range, so
I can't imagine how long it will take on huge filesystems. The only
saving grace might be flex_bg avoiding seeks between every pair of
bitmaps.

Has any attention been given to the ext2fs_load_bitmaps() function for
flex_bg filesystems? This would need to be tuned to read groups_per_flex
block bitmaps first, then groups_per_flex inode bitmaps before skipping
to the next flex group. Otherwise we may still be reading each pair of
block+inode bitmaps at a time, and only by virtue of disk track caching
are we avoiding a seek between each one (which would eventually break
down once the groups_per_flex exceeds the track cache size).

Cheers, Andreas
--
Andreas Dilger
Sr. Staff Engineer, Lustre Group
Sun Microsystems of Canada, Inc.


2009-10-08 20:17:27

by Eric Sandeen

[permalink] [raw]
Subject: Re: [PATCH] debugfs: open with EXT2_FLAG_64BITS

Eric Sandeen wrote:
> Pointing debugfs from the pu branch at a large filesystem is
> still failing with:
>
> Filesystem too large to use legacy bitmaps while reading block bitmap
>
> We need to open with EXT2_FLAG_64BITS; I'm not sure if this
> should be a switch based on the size of the fs or not?
>
> But in any case the below gets things moving enough to
> use debugfs on a large filesystem.

ping?

Thanks,
-Eric

> Signed-off-by: Eric Sandeen <[email protected]>
> ---
>
> diff --git a/debugfs/debugfs.c b/debugfs/debugfs.c
> index 3bb309f..fbebae7 100644
> --- a/debugfs/debugfs.c
> +++ b/debugfs/debugfs.c
> @@ -127,7 +127,7 @@ void do_open_filesys(int argc, char **argv)
> int catastrophic = 0;
> blk64_t superblock = 0;
> blk64_t blocksize = 0;
> - int open_flags = EXT2_FLAG_SOFTSUPP_FEATURES;
> + int open_flags = EXT2_FLAG_SOFTSUPP_FEATURES | EXT2_FLAG_64BITS;
> char *data_filename = 0;
>
> reset_getopt();
> @@ -2148,7 +2148,7 @@ int main(int argc, char **argv)
> int sci_idx;
> const char *usage = "Usage: %s [-b blocksize] [-s superblock] [-f cmd_file] [-R request] [-V] [[-w] [-c] device]";
> int c;
> - int open_flags = EXT2_FLAG_SOFTSUPP_FEATURES;
> + int open_flags = EXT2_FLAG_SOFTSUPP_FEATURES | EXT2_FLAG_64BITS;
> char *request = 0;
> int exit_status = 0;
> char *cmd_file = 0;
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html


2009-10-26 05:15:51

by Theodore Ts'o

[permalink] [raw]
Subject: Re: [PATCH] debugfs: open with EXT2_FLAG_64BITS

On Thu, Oct 08, 2009 at 03:17:00PM -0500, Eric Sandeen wrote:
> Eric Sandeen wrote:
> > Pointing debugfs from the pu branch at a large filesystem is
> > still failing with:
> >
> > Filesystem too large to use legacy bitmaps while reading block bitmap
> >
> > We need to open with EXT2_FLAG_64BITS; I'm not sure if this
> > should be a switch based on the size of the fs or not?
> >
> > But in any case the below gets things moving enough to
> > use debugfs on a large filesystem.
>
> ping?

I've added this patch to the pu branch. I've also updated the pu
branch so it's up to date with the latest maint branch. I also found
some missing conversions of ext2fs_group_{first,last}_block() to
ext2fs_group_{first,last}_block2().

I also cleaned up a number of patches which I'm confident enough are
clean enough that I've fast forwarded the next branch to include them.

There are now only 16 patches left that are unique to the pu branch,
down from 57 patches initially (and many of the patches are smaller as
they were refactored).

- Ted