[PATCH RFC 0/8] xfs: introduce inode data inline feature

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

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



[Index of Archives]     [XFS Filesystem Development (older mail)]     [Linux Filesystem Development]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux RAID]     [Linux SCSI]


  Powered by Linux