linux/fs/ext4
Jan Kara e3014d14a8 ext4: fixup free space calculations when expanding inodes
Conditions checking whether there is enough free space in an xattr block
and when xattr is large enough to make enough space in the inode forgot
to account for the fact that inode need not be completely filled up with
xattrs. Thus we could move unnecessarily many xattrs out of inode or
even falsely claim there is not enough space to expand the inode. We
also forgot to update the amount of free space in xattr block when moving
more xattrs and thus could decide to move too big xattr resulting in
unexpected failure.

Fix these problems by properly updating free space in the inode and
xattr block as we move xattrs. To simplify the math, avoid shifting
xattrs after removing each one xattr and instead just shift xattrs only
once there is enough free space in the inode.

Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
2016-08-29 15:38:11 -04:00
..
acl.c posix_acl: Inode acl caching fixes 2016-03-31 00:30:15 -04:00
acl.h
balloc.c The major change this cycle is deleting ext4's copy of the file system 2016-07-26 18:35:55 -07:00
bitmap.c ext4: remove unused header files 2015-04-02 23:47:42 -04:00
block_validity.c ext4: call out CRC and corruption errors with specific error codes 2015-10-17 16:16:04 -04:00
dir.c ext4 crypto: migrate into vfs's crypto engine 2016-07-10 14:01:03 -04:00
ext4_extents.h ext4: fix misspellings in comments. 2016-03-09 23:49:05 -05:00
ext4_jbd2.c ext4: fix potential use after free in __ext4_journal_stop 2015-10-17 22:57:06 -04:00
ext4_jbd2.h ext4: optimize ext4_should_retry_alloc() to improve ENOSPC performance 2016-06-26 18:24:01 -04:00
ext4.h ext4 crypto: migrate into vfs's crypto engine 2016-07-10 14:01:03 -04:00
extents_status.c ext4: remove trailing \n from ext4_warning/ext4_error calls 2016-04-27 01:11:21 -04:00
extents_status.h ext4: move procfs registration code to fs/ext4/sysfs.c 2015-09-23 12:46:17 -04:00
extents.c ext4: verify extent header depth 2016-07-15 00:22:07 -04:00
file.c Merge branch 'akpm' (patches from Andrew) 2016-07-26 19:55:54 -07:00
fsync.c ext4: respect the nobarrier mount option in nojournal mode 2016-06-26 18:25:01 -04:00
hash.c ext4: remove unused header files 2015-04-02 23:47:42 -04:00
ialloc.c The major change this cycle is deleting ext4's copy of the file system 2016-07-26 18:35:55 -07:00
indirect.c ext4: refactor direct IO code 2016-05-13 00:44:16 -04:00
inline.c ext4 crypto: migrate into vfs's crypto engine 2016-07-10 14:01:03 -04:00
inode.c Fix bugs that could cause kernel deadlocks or file system corruption 2016-08-29 12:37:11 -07:00
ioctl.c ext4 crypto: migrate into vfs's crypto engine 2016-07-10 14:01:03 -04:00
Kconfig ext4 crypto: migrate into vfs's crypto engine 2016-07-10 14:01:03 -04:00
Makefile ext4 crypto: migrate into vfs's crypto engine 2016-07-10 14:01:03 -04:00
mballoc.c Merge branch 'work.misc' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2016-07-28 12:59:05 -07:00
mballoc.h ext4: fix compile error while opening the macro DOUBLE_CHECK 2016-03-13 17:18:12 -04:00
migrate.c ext4: fix misspellings in comments. 2016-03-09 23:49:05 -05:00
mmp.c fs: have submit_bh users pass in op and flags separately 2016-06-07 13:41:38 -06:00
move_extent.c ext4: do not ask jbd2 to write data for delalloc buffers 2016-04-24 00:56:08 -04:00
namei.c The major change this cycle is deleting ext4's copy of the file system 2016-07-26 18:35:55 -07:00
page-io.c The major change this cycle is deleting ext4's copy of the file system 2016-07-26 18:35:55 -07:00
readpage.c Merge branch 'akpm' (patches from Andrew) 2016-07-26 19:55:54 -07:00
resize.c ext4: remove trailing \n from ext4_warning/ext4_error calls 2016-04-27 01:11:21 -04:00
super.c Fix bugs that could cause kernel deadlocks or file system corruption 2016-08-29 12:37:11 -07:00
symlink.c ext4 crypto: migrate into vfs's crypto engine 2016-07-10 14:01:03 -04:00
sysfs.c drop redundant ->owner initializations 2016-05-29 19:08:00 -04:00
truncate.h ext4: fix races between page faults and hole punching 2015-12-07 14:28:03 -05:00
xattr_security.c switch xattr_handler->set() to passing dentry and inode separately 2016-05-27 15:39:43 -04:00
xattr_trusted.c switch xattr_handler->set() to passing dentry and inode separately 2016-05-27 15:39:43 -04:00
xattr_user.c switch xattr_handler->set() to passing dentry and inode separately 2016-05-27 15:39:43 -04:00
xattr.c ext4: fixup free space calculations when expanding inodes 2016-08-29 15:38:11 -04:00
xattr.h ext4: reserve xattr index for the Hurd 2016-07-31 23:38:36 -04:00