* [PATCH] FLEX_BG Kernel support.
@ 2007-09-10 21:22 Jose R. Santos
2007-09-11 6:04 ` Andreas Dilger
0 siblings, 1 reply; 5+ messages in thread
From: Jose R. Santos @ 2007-09-10 21:22 UTC (permalink / raw)
To: ext4 development
From: Jose R. Santos <jrs@us.ibm.com>
FLEX_BG Kernel support.
This feature relaxes check restrictions on where each block groups meta data is
located within the storage media. This allows for the allocation of bitmaps or
inode tables outside the block group boundaries in cases where bad blocks forces
us to look for new blocks which the owning block group can not satisfy. This
will also allow for new meta-data allocation schemes to improve performance and
scalability.
Signed-off-by: Jose R. Santos <jrs@us.ibm.com>
--
fs/ext4/super.c | 7 +++++--
include/linux/ext4_fs.h | 4 +++-
2 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/fs/ext4/super.c b/fs/ext4/super.c
index 4550b83..902e5c8 100644
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
@@ -1254,7 +1254,8 @@ static int ext4_check_descriptors (struct super_block * sb)
for (i = 0; i < sbi->s_groups_count; i++)
{
- if (i == sbi->s_groups_count - 1)
+ if (i == sbi->s_groups_count - 1 || EXT4_HAS_INCOMPAT_FEATURE(sb,
+ EXT4_FEATURE_INCOMPAT_FLEX_BG))
last_block = ext4_blocks_count(sbi->s_es) - 1;
else
last_block = first_block +
@@ -1291,7 +1292,9 @@ static int ext4_check_descriptors (struct super_block * sb)
i, inode_table);
return 0;
}
- first_block += EXT4_BLOCKS_PER_GROUP(sb);
+ if (!EXT4_HAS_INCOMPAT_FEATURE(sb,
+ EXT4_FEATURE_INCOMPAT_FLEX_BG))
+ first_block += EXT4_BLOCKS_PER_GROUP(sb);
gdp = (struct ext4_group_desc *)
((__u8 *)gdp + EXT4_DESC_SIZE(sb));
}
diff --git a/include/linux/ext4_fs.h b/include/linux/ext4_fs.h
index cdee7aa..d53e167 100644
--- a/include/linux/ext4_fs.h
+++ b/include/linux/ext4_fs.h
@@ -702,13 +702,15 @@ static inline int ext4_valid_inum(struct super_block *sb, unsigned long ino)
#define EXT4_FEATURE_INCOMPAT_META_BG 0x0010
#define EXT4_FEATURE_INCOMPAT_EXTENTS 0x0040 /* extents support */
#define EXT4_FEATURE_INCOMPAT_64BIT 0x0080
+#define EXT4_FEATURE_INCOMPAT_FLEX_BG 0x0200
#define EXT4_FEATURE_COMPAT_SUPP EXT2_FEATURE_COMPAT_EXT_ATTR
#define EXT4_FEATURE_INCOMPAT_SUPP (EXT4_FEATURE_INCOMPAT_FILETYPE| \
EXT4_FEATURE_INCOMPAT_RECOVER| \
EXT4_FEATURE_INCOMPAT_META_BG| \
EXT4_FEATURE_INCOMPAT_EXTENTS| \
- EXT4_FEATURE_INCOMPAT_64BIT)
+ EXT4_FEATURE_INCOMPAT_64BIT| \
+ EXT4_FEATURE_INCOMPAT_FLEX_BG)
#define EXT4_FEATURE_RO_COMPAT_SUPP (EXT4_FEATURE_RO_COMPAT_SPARSE_SUPER| \
EXT4_FEATURE_RO_COMPAT_LARGE_FILE| \
EXT4_FEATURE_RO_COMPAT_DIR_NLINK | \
^ permalink raw reply related [flat|nested] 5+ messages in thread* Re: [PATCH] FLEX_BG Kernel support.
2007-09-10 21:22 [PATCH] FLEX_BG Kernel support Jose R. Santos
@ 2007-09-11 6:04 ` Andreas Dilger
2007-09-11 12:27 ` Jose R. Santos
0 siblings, 1 reply; 5+ messages in thread
From: Andreas Dilger @ 2007-09-11 6:04 UTC (permalink / raw)
To: Jose R. Santos; +Cc: ext4 development
On 9/10/07, Jose R. Santos <jrs@us.ibm.com> wrote:
> @@ -1254,7 +1254,8 @@ static int ext4_check_descriptors (struct super_block * sb)
>
> for (i = 0; i < sbi->s_groups_count; i++)
> {
> - if (i == sbi->s_groups_count - 1)
> + if (i == sbi->s_groups_count - 1 || EXT4_HAS_INCOMPAT_FEATURE(sb,
> + EXT4_FEATURE_INCOMPAT_FLEX_BG))
> last_block = ext4_blocks_count(sbi->s_es) - 1;
No need to check this featyre for every group, once at the beginning
of the function is enough.
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: [PATCH] FLEX_BG Kernel support.
2007-09-11 6:04 ` Andreas Dilger
@ 2007-09-11 12:27 ` Jose R. Santos
2007-09-11 23:21 ` Andreas Dilger
0 siblings, 1 reply; 5+ messages in thread
From: Jose R. Santos @ 2007-09-11 12:27 UTC (permalink / raw)
To: Andreas Dilger; +Cc: ext4 development
On Tue, 11 Sep 2007 00:04:43 -0600
"Andreas Dilger" <adilger@clusterfs.com> wrote:
> On 9/10/07, Jose R. Santos <jrs@us.ibm.com> wrote:
> > @@ -1254,7 +1254,8 @@ static int ext4_check_descriptors (struct super_block * sb)
> >
> > for (i = 0; i < sbi->s_groups_count; i++)
> > {
> > - if (i == sbi->s_groups_count - 1)
> > + if (i == sbi->s_groups_count - 1 || EXT4_HAS_INCOMPAT_FEATURE(sb,
> > + EXT4_FEATURE_INCOMPAT_FLEX_BG))
> > last_block = ext4_blocks_count(sbi->s_es) - 1;
>
> No need to check this featyre for every group, once at the beginning
> of the function is enough.
>
Do you mean something like the original patch?
http://lists.openwall.net/linux-ext4/2007/07/12/20
Wouldn't we need to check all the descriptor for corruption if checksum
is not enable on the filesystem?
-JRS
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: [PATCH] FLEX_BG Kernel support.
2007-09-11 12:27 ` Jose R. Santos
@ 2007-09-11 23:21 ` Andreas Dilger
2007-09-12 0:04 ` Jose R. Santos
0 siblings, 1 reply; 5+ messages in thread
From: Andreas Dilger @ 2007-09-11 23:21 UTC (permalink / raw)
To: Jose R. Santos; +Cc: ext4 development
On Sep 11, 2007 07:27 -0500, Jose R. Santos wrote:
> On Tue, 11 Sep 2007 00:04:43 -0600
> "Andreas Dilger" <adilger@clusterfs.com> wrote:
> > On 9/10/07, Jose R. Santos <jrs@us.ibm.com> wrote:
> > > @@ -1254,7 +1254,8 @@ static int ext4_check_descriptors (struct super_block * sb)
> > >
> > > for (i = 0; i < sbi->s_groups_count; i++)
> > > {
> > > - if (i == sbi->s_groups_count - 1)
> > > + if (i == sbi->s_groups_count - 1 || EXT4_HAS_INCOMPAT_FEATURE(sb,
> > > + EXT4_FEATURE_INCOMPAT_FLEX_BG))
> > > last_block = ext4_blocks_count(sbi->s_es) - 1;
> >
> > No need to check this featyre for every group, once at the beginning
> > of the function is enough.
> >
>
> Do you mean something like the original patch?
> http://lists.openwall.net/linux-ext4/2007/07/12/20
>
> Wouldn't we need to check all the descriptor for corruption if checksum
> is not enable on the filesystem?
Yes, I just meant you don't need to have:
EXT4_HAS_INCOMPAT_FEATURE(sb, EXT4_FEATURE_INCOMPAT_FLEX_BG))
for each time through the loop. That loop is walked 8000 times per TB
at mount, so if we can make it faster we should do so.
Cheers, Andreas
--
Andreas Dilger
Principal Software Engineer
Cluster File Systems, Inc.
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: [PATCH] FLEX_BG Kernel support.
2007-09-11 23:21 ` Andreas Dilger
@ 2007-09-12 0:04 ` Jose R. Santos
0 siblings, 0 replies; 5+ messages in thread
From: Jose R. Santos @ 2007-09-12 0:04 UTC (permalink / raw)
To: Andreas Dilger; +Cc: ext4 development
On Tue, 11 Sep 2007 17:21:39 -0600
Andreas Dilger <adilger@clusterfs.com> wrote:
> On Sep 11, 2007 07:27 -0500, Jose R. Santos wrote:
> > On Tue, 11 Sep 2007 00:04:43 -0600
> > "Andreas Dilger" <adilger@clusterfs.com> wrote:
> > > On 9/10/07, Jose R. Santos <jrs@us.ibm.com> wrote:
> > > > @@ -1254,7 +1254,8 @@ static int ext4_check_descriptors (struct super_block * sb)
> > > >
> > > > for (i = 0; i < sbi->s_groups_count; i++)
> > > > {
> > > > - if (i == sbi->s_groups_count - 1)
> > > > + if (i == sbi->s_groups_count - 1 || EXT4_HAS_INCOMPAT_FEATURE(sb,
> > > > + EXT4_FEATURE_INCOMPAT_FLEX_BG))
> > > > last_block = ext4_blocks_count(sbi->s_es) - 1;
> > >
> > > No need to check this featyre for every group, once at the beginning
> > > of the function is enough.
> > >
> >
> > Do you mean something like the original patch?
> > http://lists.openwall.net/linux-ext4/2007/07/12/20
> >
> > Wouldn't we need to check all the descriptor for corruption if checksum
> > is not enable on the filesystem?
>
> Yes, I just meant you don't need to have:
>
> EXT4_HAS_INCOMPAT_FEATURE(sb, EXT4_FEATURE_INCOMPAT_FLEX_BG))
>
> for each time through the loop. That loop is walked 8000 times per TB
> at mount, so if we can make it faster we should do so.
Good point, I'll send an updated patch.
-JRS
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2007-09-12 0:04 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-09-10 21:22 [PATCH] FLEX_BG Kernel support Jose R. Santos
2007-09-11 6:04 ` Andreas Dilger
2007-09-11 12:27 ` Jose R. Santos
2007-09-11 23:21 ` Andreas Dilger
2007-09-12 0:04 ` Jose R. Santos
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).