Whamcloud - gitweb
LU-12481 osd-ldiskfs: allow full 64KB xattr size 52/35352/2
authorAndreas Dilger <adilger@whamcloud.com>
Fri, 28 Jun 2019 00:53:04 +0000 (18:53 -0600)
committerOleg Drokin <green@whamcloud.com>
Fri, 12 Jul 2019 05:22:44 +0000 (05:22 +0000)
When the 'ea_inode' feature is enabled, allow the full 64KB xattr
size, since the xattr data is stored directly in the ea_inode data
blocks, while the ext4_xattr_entry and ext4_xattr_hdr structures are
stored separately in the parent inode or external xattr block.

This avoids errors on the client trying to set a full-sized inode:

    setfattr: /mnt/lustre/f61.conf-sanity: Argument list too long

Fixes: 3ec712bd183a ("LU-11868 osd: Set max ea size to XATTR_SIZE_MAX")
Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
Change-Id: I1320c32af98ab0feeeb147d8dbbc66ec7d1b8e1f
Reviewed-on: https://review.whamcloud.com/35352
Tested-by: jenkins <devops@whamcloud.com>
Reviewed-by: Patrick Farrell <pfarrell@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Wang Shilong <wshilong@ddn.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lustre/osd-ldiskfs/osd_handler.c
lustre/tests/conf-sanity.sh

index 0b6a85c..0a7cdee 100644 (file)
@@ -2319,8 +2319,8 @@ static void osd_conf_get(const struct lu_env *env,
 #endif
                param->ddp_max_ea_size = sb->s_blocksize - ea_overhead;
 
-       if (param->ddp_max_ea_size > OBD_MAX_EA_SIZE - ea_overhead)
-               param->ddp_max_ea_size = OBD_MAX_EA_SIZE - ea_overhead;
+       if (param->ddp_max_ea_size > OBD_MAX_EA_SIZE)
+               param->ddp_max_ea_size = OBD_MAX_EA_SIZE;
 
        /*
         * Preferred RPC size for efficient disk IO.  4MB shows good
index cafcadc..79cec18 100644 (file)
@@ -4572,7 +4572,7 @@ test_61() { # LU-80
        local small_value="bar"
 
        local name="trusted.big"
-       log "save large xattr $name on $file"
+       log "save large xattr of $(max_xattr_size) bytes on $name on $file"
        setfattr -n $name -v $large_value $file ||
                error "saving $name on $file failed"