OpenCloudOS-Kernel/fs/cachefiles
Baokun Li 7c6ec0827c cachefiles: make on-demand read killable
[ Upstream commit bc9dde6155464e906e630a0a5c17a4cab241ffbb ]

Replacing wait_for_completion() with wait_for_completion_killable() in
cachefiles_ondemand_send_req() allows us to kill processes that might
trigger a hunk_task if the daemon is abnormal.

But now only CACHEFILES_OP_READ is killable, because OP_CLOSE and OP_OPEN
is initiated from kworker context and the signal is prohibited in these
kworker.

Note that when the req in xas changes, i.e. xas_load(&xas) != req, it
means that a process will complete the current request soon, so wait
again for the request to be completed.

In addition, add the cachefiles_ondemand_finish_req() helper function to
simplify the code.

Suggested-by: Hou Tao <houtao1@huawei.com>
Signed-off-by: Baokun Li <libaokun1@huawei.com>
Link: https://lore.kernel.org/r/20240522114308.2402121-13-libaokun@huaweicloud.com
Acked-by: Jeff Layton <jlayton@kernel.org>
Reviewed-by: Jia Zhu <zhujia.zj@bytedance.com>
Signed-off-by: Christian Brauner <brauner@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-07-25 09:50:45 +02:00
..
Kconfig cachefiles: notify the user daemon when looking up cookie 2022-05-18 00:11:17 +08:00
Makefile cachefiles: notify the user daemon when looking up cookie 2022-05-18 00:11:17 +08:00
cache.c cachefiles: fix memory leak in cachefiles_add_cache() 2024-03-01 13:35:00 +01:00
daemon.c cachefiles: add missing lock protection when polling 2024-07-18 13:21:11 +02:00
error_inject.c fs/cachefiles: simplify one-level sysctl registration for cachefiles_sysctls 2023-04-13 11:49:35 -07:00
interface.c cachefiles: extract ondemand info field from cachefiles_object 2024-06-21 14:38:27 +02:00
internal.h cachefiles: cyclic allocation of msg_id to avoid reuse 2024-07-18 13:21:11 +02:00
io.c cachefiles: use kiocb_{start,end}_write() helpers 2023-08-21 17:27:27 +02:00
key.c cachefiles: Implement key to filename encoding 2022-01-07 13:42:16 +00:00
main.c cachefiles: Implement object lifecycle funcs 2022-01-07 13:42:08 +00:00
namei.c mm, netfs, fscache: stop read optimisation when folio removed from pagecache 2023-08-18 10:12:13 -07:00
ondemand.c cachefiles: make on-demand read killable 2024-07-25 09:50:45 +02:00
security.c cachefiles: Add security derivation 2022-01-07 13:41:14 +00:00
volume.c fscache, cachefiles: Store the volume coherency data 2022-01-07 13:43:03 +00:00
xattr.c cachefiles: propagate errors from vfs_getxattr() to avoid infinite loop 2024-07-18 13:21:10 +02:00