Whamcloud - gitweb
LU-13783 ldiskfs: Add support for mainline 5.8 kernel
[fs/lustre-release.git] / ldiskfs / kernel_patches / patches / linux-5.8 / ext4-no-max-dir-size-limit-for-iam-objects.patch
diff --git a/ldiskfs/kernel_patches/patches/linux-5.8/ext4-no-max-dir-size-limit-for-iam-objects.patch b/ldiskfs/kernel_patches/patches/linux-5.8/ext4-no-max-dir-size-limit-for-iam-objects.patch
new file mode 100644 (file)
index 0000000..cd28c6b
--- /dev/null
@@ -0,0 +1,30 @@
+---
+ fs/ext4/ext4.h  |    1 +
+ fs/ext4/namei.c |    6 ++++--
+ 2 files changed, 5 insertions(+), 2 deletions(-)
+
+--- a/fs/ext4/ext4.h
++++ b/fs/ext4/ext4.h
+@@ -1716,6 +1716,7 @@ enum {
+       EXT4_STATE_NO_EXPAND,           /* No space for expansion */
+       EXT4_STATE_DA_ALLOC_CLOSE,      /* Alloc DA blks on close */
+       EXT4_STATE_EXT_MIGRATE,         /* Inode is migrating */
++      EXT4_STATE_IAM,                 /* Lustre IAM objects */
+       EXT4_STATE_NEWENTRY,            /* File just added to dir */
+       EXT4_STATE_MAY_INLINE_DATA,     /* may have in-inode data */
+       EXT4_STATE_EXT_PRECACHED,       /* extents have been precached */
+--- a/fs/ext4/namei.c
++++ b/fs/ext4/namei.c
+@@ -60,8 +60,10 @@ struct buffer_head *ext4_append(handle_t
+       if (unlikely(EXT4_SB(inode->i_sb)->s_max_dir_size_kb &&
+                    ((inode->i_size >> 10) >=
+-                    EXT4_SB(inode->i_sb)->s_max_dir_size_kb)))
+-              return ERR_PTR(-ENOSPC);
++                    EXT4_SB(inode->i_sb)->s_max_dir_size_kb))) {
++              if (!ext4_test_inode_state(inode, EXT4_STATE_IAM))
++                      return ERR_PTR(-ENOSPC);
++      }
+       /* with parallel dir operations all appends
+       * have to be serialized -bzzz */