On Fri, Jul 06, 2018 at 11:12:21AM +0800, Shan Hai wrote: > > This series implements xfs inode data inlining feature. > > Refered below link during development: > https://marc.info/?l=linux-xfs&m=120493585731509&w=2 > > > How it works: > - the data inlining happens at: > write_iter: for DIO/DAX write > writeback: for buffered write > - extents to local format conversion is done in writeback but not in write_iter > - local to extents format conversion is done in the write_iter and writeback > - log the whole inode (core/data) on extents to local conversion > - add a new mkfs.xfs option to enable data inline feature > > How to test: > mkfs.xfs -f -i size=2048,inline=1 -m crc=1,finobt=1,rmapbt=1,reflink=1 /dev/sdX > mount /dev/sdX mnt_pnt > > Test results: > mkfs.xfs -f -i size=2048,inline=1 -m crc=1,finobt=1,rmapbt=1,reflink=1 /dev/sdb > mkfs.xfs -f -i size=2048 -m crc=1,finobt=1,rmapbt=1,reflink=1 /dev/sdd > mount /dev/sdb /mnt/sdb > mount /dev/sdd /mnt/sdd > > Copy the linux v4.18-rc3 source code to /mnt/sdb and /mnt/sdd respectively: > Filesystem Size Used Avail Use% Mounted on > /dev/sdb 10G 2.4G 7.7G 24% /mnt/sdb > /dev/sdd 10G 3.1G 6.9G 31% /mnt/sdd > > mkfs.xfs -f -i size=2048,inline=1 -m crc=1,finobt=1,rmapbt=1,reflink=1 /dev/sdc > mkfs.xfs -f -i size=2048 -m crc=1,finobt=1,rmapbt=1,reflink=1 /dev/sde > mount /dev/sdc /mnt/sdc > mount /dev/sde /mnt/sde > > Build the v4.18-rc3 kernel on /dev/sdc and /dev/sde respectively: > make x86_64_defconfig > > Filesystem Size Used Avail Use% Mounted on > /dev/sdc 10G 689M 9.4G 7% /mnt/sdc > /dev/sde 10G 694M 9.4G 7% /mnt/sde Not much of a savings... but I'll give this a preliminary review anyway. Also, I am probably going to merge hch's bufferhead killing series for 4.19, which will rip right through a lot of this. :) --D > > Kernel part: > 0001-xfs-introduce-inline-data-superblock-feature-bit.patch > 0002-xfs-introduce-extents-to-local-conversion-helper.patch > 0003-xfs-convert-inode-from-extents-to-local-format.patch > 0004-xfs-implement-inline-data-read-write-code.patch > 0005-xfs-consider-the-local-format-inode-in-misc-operatio.patch > 0006-xfs-fix-imbalanced-locking.patch > 0007-xfs-return-non-zero-blocks-for-inline-data.patch > 0008-xfs-skip-local-format-inode-for-reflinking.patch > > fs/xfs/libxfs/xfs_bmap.c | 78 +++++++++++++++++++++++++++++++----- > fs/xfs/libxfs/xfs_bmap.h | 4 ++ > fs/xfs/libxfs/xfs_format.h | 10 ++++- > fs/xfs/libxfs/xfs_fs.h | 1 + > fs/xfs/libxfs/xfs_inode_buf.c | 6 --- > fs/xfs/libxfs/xfs_sb.c | 2 + > fs/xfs/scrub/inode.c | 2 +- > fs/xfs/xfs_aops.c | 60 ++++++++++++++++++++++++++++ > fs/xfs/xfs_bmap_util.c | 11 +++++- > fs/xfs/xfs_file.c | 244 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- > fs/xfs/xfs_inode.c | 20 +++++++--- > fs/xfs/xfs_inode_item.c | 5 ++- > fs/xfs/xfs_ioctl.c | 5 ++- > fs/xfs/xfs_iomap.c | 5 ++- > fs/xfs/xfs_iops.c | 8 +++- > fs/xfs/xfs_log_recover.c | 3 +- > fs/xfs/xfs_reflink.c | 6 +++ > 17 files changed, 437 insertions(+), 33 deletions(-) > > xfsprogs part: > 0001-xfsprogs-add-inode-inline-data-support.patch > > growfs/xfs_growfs.c | 14 +++++++++----- > libxfs/xfs_format.h | 4 +++- > libxfs/xfs_fs.h | 1 + > mkfs/xfs_mkfs.c | 20 +++++++++++++++++--- > 4 files changed, 30 insertions(+), 9 deletions(-) > > > Thanks > Shan Hai > -- > To unsubscribe from this list: send the line "unsubscribe linux-xfs" 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-xfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html