diff options
author | Theodore Ts'o <tytso@mit.edu> | 2013-08-16 22:05:14 -0400 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2013-08-16 22:05:14 -0400 |
commit | 7869a4a6c5caa7b2e5c41ccaf46eb3371f88eea7 (patch) | |
tree | 1c55037a6b090b843b7f8669686dfdbbfd9ceb70 /fs/ext4/ioctl.c | |
parent | 107a7bd31ac003e42c0f966aa8e5b26947de6024 (diff) | |
download | linux-7869a4a6c5caa7b2e5c41ccaf46eb3371f88eea7.tar.gz linux-7869a4a6c5caa7b2e5c41ccaf46eb3371f88eea7.tar.bz2 linux-7869a4a6c5caa7b2e5c41ccaf46eb3371f88eea7.zip |
ext4: add support for extent pre-caching
Add a new fiemap flag which forces the all of the extents in an inode
to be cached in the extent_status tree. This is critically important
when using AIO to a preallocated file, since if we need to read in
blocks from the extent tree, the io_submit(2) system call becomes
synchronous, and the AIO is no longer "A", which is bad.
In addition, for most files which have an external leaf tree block,
the cost of caching the information in the extent status tree will be
less than caching the entire 4k block in the buffer cache. So it is
generally a win to keep the extent information cached.
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Diffstat (limited to 'fs/ext4/ioctl.c')
-rw-r--r-- | fs/ext4/ioctl.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/ext4/ioctl.c b/fs/ext4/ioctl.c index c0427e2f6648..5498f75a1648 100644 --- a/fs/ext4/ioctl.c +++ b/fs/ext4/ioctl.c @@ -624,6 +624,8 @@ resizefs_out: return 0; } + case EXT4_IOC_PRECACHE_EXTENTS: + return ext4_ext_precache(inode); default: return -ENOTTY; @@ -688,6 +690,7 @@ long ext4_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg) case EXT4_IOC_MOVE_EXT: case FITRIM: case EXT4_IOC_RESIZE_FS: + case EXT4_IOC_PRECACHE_EXTENTS: break; default: return -ENOIOCTLCMD; |