From: Tao Ma <tm@tao.ma>
To: Andreas Dilger <adilger@whamcloud.com>
Cc: Zheng Liu <gnehzuil.liu@gmail.com>, linux-ext4@vger.kernel.org
Subject: Re: [PATCH 00/32] e2fsprogs: make e2fsprogs support inline data
Date: Mon, 16 Apr 2012 23:10:32 +0800 [thread overview]
Message-ID: <4F8C3668.1040907@tao.ma> (raw)
In-Reply-To: <729213E5-B7EB-493E-A92B-0BA56FC3BD7E@dilger.ca>
On 04/16/2012 11:08 PM, Andreas Dilger wrote:
> On 2012-04-16, at 4:39 AM, Zheng Liu wrote:
>> Here is v2 for making e2fsprogs support inline data. Now debugfs
>> supports inline data in read-write mode. Meanwhile e2fsck has
>> been improved to support inline data feature.
>>
>> v1->v2:
>> * [mke2fs] automatically set EXT_ATTR feature when INLINE_DATA is set
>> * [debugfs] supports read-write mode
>
> As with the previous patch series, there is a need to show some
> benchmark data that indicates how much improvement this feature
> provides. Some examples would include percentage of directories
> stored inline (e.g. in a typical distro installation), performance
> improvement (e.g. cold-cache filesystem traversal). It is likely
> that these improvements will be more visible with bigalloc enabled
> for a large cluster size (e.g. space savings).
yeah, I am doing some benchmark test and collect the data. They will be
available when I send out the new version.
>
> Without a clear indication of performance improvement, the patch
> cannot be included due to added complexity and unclear benefits.
sure, please wait for the kernel patches. :)
>
>> In mke2fs, EXT4_FEATURE_INCOMPAT_INLINE_DATA is set to 0x2000 to
>> consist with kernel. When making a new ext4 file system with
>> INLINE_DATA feature, mke2fs will check whether EXT_ATTR is set or
>> not. If it is not set, mke2fs will mark it automatically because
>> INLINE_DATA depends on it.
>>
>> In debugfs, it can support inline data in read-write mode. Now
>> there is two problems that need to be solved. No matter whether
>> the size of data is fit into inline data or not, 'write' command
>> writes the data into disk blocks rather than inode itself. 'mkdir'
>> command will expand dir to a new disk block when inode->i_block
>> has full because Tao found a performance regression when a huge
>> number of dirs are added and removed in EA space. It causes that
>> the code in kernel might be changed. So now 'mkdir' cmd doesn't
>> add a new dir entry in EA space.
>>
>> TODO list:
>> * [mke2fs] initialize ROOT dir with inline data flag
>> * [mke2fs] initialize LOST+FOUND dir with inline data flag
>
> Note that it does not make sense to store lost+found inline. It
> is purposely created with multiple leaf blocks so that blocks
> do not need to be allocated during e2fsck runs. Probably the
> same is true for root - it will almost certainly immediately
> be moved out of the inode due to file creations.
fair enough.
Thanks
Tao
>
> Cheers, Andreas
>
>> * [debugfs] 'write' cmd writes the data into inode itself
>> * [debugfs] 'mkdir' cmd add dir entry into EA space
>>
>> Regards,
>> Zheng
>>
>> libext2fs: add EXT4_FEATURE_INCOMPAT_INLINE_DATA flag
>> mke2fs: make it support inline data feature
>> libext2fs: add inline_data feature
>> mke2fs: add inline_data feature in mke2fs's manpage
>> libext2fs: add ext2fs_find_entry_ext_attr function
>> libext2fs: add EXT4_INLINE_DATA_FL flag for inode
>> libext2fs: add data structures for inline data feature
>> libext2fs: add inline_data file
>> debugfs: make ncheck cmd support inline data
>> debugfs: make chroot and cd cmd support inline data
>> debugfs: make ls cmd support inline data
>> debugfs: make stat cmd support inline data
>> debufs: make blocks cmd support inline data
>> debugfs: make filefrag cmd support inline data
>> debugfs: make link cmd support inline data
>> debugfs: make unlink cmd support inline data
>> debugfs: make mkdir cmd support inline data
>> debugfs: make rmdir cmd support inline data
>> debugfs: make rm and kill_file cmd support inline data
>> debugfs: make pwd cmd support inline data
>> debugfs: make expand_dir cmd support inline data
>> debugfs: make lsdel cmd support inline data
>> debugfs: make undel cmd support inline data
>> debugfs: make dump and cat cmd support inline data
>> debugfs: make rdump cmd support inline data
>> debugfs: make dirsearch cmd support inline data
>> debugfs: make bma cmd support inline data
>> e2fsck: add three problem descriptions in pass1
>> e2fsck: check incorrect inline data flag
>> e2fsck: make pass1 support inline data
>> libext2fs: add read/write inline data functions
>> e2fsck: check inline data in pass2
>>
>> debugfs/debugfs.c | 25 ++-
>> debugfs/dump.c | 38 +++-
>> debugfs/filefrag.c | 30 ++-
>> debugfs/htree.c | 6 +
>> debugfs/ls.c | 8 +-
>> debugfs/lsdel.c | 19 +-
>> debugfs/ncheck.c | 8 +-
>> e2fsck/pass1.c | 70 ++++-
>> e2fsck/pass1b.c | 5 +-
>> e2fsck/pass2.c | 50 +++-
>> e2fsck/problem.c | 15 +
>> e2fsck/problem.h | 9 +
>> lib/e2p/feature.c | 2 +
>> lib/ext2fs/Makefile.in | 5 +
>> lib/ext2fs/Makefile.pq | 1 +
>> lib/ext2fs/bmap.c | 16 +
>> lib/ext2fs/dblist_dir.c | 8 +-
>> lib/ext2fs/dirblock.c | 62 ++++
>> lib/ext2fs/expanddir.c | 8 +-
>> lib/ext2fs/ext2_ext_attr.h | 4 +
>> lib/ext2fs/ext2_fs.h | 9 +
>> lib/ext2fs/ext2fs.h | 69 ++++-
>> lib/ext2fs/ext_attr.c | 26 ++
>> lib/ext2fs/get_pathname.c | 7 +-
>> lib/ext2fs/inline_data.c | 715 ++++++++++++++++++++++++++++++++++++++++++++
>> lib/ext2fs/link.c | 9 +-
>> lib/ext2fs/lookup.c | 6 +-
>> lib/ext2fs/mkdir.c | 4 +
>> lib/ext2fs/unlink.c | 9 +-
>> misc/mke2fs.8.in | 3 +
>> misc/mke2fs.c | 10 +-
>> 31 files changed, 1197 insertions(+), 59 deletions(-)
>> --
>> 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
>
>
> Cheers, Andreas
>
>
>
>
>
> --
> 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
prev parent reply other threads:[~2012-04-16 15:10 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-04-16 11:39 [PATCH 00/32] e2fsprogs: make e2fsprogs support inline data Zheng Liu
2012-04-16 11:39 ` [PATCH 01/32] libext2fs: add EXT4_FEATURE_INCOMPAT_INLINE_DATA flag Zheng Liu
2012-04-16 11:39 ` [PATCH 02/32] mke2fs: make it support inline data feature Zheng Liu
2012-04-16 11:39 ` [PATCH 03/32] libext2fs: add inline_data feature Zheng Liu
2012-04-16 11:39 ` [PATCH 04/32] mke2fs: add inline_data feature in mke2fs's manpage Zheng Liu
2012-04-16 11:39 ` [PATCH 05/32] libext2fs: add ext2fs_find_entry_ext_attr function Zheng Liu
2012-04-16 11:39 ` [PATCH 06/32] libext2fs: add EXT4_INLINE_DATA_FL flag for inode Zheng Liu
2012-04-16 11:39 ` [PATCH 07/32] libext2fs: add data structures for inline data feature Zheng Liu
2012-04-16 11:39 ` [PATCH 08/32] libext2fs: add inline_data file Zheng Liu
2012-04-16 11:39 ` [PATCH 09/32] debugfs: make ncheck cmd support inline data Zheng Liu
2012-04-16 11:39 ` [PATCH 10/32] debugfs: make chroot and cd " Zheng Liu
2012-04-16 11:39 ` [PATCH 11/32] debugfs: make ls " Zheng Liu
2012-04-16 11:39 ` [PATCH 12/32] debugfs: make stat " Zheng Liu
2012-04-16 11:39 ` [PATCH 13/32] debufs: make blocks " Zheng Liu
2012-04-16 11:39 ` [PATCH 14/32] debugfs: make filefrag " Zheng Liu
2012-04-16 11:39 ` [PATCH 15/32] debugfs: make link " Zheng Liu
2012-04-16 11:39 ` [PATCH 16/32] debugfs: make unlink " Zheng Liu
2012-04-16 11:39 ` [PATCH 17/32] debugfs: make mkdir " Zheng Liu
2012-04-16 11:39 ` [PATCH 18/32] debugfs: make rmdir " Zheng Liu
2012-04-16 11:39 ` [PATCH 19/32] debugfs: make rm and kill_file " Zheng Liu
2012-04-16 11:39 ` [PATCH 20/32] debugfs: make pwd " Zheng Liu
2012-04-16 11:39 ` [PATCH 21/32] debugfs: make expand_dir " Zheng Liu
2012-04-16 11:39 ` [PATCH 22/32] debugfs: make lsdel " Zheng Liu
2012-04-16 11:39 ` [PATCH 23/32] debugfs: make undel " Zheng Liu
2012-04-16 11:39 ` [PATCH 24/32] debugfs: make dump and cat " Zheng Liu
2012-04-16 11:40 ` [PATCH 25/32] debugfs: make rdump " Zheng Liu
2012-04-16 11:40 ` [PATCH 26/32] debugfs: make dirsearch " Zheng Liu
2012-04-16 11:40 ` [PATCH 27/32] debugfs: make bma " Zheng Liu
2012-04-16 11:40 ` [PATCH 28/32] e2fsck: add three problem descriptions in pass1 Zheng Liu
2012-04-16 11:40 ` [PATCH 29/32] e2fsck: check incorrect inline data flag Zheng Liu
2012-04-16 11:40 ` [PATCH 30/32] e2fsck: make pass1 support inline data Zheng Liu
2012-04-16 11:40 ` [PATCH 31/32] libext2fs: add read/write inline data functions Zheng Liu
2012-04-16 11:40 ` [PATCH 32/32] e2fsck: check inline data in pass2 Zheng Liu
2012-04-16 15:08 ` [PATCH 00/32] e2fsprogs: make e2fsprogs support inline data Andreas Dilger
2012-04-16 15:10 ` Tao Ma [this message]
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=4F8C3668.1040907@tao.ma \
--to=tm@tao.ma \
--cc=adilger@whamcloud.com \
--cc=gnehzuil.liu@gmail.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).