diff --git a/kmod/src/format.h b/kmod/src/format.h index 161b31a2..17c53a18 100644 --- a/kmod/src/format.h +++ b/kmod/src/format.h @@ -535,6 +535,7 @@ enum { #define SCOUTFS_LOCK_SCOPE_FS_ITEMS 2 #define SCOUTFS_LOCK_TYPE_GLOBAL_RENAME 1 +#define SCOUTFS_LOCK_TYPE_GLOBAL_SERVER 2 struct scoutfs_lock_name { __u8 scope; diff --git a/kmod/src/server.c b/kmod/src/server.c index d42012b0..a12da887 100644 --- a/kmod/src/server.c +++ b/kmod/src/server.c @@ -892,8 +892,9 @@ static void scoutfs_server_func(struct work_struct *work) init_waitqueue_head(&waitq); - /* lock attempt will return -ESHUTDOWN once we should not queue */ - ret = scoutfs_lock_ino(sb, DLM_LOCK_EX, 0, ~0ULL, &lock); + ret = scoutfs_lock_global(sb, DLM_LOCK_EX, SCOUTFS_LKF_TRYLOCK, + SCOUTFS_LOCK_TYPE_GLOBAL_SERVER, + &lock); if (ret) goto out;