Al Viro (1): erofs: fix handling kern_mount() failure
Baokun Li (29): openeuler_defconfig: enable erofs ondemand for x86 and arm64 fscache: fix reference count leakage during abort init fscache: fix assertion failure in fscache_put_object() erofs: fix lockdep false positives on initializing erofs_pseudo_mnt erofs: remove erofs_fscache_netfs fscache: rename new_location to new_version cachefiles: use mainline xattr in ondemand mode cachefiles: remove err_put_fd tag in cachefiles_ondemand_daemon_read() cachefiles: fix slab-use-after-free in cachefiles_ondemand_get_fd() cachefiles: fix slab-use-after-free in cachefiles_ondemand_daemon_read() cachefiles: add output string to cachefiles_obj_[get|put]_ondemand_fd cachefiles: add consistency check for copen/cread cachefiles: stop sending new request when dropping object cachefiles: flush all requests for the object that is being dropped fscache: limit fscache_object_max_active to avoid blocking cachefiles: add spin_lock for cachefiles_ondemand_info cachefiles: never get a new anon fd if ondemand_id is valid cachefiles: make on-demand read killable fscache: set the default value of object_max_active to 256 cachefiles: flush all requests after setting CACHEFILES_DEAD cachefiles: call cachefiles_ondemand_init_object() out of dir inode lock cachefiles: defer exposing anon_fd until after copy_to_user() succeeds cachefiles: disallow to complete open requests with uninitialised ondemand_id cachefiles: clear FSCACHE_COOKIE_NO_DATA_YET for the new ondemand object erofs: correct the blknr/blkoff calculation in erofs_read_raw_page() fscache: fix op leak due to abort init after parent ready cachefiles: cyclic allocation of msg_id to avoid reuse fscache: fix assertion failure in cachefiles_put_object() cachefiles: prefault in user pages to aovid ABBA deadlock
David Howells (1): cachefiles, erofs: Fix NULL deref in when cachefiles is not doing ondemand-mode
Dawei Li (1): erofs: protect s_inodes with s_inode_list_lock for fscache
Gao Xiang (26): erofs: clean up file headers & footers erofs: introduce chunk-based file on-disk format erofs: support reading chunk-based uncompressed files erofs: fix double free of 'copied' erofs: introduce erofs_sb_has_xxx() helpers erofs: decouple basic mount options from fs_context erofs: add multiple device support erofs: clean up erofs_map_blocks tracepoints erofs: introduce meta buffer operations erofs: use meta buffers for inode operations erofs: use meta buffers for super operations erofs: use meta buffers for xattr operations erofs: use meta buffers for zmap operations erofs: fix misbehavior of unsupported chunk format check erofs: add fscache mode check helper erofs: register fscache volume erofs: add fscache context helper functions erofs: add anonymous inode caching metadata for data blobs erofs: register fscache context for primary data blob erofs: register fscache context for extra data blobs erofs: implement fscache-based metadata read erofs: implement fscache-based data read for non-inline layout erofs: implement fscache-based data read for inline layout erofs: add 'fsid' mount option erofs: scan devices from device table erofs: fix order >= MAX_ORDER warning due to crafted negative i_size
Hou Tao (2): erofs: check the uniqueness of fsid in shared domain in advance cachefiles: flush ondemand_object_worker during clean object
Jeffle Xu (9): erofs: use meta buffers for erofs_read_superblock() cachefiles: notify the user daemon when looking up cookie cachefiles: unbind cachefiles gracefully in on-demand mode cachefiles: notify the user daemon when withdrawing cookie cachefiles: implement on-demand read cachefiles: enable on-demand read mode anolis: cachefiles: skip check for n_children in on-demand mode erofs: make erofs_map_blocks() generally available erofs: leave compressed inodes unsupported in fscache mode for now
Jia Zhu (12): cachefiles: narrow the scope of flushed requests when releasing fd erofs: use kill_anon_super() to kill super in fscache mode erofs: code clean up for fscache erofs: introduce fscache-based domain erofs: introduce a pseudo mnt to manage shared cookies erofs: Support sharing cookies in the same domain erofs: introduce 'domain_id' mount option anolis: cachefiles: introduce object ondemand state anolis: cachefiles: extract ondemand info field from cachefiles_object anolis: cachefiles: resend an open request if the read request's object is closed anolis: cachefiles: narrow the scope of triggering EPOLLIN events in ondemand mode anolis: cachefiles: add restore command to recover inflight ondemand read requests
Jingbo Xu (18): anolis: cachefiles: replace BUG_ON() with WARN_ON() anolis: cachefiles: fix volume key setup for cachefiles_open anolis: cachefiles: refactor cachefiles_ondemand_daemon_read() anolis: erofs: fix the name of erofs_fscache_super_index_def anolis: cachefiles: maintain a file descriptor to the backing file anolis: fscache,cachefiles: add fscache_prepare_read() helper anolis: erofs: implement fscache-based data readahead erofs: fix use-after-free of fsid and domain_id string erofs: remove unused EROFS_GET_BLOCKS_RAW flag anolis: cachefiles: optimize on-demand IO path with buffer IO anolis: fscache: export fscache_object_wq anolis: cachefiles: reset object->private to NULL when it's freed anolis: cachefiles: add missing lock protection when polling anolis: cachefiles: fix potential NULL in error path erofs: relinquish volume with mutex held erofs: maintain cookies of share domain in self-contained list erofs: remove unused device mapping in meta routine erofs: unify anonymous inodes for blob
Mikulas Patocka (1): wait_on_bit: add an acquire memory barrier
Sun Ke (1): cachefiles: fix error return code in cachefiles_ondemand_copen()
Xin Yin (1): cachefiles: make on-demand request distribution fairer
Yu Kuai (10): fscache: add new helper to determine cachefile location fscache: generate new key_hash for new location cachefiles: factor out helper to generate acc from cachefiles_cook_key() cachefiles: factor out helper to generate csum from cachefiles_cook_key() cachefiles: use volume key directly in cachefiles_cook_key() for new location cachefiles: skip acc in cachefiles_cook_key() for new location cachefiles: skip volum csum cachefiles_cook_key() for new location cachefiles: use key_hash as csum for new location cachefiles: handle the unprintable case for new location in cachefiles_cook_key() erofs: switch to use new location
Yue Hu (1): erofs: don't use erofs_map_blocks() any more
Zizhi Wo (20): erofs: fix page unlock advance during readahead erofs: add erofs switch to better control it erofs: add erofs_ondemand switch fscache: fix kernel BUG at __fscache_read_or_alloc_page fscache: add a waiting mechanism when duplicate cookies are detected fscache: Fix trace UAF in fscache_cookie_put() cachefiles: Fix NULL pointer dereference in object->file cachefiles: Restrict monitor calls to read_page cachefiles: Fix cookie reference count leakage error fscache: Add the unhash_cookie mechanism to fscache_drop_object() cachefiles: Add restrictions to cachefiles_daemon_cull() cachefiles: Change the mark inactive sequence in erofs ondemand mode cachefiles: Set object to close if ondemand_id < 0 in copen s390: provide arch_test_bit_acquire() for architecture s390 wait_on_bit: Add wait_on_bit_acquire() to provide memory barrier fscache: add a memory barrier for FSCACHE_COOKIE_LOOKING_UP fscache/cachefiles: add a memory barrier for waking and waiting fscache/cachefiles: add a memory barrier for page_write fscache: modify fscache_hash_cookie() to enhance security cachefiles: modify inappropriate error return value in cachefiles_daemon_secctx
Documentation/atomic_bitops.txt | 10 +- Documentation/filesystems/erofs.rst | 28 +- arch/arm64/configs/openeuler_defconfig | 9 +- arch/s390/include/asm/bitops.h | 7 + arch/x86/configs/openeuler_defconfig | 9 +- arch/x86/include/asm/bitops.h | 21 + fs/Makefile | 2 + fs/cachefiles/Kconfig | 12 + fs/cachefiles/Makefile | 1 + fs/cachefiles/bind.c | 28 +- fs/cachefiles/daemon.c | 134 +++- fs/cachefiles/interface.c | 34 +- fs/cachefiles/internal.h | 132 ++- fs/cachefiles/key.c | 167 +++- fs/cachefiles/namei.c | 45 +- fs/cachefiles/ondemand.c | 752 ++++++++++++++++++ fs/cachefiles/rdwr.c | 201 ++++- fs/cachefiles/xattr.c | 179 ++++- fs/erofs/Kconfig | 35 +- fs/erofs/Makefile | 2 +- fs/erofs/compress.h | 2 - fs/erofs/data.c | 259 ++++-- fs/erofs/decompressor.c | 5 +- fs/erofs/dir.c | 2 - fs/erofs/erofs_fs.h | 68 +- fs/erofs/fscache.c | 568 +++++++++++++ fs/erofs/inode.c | 98 ++- fs/erofs/internal.h | 161 +++- fs/erofs/namei.c | 2 - fs/erofs/super.c | 353 ++++++-- fs/erofs/tagptr.h | 3 - fs/erofs/utils.c | 2 - fs/erofs/xattr.c | 141 +--- fs/erofs/xattr.h | 2 - fs/erofs/zdata.c | 35 +- fs/erofs/zdata.h | 1 - fs/erofs/zmap.c | 48 +- fs/erofs/zpvec.h | 2 - fs/fs_ctl.c | 43 + fs/fscache/cookie.c | 149 ++-- fs/fscache/internal.h | 1 + fs/fscache/main.c | 17 +- fs/fscache/object.c | 39 +- fs/fscache/page.c | 90 ++- .../bitops/instrumented-non-atomic.h | 12 + include/asm-generic/bitops/non-atomic.h | 14 + include/linux/fs.h | 17 + include/linux/fscache-cache.h | 8 + include/linux/fscache.h | 60 +- include/linux/wait_bit.h | 25 + include/trace/events/cachefiles.h | 10 +- include/trace/events/erofs.h | 7 +- include/uapi/linux/cachefiles.h | 69 ++ kernel/sched/wait_bit.c | 40 + lib/radix-tree.c | 1 + 55 files changed, 3614 insertions(+), 548 deletions(-) create mode 100644 fs/cachefiles/ondemand.c create mode 100644 fs/erofs/fscache.c create mode 100644 fs/fs_ctl.c create mode 100644 include/uapi/linux/cachefiles.h