On 2018年07月06日 11:51, Darrick J. Wong wrote:
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
An observable savings here.
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. :)
That would be fine, thanks in advance for the review anyway :)
Thanks
Shan Hai
--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
--
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