diff options
Diffstat (limited to 'fs')
-rw-r--r-- | fs/ext3/xattr.c | 5 | ||||
-rw-r--r-- | fs/ext4/xattr.c | 5 |
2 files changed, 10 insertions, 0 deletions
diff --git a/fs/ext3/xattr.c b/fs/ext3/xattr.c index d4a4f0e9ff69..175414ac2210 100644 --- a/fs/ext3/xattr.c +++ b/fs/ext3/xattr.c | |||
@@ -1000,6 +1000,11 @@ ext3_xattr_set_handle(handle_t *handle, struct inode *inode, int name_index, | |||
1000 | i.value = NULL; | 1000 | i.value = NULL; |
1001 | error = ext3_xattr_block_set(handle, inode, &i, &bs); | 1001 | error = ext3_xattr_block_set(handle, inode, &i, &bs); |
1002 | } else if (error == -ENOSPC) { | 1002 | } else if (error == -ENOSPC) { |
1003 | if (EXT3_I(inode)->i_file_acl && !bs.s.base) { | ||
1004 | error = ext3_xattr_block_find(inode, &i, &bs); | ||
1005 | if (error) | ||
1006 | goto cleanup; | ||
1007 | } | ||
1003 | error = ext3_xattr_block_set(handle, inode, &i, &bs); | 1008 | error = ext3_xattr_block_set(handle, inode, &i, &bs); |
1004 | if (error) | 1009 | if (error) |
1005 | goto cleanup; | 1010 | goto cleanup; |
diff --git a/fs/ext4/xattr.c b/fs/ext4/xattr.c index 3fbc2c6c3d0e..ff08633f398e 100644 --- a/fs/ext4/xattr.c +++ b/fs/ext4/xattr.c | |||
@@ -1009,6 +1009,11 @@ ext4_xattr_set_handle(handle_t *handle, struct inode *inode, int name_index, | |||
1009 | i.value = NULL; | 1009 | i.value = NULL; |
1010 | error = ext4_xattr_block_set(handle, inode, &i, &bs); | 1010 | error = ext4_xattr_block_set(handle, inode, &i, &bs); |
1011 | } else if (error == -ENOSPC) { | 1011 | } else if (error == -ENOSPC) { |
1012 | if (EXT4_I(inode)->i_file_acl && !bs.s.base) { | ||
1013 | error = ext4_xattr_block_find(inode, &i, &bs); | ||
1014 | if (error) | ||
1015 | goto cleanup; | ||
1016 | } | ||
1012 | error = ext4_xattr_block_set(handle, inode, &i, &bs); | 1017 | error = ext4_xattr_block_set(handle, inode, &i, &bs); |
1013 | if (error) | 1018 | if (error) |
1014 | goto cleanup; | 1019 | goto cleanup; |