From 7006a84d96a3a6e6ecce48d8f50a0d035705c969 Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Mon, 15 May 2023 18:32:24 -0400 Subject: [PATCH] flush_work_sync is equivalent to flush_work. v3.15-rc1-6-g1a56f2aa4752 removes flush_work_sync entirely, but ever since v3.6-rc1-25-g606a5020b9bd which made all workqueues non-reentrant, it has been equivalent to flush_work. This is safe because in all cases only one server->work can be in flight at a time. Signed-off-by: Auke Kok --- kmod/src/kernelcompat.h | 10 ++++++++++ kmod/src/server.c | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/kmod/src/kernelcompat.h b/kmod/src/kernelcompat.h index 1514a6f0..cd5ff1de 100644 --- a/kmod/src/kernelcompat.h +++ b/kmod/src/kernelcompat.h @@ -54,6 +54,16 @@ static inline int dir_emit_dots(struct file *file, void *dirent, #define kc_posix_acl_valid(user_ns, acl) posix_acl_valid(acl) #endif +/* + * v3.6-rc1-24-gdbf2576e37da + * + * All workqueues are now non-reentrant, and the bit flag is removed + * shortly after its uses were removed. + */ +#ifndef WQ_NON_REENTRANT +#define WQ_NON_REENTRANT 0 +#endif + /* * v3.18-rc2-19-gb5ae6b15bd73 * diff --git a/kmod/src/server.c b/kmod/src/server.c index e00d1bca..c8f9be8d 100644 --- a/kmod/src/server.c +++ b/kmod/src/server.c @@ -4464,7 +4464,7 @@ void scoutfs_server_stop_wait(struct super_block *sb) DECLARE_SERVER_INFO(sb, server); stop_server(server); - flush_work_sync(&server->work); + flush_work(&server->work); } int scoutfs_server_setup(struct super_block *sb)