ext4: fix credits calculation for xattr inode
authorTahsin Erdogan <tahsin@google.com>
Thu, 22 Jun 2017 02:16:20 +0000 (22:16 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Thu, 22 Jun 2017 02:16:20 +0000 (22:16 -0400)
When there is no space for a value in xattr block, it may be stored
in an xattr inode even if the value length is less than
EXT4_XATTR_MIN_LARGE_EA_SIZE(). So the current assumption in credits
calculation is wrong.

Signed-off-by: Tahsin Erdogan <tahsin@google.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
fs/ext4/xattr.c

index ed27b5241e69f52473ae241923c021dd5860c52b..9932254c3de93a44bea1293d508df8938763c435 100644 (file)
@@ -1588,8 +1588,7 @@ ext4_xattr_set(struct inode *inode, int name_index, const char *name,
        if (error)
                return error;
 
-       if ((value_len >= EXT4_XATTR_MIN_LARGE_EA_SIZE(sb->s_blocksize)) &&
-           ext4_has_feature_ea_inode(sb)) {
+       if (ext4_has_feature_ea_inode(sb)) {
                int nrblocks = (value_len + sb->s_blocksize - 1) >>
                                        sb->s_blocksize_bits;