diff options
author | Dmitry Monakhov | 2014-12-03 00:08:53 +0100 |
---|---|---|
committer | Theodore Ts'o | 2014-12-03 00:08:53 +0100 |
commit | 14516bb7bb6ffbd49f35389f9ece3b2045ba5815 (patch) | |
tree | 23cbe197595d9dc8534dd1dbab7e1237fbb74226 /fs/ubifs/sb.c | |
parent | ext4: ext4_inline_data_fiemap should respect callers argument (diff) | |
download | kernel-qcow2-linux-14516bb7bb6ffbd49f35389f9ece3b2045ba5815.tar.gz kernel-qcow2-linux-14516bb7bb6ffbd49f35389f9ece3b2045ba5815.tar.xz kernel-qcow2-linux-14516bb7bb6ffbd49f35389f9ece3b2045ba5815.zip |
ext4: fix suboptimal seek_{data,hole} extents traversial
It is ridiculous practice to scan inode block by block, this technique
applicable only for old indirect files. This takes significant amount
of time for really large files. Let's reuse ext4_fiemap which already
traverse inode-tree in most optimal meaner.
TESTCASE:
ftruncate64(fd, 0);
ftruncate64(fd, 1ULL << 40);
/* lseek will spin very long time */
lseek64(fd, 0, SEEK_DATA);
lseek64(fd, 0, SEEK_HOLE);
Original report: https://lkml.org/lkml/2014/10/16/620
Signed-off-by: Dmitry Monakhov <dmonakhov@openvz.org>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Diffstat (limited to 'fs/ubifs/sb.c')
0 files changed, 0 insertions, 0 deletions