android_kernel_sony_sdm845/fs
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Eric Biggers ec70cfcb17 fs-verity: implement readahead for FS_IOC_ENABLE_VERITY
When it builds the first level of the Merkle tree, FS_IOC_ENABLE_VERITY
sequentially reads each page of the file using read_mapping_page().
This works fine if the file's data is already in pagecache, which should
normally be the case, since this ioctl is normally used immediately
after writing out the file.

But in any other case this implementation performs very poorly, since
only one page is read at a time.

Fix this by implementing readahead using the functions from
mm/readahead.c.

This improves performance in the uncached case by about 20x, as seen in
the following benchmarks done on a 250MB file (on x86_64 with SHA-NI):

    FS_IOC_ENABLE_VERITY uncached (before) 3.299s
    FS_IOC_ENABLE_VERITY uncached (after)  0.160s
    FS_IOC_ENABLE_VERITY cached            0.147s
    sha256sum uncached                     0.191s
    sha256sum cached                       0.145s

Note: we could instead switch to kernel_read().  But that would mean
we'd no longer be hashing the data directly from the pagecache, which is
a nice optimization of its own.  And using kernel_read() would require
allocating another temporary buffer, hashing the data and tree pages
separately, and explicitly zero-padding the last page -- so it wouldn't
really be any simpler than direct pagecache access, at least for now.

Link: https://lore.kernel.org/r/20200106205410.136707-1-ebiggers@kernel.org
Reviewed-by: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Sorayukii <sorayukii69@gmail.com>
2026-05-15 18:07:19 +07:00
..
9p statx: Add a system call to make enhanced file info available 2025-07-10 14:15:39 -04:00
adfs fs/adfs: super: fix use-after-free bug 2019-08-06 18:29:35 +02:00
affs affs: fix basic permission bits to actually work 2020-09-12 11:47:39 +02:00
afs statx: Add a system call to make enhanced file info available 2025-07-10 14:15:39 -04:00
autofs4 BACKPORT: pids: Move the pgrp and session pid pointers from task_struct to signal_struct 2026-05-15 17:59:02 +07:00
befs
bfs
btrfs treewide: Backport new vmalloc for large performance benefits 2026-05-15 17:48:25 +07:00
cachefiles cachefiles: Handle readpage error correctly 2020-11-10 10:24:00 +01:00
ceph treewide: Backport new vmalloc for large performance benefits 2026-05-15 17:48:25 +07:00
cifs statx: Add a system call to make enhanced file info available 2025-07-10 14:15:39 -04:00
coda statx: Add a system call to make enhanced file info available 2025-07-10 14:15:39 -04:00
configfs configfs: fix a race in configfs_{,un}register_subsystem() 2022-03-02 11:32:03 +01:00
cramfs
crypto Merge branch 'linux-4.9.y' of https://kernel.googlesource.com/pub/scm/linux/kernel/git/jaegeuk/f2fs-stable into lineage-20 2022-11-16 15:35:23 +01:00
debugfs UPSTREAM: fs: constify tree_descr arrays passed to simple_fill_super() 2026-05-15 17:55:17 +07:00
devpts
dlm BACKPORT: net: Work around lockdep limitation in sockets that use sockets 2026-05-15 17:56:15 +07:00
ecryptfs statx: Add a system call to make enhanced file info available 2025-07-10 14:15:39 -04:00
efivarfs efivarfs: revert "fix memory leak in efivarfs_create()" 2020-12-02 08:31:28 +01:00
efs
exfat exfat: Lower kernel version check for exfat_getattr from 4.11 to 4.9 2025-07-10 14:15:46 -04:00
exofs
exportfs statx: Add a system call to make enhanced file info available 2025-07-10 14:15:39 -04:00
ext2 ext2: correct max file size computing 2022-04-20 09:06:35 +02:00
ext4 treewide: Backport new vmalloc for large performance benefits 2026-05-15 17:48:25 +07:00
f2fs treewide: Backport new vmalloc for large performance benefits 2026-05-15 17:48:25 +07:00
fat statx: Add a system call to make enhanced file info available 2025-07-10 14:15:39 -04:00
freevxfs
fscache
fuse FROMLIST: fuse: 32-bit user space ioctl compat for fuse device 2026-05-15 18:06:55 +07:00
gfs2 statx: Add a system call to make enhanced file info available 2025-07-10 14:15:39 -04:00
hfs hfs: fix OOB Read in __hfs_brec_find 2023-01-07 12:07:31 +01:00
hfsplus hfsplus: fix bug causing custom uid and gid being unable to be assigned with mount 2023-01-07 12:07:35 +01:00
hostfs
hpfs
hugetlbfs hugetlbfs: hugetlb_fault_mutex_hash() cleanup 2021-06-03 08:23:33 +02:00
incfs incremental-fs: inline newer kernel_read / write 2026-05-15 18:07:17 +07:00
isofs isofs: Fix out of bound access for corrupted isofs image 2021-11-12 13:18:02 +01:00
jbd2 BACKPORT: rcu: Ports some of RCU's taken from k4.14 2026-05-15 17:49:30 +07:00
jffs2 jffs2: fix memory leak in jffs2_do_fill_super 2022-06-14 16:52:38 +02:00
jfs fs: jfs: fix shift-out-of-bounds in dbDiscardAG 2023-01-07 12:07:30 +01:00
kernfs BACKPORT: kernfs: convert kernfs_node->id from union kernfs_node_id to u64 2026-05-15 18:02:33 +07:00
lockd This is the 4.9.249 stable release 2020-12-29 14:16:49 +01:00
logfs
minix statx: Add a system call to make enhanced file info available 2025-07-10 14:15:39 -04:00
ncpfs
nfs treewide: Backport new vmalloc for large performance benefits 2026-05-15 17:48:25 +07:00
nfs_common nfs_common: need lock during iterate through the list 2020-12-29 13:44:59 +01:00
nfsd UPSTREAM: fs: constify tree_descr arrays passed to simple_fill_super() 2026-05-15 17:55:17 +07:00
nilfs2 Merge branch 'android-4.9-q' of https://android.googlesource.com/kernel/common into lineage-20 2023-01-19 15:42:12 +01:00
nls
notify UPSTREAM: audit: Record fanotify access control decisions 2026-05-15 17:59:18 +07:00
ntfs treewide: Backport new vmalloc for large performance benefits 2026-05-15 17:48:25 +07:00
ocfs2 BACKPORT: net: Work around lockdep limitation in sockets that use sockets 2026-05-15 17:56:15 +07:00
omfs
openpromfs
orangefs statx: Add a system call to make enhanced file info available 2025-07-10 14:15:39 -04:00
overlayfs statx: Add a system call to make enhanced file info available 2025-07-10 14:15:39 -04:00
proc UPSTREAM: mm,fork: introduce MADV_WIPEONFORK 2026-05-15 18:04:15 +07:00
pstore This is the 4.9.337 stable release 2023-01-07 13:07:00 +01:00
qnx4 qnx4: work around gcc false positive warning bug 2021-10-06 10:23:41 +02:00
qnx6
quota quota: Check next/prev free block number after reading from quota file 2022-10-26 13:15:37 +02:00
ramfs
reiserfs reiserfs: Add missing calls to reiserfs_security_free() 2023-01-07 12:07:34 +01:00
romfs romfs: fix uninitialized memory leak in romfs_dev_read() 2020-08-26 10:29:03 +02:00
sdcardfs statx: Add a system call to make enhanced file info available 2025-07-10 14:15:39 -04:00
squashfs squashfs: fix divide error in calculate_skip() 2021-05-22 10:40:32 +02:00
sysfs BACKPORT: kernfs: allow creating kernfs objects with arbitrary uid/gid 2026-05-15 17:59:10 +07:00
sysv statx: Add a system call to make enhanced file info available 2025-07-10 14:15:39 -04:00
tracefs UPSTREAM: fs: constify tree_descr arrays passed to simple_fill_super() 2026-05-15 17:55:17 +07:00
ubifs statx: Add a system call to make enhanced file info available 2025-07-10 14:15:39 -04:00
udf udf: Avoid double brelse() in udf_rename() 2023-01-07 12:07:30 +01:00
ufs fs/ufs: avoid potential u32 multiplication overflow 2020-08-21 11:02:11 +02:00
verity fs-verity: implement readahead for FS_IOC_ENABLE_VERITY 2026-05-15 18:07:19 +07:00
xfs treewide: Backport new vmalloc for large performance benefits 2026-05-15 17:48:25 +07:00
aio.c
anon_inodes.c
attr.c This is the 4.9.326 stable release 2022-08-25 12:09:51 +02:00
bad_inode.c statx: Add a system call to make enhanced file info available 2025-07-10 14:15:39 -04:00
binfmt_aout.c
binfmt_elf.c fs/binfmt_elf.c: allocate initialized memory in fill_thread_core_info() 2020-06-03 08:16:42 +02:00
binfmt_elf_fdpic.c
binfmt_em86.c
binfmt_flat.c fs/binfmt_flat.c: make load_flat_shared_library() work 2019-07-10 09:55:38 +02:00
binfmt_misc.c UPSTREAM: fs: constify tree_descr arrays passed to simple_fill_super() 2026-05-15 17:55:17 +07:00
binfmt_script.c exec: load_script: Do not exec truncated interpreter path 2019-11-06 12:18:04 +01:00
block_dev.c Merge branch 'linux-4.9.y' of https://kernel.googlesource.com/pub/scm/linux/kernel/git/jaegeuk/f2fs-stable into lineage-20 2022-11-16 15:35:23 +01:00
buffer.c Merge remote-tracking branch 'common/android-4.9-q' into android13-4.9-sdm845 2022-12-20 19:52:09 +02:00
char_dev.c chardev: fix error handling in cdev_device_add() 2023-01-07 12:07:26 +01:00
compat.c
compat_binfmt_elf.c
compat_ioctl.c UPSTREAM: lsm: new security_file_ioctl_compat() hook 2026-05-15 17:59:05 +07:00
coredump.c
dax.c
dcache.c Merge android-4.9.187 (fabc071) into msm-4.9 2019-10-11 14:38:02 +08:00
dcookies.c
direct-io.c Merge branch 'android-4.9-q' of https://android.googlesource.com/kernel/common into lineage-18.1-caf-sdm845 2021-04-26 01:27:02 +03:00
drop_caches.c
eventfd.c
eventpoll.c UPSTREAM: epoll: add syscall epoll_pwait2 2026-05-15 18:04:17 +07:00
exec.c BACKPORT: pid: Implement PIDTYPE_TGID 2026-05-15 17:59:02 +07:00
fcntl.c
fhandle.c
file.c fs: Rename __close_fd_get_file close_fd_get_file 2026-05-15 18:04:20 +07:00
file_table.c treewide: Backport new vmalloc for large performance benefits 2026-05-15 17:48:25 +07:00
filesystems.c
fs-writeback.c UPSTREAM: cgroup, blkcg: Prepare some symbols for module and !CONFIG_CGROUP usages 2026-05-15 18:02:33 +07:00
fs_pin.c
fs_struct.c
inode.c BACKPORT: new inode method: ->free_inode() 2026-05-15 17:57:41 +07:00
internal.h
ioctl.c
iomap.c
Kconfig fs-verity: add Kconfig and the helper functions for hashing 2026-05-15 18:07:18 +07:00
Kconfig.binfmt
libfs.c UPSTREAM: fs: constify tree_descr arrays passed to simple_fill_super() 2026-05-15 17:55:17 +07:00
locks.c locks: print unsigned ino in /proc/locks 2020-01-12 11:24:13 +01:00
Makefile fs-verity: add Kconfig and the helper functions for hashing 2026-05-15 18:07:18 +07:00
mbcache.c
mount.h
mpage.c f2fs: fix build error on android tracepoints 2019-08-16 11:38:27 +00:00
namei.c new primitive: vfs_mkobj() 2026-05-15 17:55:40 +07:00
namespace.c VFS: use synchronize_rcu_expedited() in namespace_unlock() 2026-05-15 17:48:25 +07:00
no-block.c
nsfs.c UPSTREAM: nsfs: unobfuscate 2026-05-15 17:57:09 +07:00
open.c BACKPORT: close_range: add CLOSE_RANGE_UNSHARE 2026-05-15 18:04:16 +07:00
pipe.c pipe: increase minimum default pipe size to 2 pages 2021-08-15 13:01:03 +02:00
pnode.c This is the 4.9.337 stable release 2023-01-07 13:07:00 +01:00
pnode.h
posix_acl.c
proc_namespace.c
read_write.c This is the 4.9.181 stable release 2019-06-11 14:39:40 +02:00
readdir.c filldir[64]: remove WARN_ON_ONCE() for bad directory entries 2020-01-04 13:41:06 +01:00
select.c select: use freezable blocking call 2021-05-26 18:59:42 +03:00
seq_file.c treewide: Backport new vmalloc for large performance benefits 2026-05-15 17:48:25 +07:00
signalfd.c signalfd: use wake_up_pollfree() 2021-12-14 10:04:48 +01:00
splice.c fs: prevent page refcount overflow in pipe_buf_get 2019-06-11 12:22:45 +02:00
stack.c
stat.c statx: Add a system call to make enhanced file info available 2025-07-10 14:15:39 -04:00
statfs.c
super.c Merge remote-tracking branch 'common/android-4.9-q' into android12-4.9-sdm845 2022-03-31 22:52:51 +03:00
sync.c
timerfd.c
userfaultfd.c Merge android-4.9.191 (9ca8608) into msm-4.9 2019-10-23 13:25:13 +08:00
utimes.c
xattr.c This is the 4.9.337 stable release 2023-01-07 13:07:00 +01:00