Patchwork [01/02] ext2: reserve INCOMPAT_INLINEDATA feature flag

login
register
mail settings
Submitter Andreas Dilger
Date Dec. 7, 2011, 12:13 a.m.
Message ID <E8BB5200-9BE3-49FE-AFC2-18B2E7BBA5A8@whamcloud.com>
Download mbox | patch
Permalink /patch/129858/
State New
Headers show

Comments

Andreas Dilger - Dec. 7, 2011, 12:13 a.m.
Reserve the EXT4_FEATURE_INCOMPAT_INLINEDATA feature flag for use
with storing small file data in the i_blocks field (up to 60 bytes)
and/or the large xattr space (after i_extra_isize, up to the large
inode size).  On typical filesystems this can save 1-3% of the space,
and more importantly it also avoids seeking to read the data block.

This will become increasingly important with bigalloc filesystems,
since they consume a full cluster of blocks for each file, including
small directories that could easily fit into the inode itself.

Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
Originally-by: Tao Ma <tm@tao.ma>
---
 lib/ext2fs/ext2_fs.h |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)
Darrick J. Wong - Dec. 7, 2011, 12:39 a.m.
On Tue, Dec 06, 2011 at 05:13:51PM -0700, Andreas Dilger wrote:
> Reserve the EXT4_FEATURE_INCOMPAT_INLINEDATA feature flag for use
> with storing small file data in the i_blocks field (up to 60 bytes)
> and/or the large xattr space (after i_extra_isize, up to the large
> inode size).  On typical filesystems this can save 1-3% of the space,
> and more importantly it also avoids seeking to read the data block.
> 
> This will become increasingly important with bigalloc filesystems,
> since they consume a full cluster of blocks for each file, including
> small directories that could easily fit into the inode itself.
> 
> Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
> Originally-by: Tao Ma <tm@tao.ma>
> ---
>  lib/ext2fs/ext2_fs.h |    1 +
>  1 files changed, 1 insertions(+), 0 deletions(-)
> 
> diff --git a/lib/ext2fs/ext2_fs.h b/lib/ext2fs/ext2_fs.h
> index 0f8cde8..6cf47f9 100644
> --- a/lib/ext2fs/ext2_fs.h
> +++ b/lib/ext2fs/ext2_fs.h
> @@ -719,6 +719,7 @@ struct ext2_super_block {
>  #define EXT4_FEATURE_INCOMPAT_FLEX_BG		0x0200
>  #define EXT4_FEATURE_INCOMPAT_EA_INODE		0x0400
>  #define EXT4_FEATURE_INCOMPAT_DIRDATA		0x1000
> +#define EXT4_FEATURE_INCOMPAT_INLINEDATA	0x2000 /* data in inode */

I was using 0x2000 for EXT4_FEATURE_INCOMPAT_BG_USE_META_CSUM, to change the
block group checksum to use crc32c.

--D
> 
>  #define EXT2_FEATURE_COMPAT_SUPP	0
>  #define EXT2_FEATURE_INCOMPAT_SUPP    (EXT2_FEATURE_INCOMPAT_FILETYPE| \
> -- 
> 1.7.2
> 
> 
> 
> --
> 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
> 

--
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
Tao Ma - Dec. 7, 2011, 1:43 a.m.
On 12/07/2011 08:13 AM, Andreas Dilger wrote:
> Reserve the EXT4_FEATURE_INCOMPAT_INLINEDATA feature flag for use
> with storing small file data in the i_blocks field (up to 60 bytes)
> and/or the large xattr space (after i_extra_isize, up to the large
> inode size).  On typical filesystems this can save 1-3% of the space,
> and more importantly it also avoids seeking to read the data block.
> 
> This will become increasingly important with bigalloc filesystems,
> since they consume a full cluster of blocks for each file, including
> small directories that could easily fit into the inode itself.
> 
> Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
> Originally-by: Tao Ma <tm@tao.ma>
I am fine with it. Thanks.

Tao
> ---
>  lib/ext2fs/ext2_fs.h |    1 +
>  1 files changed, 1 insertions(+), 0 deletions(-)
> 
> diff --git a/lib/ext2fs/ext2_fs.h b/lib/ext2fs/ext2_fs.h
> index 0f8cde8..6cf47f9 100644
> --- a/lib/ext2fs/ext2_fs.h
> +++ b/lib/ext2fs/ext2_fs.h
> @@ -719,6 +719,7 @@ struct ext2_super_block {
>  #define EXT4_FEATURE_INCOMPAT_FLEX_BG		0x0200
>  #define EXT4_FEATURE_INCOMPAT_EA_INODE		0x0400
>  #define EXT4_FEATURE_INCOMPAT_DIRDATA		0x1000
> +#define EXT4_FEATURE_INCOMPAT_INLINEDATA	0x2000 /* data in inode */
>  
>  #define EXT2_FEATURE_COMPAT_SUPP	0
>  #define EXT2_FEATURE_INCOMPAT_SUPP    (EXT2_FEATURE_INCOMPAT_FILETYPE| \

--
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
Andreas Dilger - Dec. 7, 2011, 9:45 a.m.
On 2011-12-06, at 5:39 PM, Darrick J. Wong wrote:
> On Tue, Dec 06, 2011 at 05:13:51PM -0700, Andreas Dilger wrote:
>> +#define EXT4_FEATURE_INCOMPAT_INLINEDATA	0x2000 /* data in inode */
> 
> I was using 0x2000 for EXT4_FEATURE_INCOMPAT_BG_USE_META_CSUM, to change
> the block group checksum to use crc32c.

I didn't see that...  I was looking at your patch and only noticed
EXT4_FEATURE_RO_COMPAT_METADATA_CSUM.  I suspect your patch is closer
to landing it is better to use the 0x2000 value for BG_USE_META_CSUM,
and change the value for INLINEDATA to 0x8000 instead.

Cheers, Andreas
--
Andreas Dilger 
Principal Engineer
Whamcloud, Inc.



--
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
Tao Ma - Dec. 7, 2011, 10:14 a.m.
On 12/07/2011 05:45 PM, Andreas Dilger wrote:
> On 2011-12-06, at 5:39 PM, Darrick J. Wong wrote:
>> On Tue, Dec 06, 2011 at 05:13:51PM -0700, Andreas Dilger wrote:
>>> +#define EXT4_FEATURE_INCOMPAT_INLINEDATA	0x2000 /* data in inode */
>>
>> I was using 0x2000 for EXT4_FEATURE_INCOMPAT_BG_USE_META_CSUM, to change
>> the block group checksum to use crc32c.
> 
> I didn't see that...  I was looking at your patch and only noticed
> EXT4_FEATURE_RO_COMPAT_METADATA_CSUM.  I suspect your patch is closer
> to landing it is better to use the 0x2000 value for BG_USE_META_CSUM,
> and change the value for INLINEDATA to 0x8000 instead.
OK, I will use this number for inline data for the new version if there
is no objection.

Thanks
Tao
--
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

Patch

diff --git a/lib/ext2fs/ext2_fs.h b/lib/ext2fs/ext2_fs.h
index 0f8cde8..6cf47f9 100644
--- a/lib/ext2fs/ext2_fs.h
+++ b/lib/ext2fs/ext2_fs.h
@@ -719,6 +719,7 @@  struct ext2_super_block {
 #define EXT4_FEATURE_INCOMPAT_FLEX_BG		0x0200
 #define EXT4_FEATURE_INCOMPAT_EA_INODE		0x0400
 #define EXT4_FEATURE_INCOMPAT_DIRDATA		0x1000
+#define EXT4_FEATURE_INCOMPAT_INLINEDATA	0x2000 /* data in inode */
 
 #define EXT2_FEATURE_COMPAT_SUPP	0
 #define EXT2_FEATURE_INCOMPAT_SUPP    (EXT2_FEATURE_INCOMPAT_FILETYPE| \