Whamcloud - gitweb
LU-6757 ldiskfs: large EA support
authorBob Glossman <bob.glossman@intel.com>
Fri, 12 Feb 2016 23:50:26 +0000 (15:50 -0800)
committerOleg Drokin <oleg.drokin@intel.com>
Tue, 1 Mar 2016 13:20:50 +0000 (08:20 -0500)
For large EA support, ext4_xattr_check_names() will return -EIO. This
patch fixes that by checking whether the large EA value is saved in an
external EA inode or not.

this mod copys a small subset of http://review.whamcloud.com/16012 that made
this change in el7 ldiskfs into sles12 ldiskfs

Signed-off-by: Bob Glossman <bob.glossman@intel.com>
Change-Id: I5f29eb5d87e1a3a0a928298ed3ac993c7a0bcdd1
Reviewed-on: http://review.whamcloud.com/18449
Tested-by: Jenkins
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Jian Yu <jian.yu@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
ldiskfs/kernel_patches/patches/sles12/ext4-large-eas.patch

index baf0b57..f82cd3f 100644 (file)
@@ -145,6 +145,14 @@ Index: linux-stage/fs/ext4/xattr.c
 ===================================================================
 --- linux-stage.orig/fs/ext4/xattr.c
 +++ linux-stage/fs/ext4/xattr.c
+@@ -201,6 +201,7 @@ ext4_xattr_check_names(struct ext4_xattr
+       while (!IS_LAST_ENTRY(entry)) {
+               if (entry->e_value_size != 0 &&
++                  entry->e_value_inum == 0 &&
+                   (value_start + le16_to_cpu(entry->e_value_offs) <
+                    (void *)e + sizeof(__u32) ||
+                    value_start + le16_to_cpu(entry->e_value_offs) +
 @@ -233,19 +233,26 @@ ext4_xattr_check_block(struct inode *ino
  }