Whamcloud - gitweb
LU-16286 ldiskfs: reimplement nodelalloc optimization
authorAndrew Perepechko <andrew.perepechko@hpe.com>
Mon, 1 May 2023 17:54:29 +0000 (10:54 -0700)
committerAndreas Dilger <adilger@whamcloud.com>
Thu, 11 May 2023 00:43:33 +0000 (00:43 +0000)
fiemap calls perform costly delayed extent search affecting
BRW performance, however, in Lustre we don't use delayed
allocation at all. Let's skip this search completely as we did
in RHEL7.

Lustre-change: https://review.whamcloud.com/49007
Lustre-commit: 3dd73b5c5d61a219c702873711055cb1cc80394a

LU-16286 ldiskfs: add ext4_find_delayed_extent patch to more series

Add rhel8.4/ext4-optimize-find_delayed_extent.patch to RHEL 8.7
ldiskfs patch series.

Test-Parameters: trivial clientdistro=el8.6 serverdistro=el8.6 testlist=sanity
Test-Parameters: trivial clientdistro=el8.7 serverdistro=el8.7 testlist=sanity

Change-Id: I2c3562cf5cbdf3c5532e4b79b28a040a995322b7
Signed-off-by: Andrew Perepechko <andrew.perepechko@hpe.com>
HPE-bug-id: LUS-11161
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Alexander Boyko <alexander.boyko@hpe.com>
Reviewed-on: https://review.whamcloud.com/c/ex/lustre-release/+/50811
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Jian Yu <yujian@whamcloud.com>
ldiskfs/kernel_patches/patches/rhel8.4/ext4-optimize-find_delayed_extent.patch [new file with mode: 0644]
ldiskfs/kernel_patches/series/ldiskfs-4.18-rhel8.4.series
ldiskfs/kernel_patches/series/ldiskfs-4.18-rhel8.5.series
ldiskfs/kernel_patches/series/ldiskfs-4.18-rhel8.6.series
ldiskfs/kernel_patches/series/ldiskfs-4.18-rhel8.7.series

diff --git a/ldiskfs/kernel_patches/patches/rhel8.4/ext4-optimize-find_delayed_extent.patch b/ldiskfs/kernel_patches/patches/rhel8.4/ext4-optimize-find_delayed_extent.patch
new file mode 100644 (file)
index 0000000..a6b156a
--- /dev/null
@@ -0,0 +1,16 @@
+--- linux-stage.orig/fs/ext4/extents.c 2022-09-05 09:04:31.628122705 -0600
++++ linux-stage/fs/ext4/extents.c      2022-09-06 05:32:57.083369853 -0600
+@@ -5064,6 +5064,13 @@ static int ext4_find_delayed_extent(s
+       struct extent_status es;
+       ext4_lblk_t block, next_del;
++      if (!test_opt(inode->i_sb, DELALLOC)) {
++              if (newes->es_pblk == 0)
++                      return 0;
++
++              return EXT_MAX_BLOCKS;
++      }
++
+       if (newes->es_pblk == 0) {
+               ext4_es_find_extent_range(inode, &ext4_es_is_delayed,
+                                         newes->es_lblk,
index c274fdd..11e3007 100644 (file)
@@ -31,4 +31,5 @@ rhel8/ext4-ialloc-uid-gid-and-pass-owner-down.patch
 base/ext4-projid-xattrs.patch
 rhel8.5/ext4-filename-encode.patch
 rhel8/ext4-old_ea_inodes_handling_fix.patch
+rhel8.4/ext4-optimize-find_delayed_extent.patch
 base/ext4-delayed-iput.patch
index c274fdd..11e3007 100644 (file)
@@ -31,4 +31,5 @@ rhel8/ext4-ialloc-uid-gid-and-pass-owner-down.patch
 base/ext4-projid-xattrs.patch
 rhel8.5/ext4-filename-encode.patch
 rhel8/ext4-old_ea_inodes_handling_fix.patch
+rhel8.4/ext4-optimize-find_delayed_extent.patch
 base/ext4-delayed-iput.patch
index c274fdd..11e3007 100644 (file)
@@ -31,4 +31,5 @@ rhel8/ext4-ialloc-uid-gid-and-pass-owner-down.patch
 base/ext4-projid-xattrs.patch
 rhel8.5/ext4-filename-encode.patch
 rhel8/ext4-old_ea_inodes_handling_fix.patch
+rhel8.4/ext4-optimize-find_delayed_extent.patch
 base/ext4-delayed-iput.patch
index 1cdea2b..63dc6d1 100644 (file)
@@ -32,3 +32,4 @@ rhel8.5/ext4-enc-flag.patch
 base/ext4-delayed-iput.patch
 rhel8.7/ext4-filename-encode.patch
 rhel8/ext4-old_ea_inodes_handling_fix.patch
+rhel8.4/ext4-optimize-find_delayed_extent.patch