OpenCloudOS-Kernel/fs/ext4
Jan Kara 2d90c160e5 ext4: more efficient SEEK_DATA implementation
Using SEEK_DATA in a huge sparse file can easily lead to sotflockups as
ext4_seek_data() iterates hole block-by-block. Fix the problem by using
returned hole size from ext4_map_blocks() and thus skip the hole in one
go.

Update also SEEK_HOLE implementation to follow the same pattern as
SEEK_DATA to make future maintenance easier.

Furthermore we add cond_resched() to both ext4_seek_data() and
ext4_seek_hole() to avoid softlockups in case evil user creates huge
fragmented file and we have to go through lots of extents.

Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
2016-03-09 23:11:13 -05:00
..
Kconfig ext4: Update EXT4_USE_FOR_EXT2 description 2015-09-24 13:27:47 +02:00
Makefile ext4: move sysfs code from super.c to fs/ext4/sysfs.c 2015-09-23 12:44:17 -04:00
acl.c ext4: remove unused header files 2015-04-02 23:47:42 -04:00
acl.h ext2/3/4: use generic posix ACL infrastructure 2014-01-25 23:58:19 -05:00
balloc.c ext4: fix scheduling in atomic on group checksum failure 2016-02-11 23:15:12 -05: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
crypto.c ext4 crypto: revalidate dentry after adding or removing the key 2016-02-07 19:35:05 -05:00
crypto_fname.c ext4 crypto: replace some BUG_ON()'s with error checks 2015-10-03 10:49:27 -04:00
crypto_key.c ext4 crypto: add missing locking for keyring_key access 2015-12-10 00:57:58 -05:00
crypto_policy.c ext4 crypto: replace some BUG_ON()'s with error checks 2015-10-03 10:49:27 -04:00
dir.c ext4: fix memleak in ext4_readdir() 2016-02-16 00:20:19 -05:00
ext4.h ext4: more efficient SEEK_DATA implementation 2016-03-09 23:11:13 -05:00
ext4_crypto.h ext4 crypto: allocate bounce pages using GFP_NOWAIT 2015-06-03 09:32:39 -04:00
ext4_extents.h ext4: teach ext4_ext_find_extent() to realloc path if necessary 2014-09-01 14:40:09 -04: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: clean up feature test macros with predicate functions 2015-10-17 16:18:43 -04:00
extents.c ext4: return hole from ext4_map_blocks() 2016-03-09 22:54:00 -05:00
extents_status.c ext4: fix setting of referenced bit in ext4_es_lookup_extent() 2016-03-09 22:26:55 -05:00
extents_status.h ext4: move procfs registration code to fs/ext4/sysfs.c 2015-09-23 12:46:17 -04:00
file.c ext4: more efficient SEEK_DATA implementation 2016-03-09 23:11:13 -05:00
fsync.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2015-04-26 17:22:07 -07:00
hash.c ext4: remove unused header files 2015-04-02 23:47:42 -04:00
ialloc.c ext4: fix scheduling in atomic on group checksum failure 2016-02-11 23:15:12 -05:00
indirect.c ext4: return hole from ext4_map_blocks() 2016-03-09 22:54:00 -05:00
inline.c ext4: rename and split get blocks functions 2016-03-08 23:08:10 -05:00
inode.c ext4: more efficient SEEK_DATA implementation 2016-03-09 23:11:13 -05:00
ioctl.c ext4: ioctl: fix erroneous return value 2016-02-11 23:57:21 -05:00
mballoc.c ext4: make sure to revoke all the freeable blocks in ext4_free_blocks 2016-02-21 18:31:41 -05:00
mballoc.h ext4: remove unused ac_ex_scanned 2014-02-20 13:32:10 -05:00
migrate.c ext4: clean up feature test macros with predicate functions 2015-10-17 16:18:43 -04:00
mmp.c ext4: call out CRC and corruption errors with specific error codes 2015-10-17 16:16:04 -04:00
move_extent.c ext4: iterate over buffer heads correctly in move_extent_per_page() 2016-02-21 18:38:44 -05:00
namei.c ext4 crypto: move context consistency check to ext4_file_open() 2016-02-08 00:54:26 -05:00
page-io.c ext4: remove i_ioend_count 2016-03-08 23:39:21 -05:00
readpage.c Merge branch 'akpm' (patches from Andrew) 2015-11-07 14:32:45 -08:00
resize.c ext4: fix potential integer overflow 2016-02-12 01:15:59 -05:00
super.c ext4: remove i_ioend_count 2016-03-08 23:39:21 -05:00
symlink.c Merge branch 'work.symlinks' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2016-01-11 13:13:23 -08:00
sysfs.c ext4: add "static" to ext4_seq_##name##_fops struct 2015-11-26 15:52:24 -05:00
truncate.h ext4: fix races between page faults and hole punching 2015-12-07 14:28:03 -05:00
xattr.c mbcache: add reusable flag to cache entries 2016-02-22 22:44:04 -05:00
xattr.h mbcache2: rename to mbcache 2016-02-22 22:35:22 -05:00
xattr_security.c xattr handlers: Simplify list operation 2015-12-13 19:46:12 -05:00
xattr_trusted.c xattr handlers: Simplify list operation 2015-12-13 19:46:12 -05:00
xattr_user.c xattr handlers: Simplify list operation 2015-12-13 19:46:12 -05:00