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@xxxxxxxxxxxxxxx >> 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@xxxxxxxxxxxxxxx > 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@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html