Hi! This patchset involves some general cachefiles workflows and the on- demand loading process. For example, the eighth patch fixes a memory ordering issue in cachefiles, and the fifth patch includes some cleanup. These all related to changes in the general cachefiles workflow, and I think these deserve some attention. Additionally, although the current EROFS on-demand loading mode based on cachefiles interaction might be considered for switching to the fanotify mode in the future, I believe the code based on the current cachefiles on-demand loading mode still requires maintenance. The first few patches here are bugfixes specifically for that. Therefore, I would greatly appreciate it if anyone could take some time to review these patches. So friendly ping. Thanks, Zizhi Wo 在 2024/8/21 10:42, Zizhi Wo 写道:
Hi! We recently discovered some bugs through self-discovery and testing in erofs ondemand loading mode, and this patchset is mainly used to fix them. These patches are relatively simple changes, and I would be excited to discuss them together with everyone. Below is a brief introduction to each patch: Patch 1: Fix for wrong block_number calculated in ondemand write. Patch 2: Fix for wrong length return value in ondemand write. Patch 3: Fix missing position update in ondemand write, for scenarios involving read-ahead, invoking the write syscall. Patch 4: Previously, the last redundant data was cleared during the umount phase. This patch remove unnecessary data in advance. Patch 5: Code clean up for cachefiles_commit_tmpfile(). Patch 6: Modify error return value in cachefiles_daemon_secctx(). Patch 7: Fix object->file Null-pointer-dereference problem. Patch 8: Fix for memory out of order in fscache_create_volume(). Zizhi Wo (8): cachefiles: Fix incorrect block calculations in __cachefiles_prepare_write() cachefiles: Fix incorrect length return value in cachefiles_ondemand_fd_write_iter() cachefiles: Fix missing pos updates in cachefiles_ondemand_fd_write_iter() cachefiles: Clear invalid cache data in advance cachefiles: Clean up in cachefiles_commit_tmpfile() cachefiles: Modify inappropriate error return value in cachefiles_daemon_secctx() cachefiles: Fix NULL pointer dereference in object->file netfs/fscache: Add a memory barrier for FSCACHE_VOLUME_CREATING fs/cachefiles/daemon.c | 2 +- fs/cachefiles/interface.c | 3 +++ fs/cachefiles/io.c | 10 +++++----- fs/cachefiles/namei.c | 23 +++++++++++++---------- fs/cachefiles/ondemand.c | 38 +++++++++++++++++++++++++++++--------- fs/netfs/fscache_volume.c | 3 +-- 6 files changed, 52 insertions(+), 27 deletions(-)