Context |
Check |
Description |
mdraidci/vmtest-md-6_11-PR |
fail
|
merge-conflict
|
mdraidci/vmtest-md-6_11-VM_Test-0 |
success
|
Logs for Lint
|
mdraidci/vmtest-md-6_11-VM_Test-1 |
success
|
Logs for ShellCheck
|
mdraidci/vmtest-md-6_11-VM_Test-2 |
success
|
Logs for Unittests
|
mdraidci/vmtest-md-6_11-VM_Test-12 |
success
|
Logs for x86_64-gcc / test (test_verifier, false, 360) / test_verifier on x86_64 with gcc
|
mdraidci/vmtest-md-6_11-VM_Test-13 |
fail
|
Logs for x86_64-gcc / veristat / veristat on x86_64 with gcc
|
mdraidci/vmtest-md-6_11-VM_Test-14 |
success
|
Logs for x86_64-llvm-17 / build / build for x86_64 with llvm-17
|
mdraidci/vmtest-md-6_11-VM_Test-15 |
success
|
Logs for x86_64-llvm-17 / build-release / build for x86_64 with llvm-17 and -O2 optimization
|
mdraidci/vmtest-md-6_11-VM_Test-16 |
success
|
Logs for x86_64-llvm-17 / test (test_maps, false, 360) / test_maps on x86_64 with llvm-17
|
mdraidci/vmtest-md-6_11-VM_Test-17 |
fail
|
Logs for x86_64-llvm-17 / test (test_progs, false, 360) / test_progs on x86_64 with llvm-17
|
mdraidci/vmtest-md-6_11-VM_Test-7 |
success
|
Logs for x86_64-gcc / test (test_maps, false, 360) / test_maps on x86_64 with gcc
|
mdraidci/vmtest-md-6_11-VM_Test-3 |
success
|
Logs for Validate matrix.py
|
mdraidci/vmtest-md-6_11-VM_Test-18 |
fail
|
Logs for x86_64-llvm-17 / test (test_progs_no_alu32, false, 360) / test_progs_no_alu32 on x86_64 with llvm-17
|
mdraidci/vmtest-md-6_11-VM_Test-5 |
success
|
Logs for x86_64-gcc / build / build for x86_64 with gcc
|
mdraidci/vmtest-md-6_11-VM_Test-4 |
success
|
Logs for set-matrix
|
mdraidci/vmtest-md-6_11-VM_Test-19 |
success
|
Logs for x86_64-llvm-17 / test (test_verifier, false, 360) / test_verifier on x86_64 with llvm-17
|
mdraidci/vmtest-md-6_11-VM_Test-6 |
success
|
Logs for x86_64-gcc / build-release
|
mdraidci/vmtest-md-6_11-VM_Test-9 |
fail
|
Logs for x86_64-gcc / test (test_progs_no_alu32, false, 360) / test_progs_no_alu32 on x86_64 with gcc
|
mdraidci/vmtest-md-6_11-VM_Test-11 |
success
|
Logs for x86_64-gcc / test (test_progs_parallel, true, 30) / test_progs_parallel on x86_64 with gcc
|
mdraidci/vmtest-md-6_11-VM_Test-8 |
fail
|
Logs for x86_64-gcc / test (test_progs, false, 360) / test_progs on x86_64 with gcc
|
mdraidci/vmtest-md-6_11-VM_Test-20 |
success
|
Logs for x86_64-llvm-17 / veristat
|
mdraidci/vmtest-md-6_11-VM_Test-10 |
success
|
Logs for x86_64-gcc / test (test_progs_no_alu32_parallel, true, 30) / test_progs_no_alu32_parallel on x86_64 with gcc
|
mdraidci/vmtest-md-6_11-VM_Test-21 |
success
|
Logs for x86_64-llvm-18 / build / build for x86_64 with llvm-18
|
mdraidci/vmtest-md-6_11-VM_Test-22 |
success
|
Logs for x86_64-llvm-18 / build-release / build for x86_64 with llvm-18 and -O2 optimization
|
mdraidci/vmtest-md-6_11-VM_Test-23 |
success
|
Logs for x86_64-llvm-18 / test (test_maps, false, 360) / test_maps on x86_64 with llvm-18
|
mdraidci/vmtest-md-6_11-VM_Test-24 |
fail
|
Logs for x86_64-llvm-18 / test (test_progs, false, 360) / test_progs on x86_64 with llvm-18
|
mdraidci/vmtest-md-6_11-VM_Test-25 |
fail
|
Logs for x86_64-llvm-18 / test (test_progs_cpuv4, false, 360) / test_progs_cpuv4 on x86_64 with llvm-18
|
mdraidci/vmtest-md-6_11-VM_Test-26 |
fail
|
Logs for x86_64-llvm-18 / test (test_progs_no_alu32, false, 360) / test_progs_no_alu32 on x86_64 with llvm-18
|
mdraidci/vmtest-md-6_11-VM_Test-27 |
success
|
Logs for x86_64-llvm-18 / test (test_verifier, false, 360) / test_verifier on x86_64 with llvm-18
|
mdraidci/vmtest-md-6_11-VM_Test-28 |
success
|
Logs for x86_64-llvm-18 / veristat
|
@@ -161,6 +161,9 @@ void dlm_add_cb(struct dlm_lkb *lkb, uint32_t flags, int mode, int status,
int dlm_callback_start(struct dlm_ls *ls)
{
+ if (!test_bit(LSFL_FS, &ls->ls_flags))
+ return 0;
+
ls->ls_callback_wq = alloc_ordered_workqueue("dlm_callback",
WQ_HIGHPRI | WQ_MEM_RECLAIM);
if (!ls->ls_callback_wq) {
@@ -178,13 +181,15 @@ void dlm_callback_stop(struct dlm_ls *ls)
void dlm_callback_suspend(struct dlm_ls *ls)
{
- if (ls->ls_callback_wq) {
- spin_lock_bh(&ls->ls_cb_lock);
- set_bit(LSFL_CB_DELAY, &ls->ls_flags);
- spin_unlock_bh(&ls->ls_cb_lock);
+ if (!test_bit(LSFL_FS, &ls->ls_flags))
+ return;
+ spin_lock_bh(&ls->ls_cb_lock);
+ set_bit(LSFL_CB_DELAY, &ls->ls_flags);
+ spin_unlock_bh(&ls->ls_cb_lock);
+
+ if (ls->ls_callback_wq)
flush_workqueue(ls->ls_callback_wq);
- }
}
#define MAX_CB_QUEUE 25
@@ -195,7 +200,7 @@ void dlm_callback_resume(struct dlm_ls *ls)
int count = 0, sum = 0;
bool empty;
- if (!ls->ls_callback_wq)
+ if (!test_bit(LSFL_FS, &ls->ls_flags))
return;
more:
@@ -726,6 +726,7 @@ struct dlm_ls {
#define LSFL_CB_DELAY 9
#define LSFL_NODIR 10
#define LSFL_RECV_MSG_BLOCKED 11
+#define LSFL_FS 12
#define DLM_PROC_FLAGS_CLOSING 1
#define DLM_PROC_FLAGS_COMPAT 2
@@ -500,12 +500,13 @@ static int new_lockspace(const char *name, const char *cluster,
list_add(&ls->ls_list, &lslist);
spin_unlock_bh(&lslist_lock);
- if (flags & DLM_LSFL_FS) {
- error = dlm_callback_start(ls);
- if (error) {
- log_error(ls, "can't start dlm_callback %d", error);
- goto out_delist;
- }
+ if (flags & DLM_LSFL_FS)
+ set_bit(LSFL_FS, &ls->ls_flags);
+
+ error = dlm_callback_start(ls);
+ if (error) {
+ log_error(ls, "can't start dlm_callback %d", error);
+ goto out_delist;
}
init_waitqueue_head(&ls->ls_recover_lock_wait);
This patch sets and uses the internal flag LSFL_FS to check in workqueue handling if it's a kernel lockspace or not in the callback workqueue handling. Currently user space lockspaces don't require the callback workqueue. Upcoming changes will make it possible to remove the the callback workqueue context switch when a specific lockspace flag is passed. This patch prepares for such handling as some handling like setting of LSFL_CB_DELAY is still required for those kernel lockspaces but they don't have a callback workqueue. Signed-off-by: Alexander Aring <aahringo@redhat.com> --- fs/dlm/ast.c | 17 +++++++++++------ fs/dlm/dlm_internal.h | 1 + fs/dlm/lockspace.c | 13 +++++++------ 3 files changed, 19 insertions(+), 12 deletions(-)