aboutsummaryrefslogtreecommitdiff
path: root/fs/dlm
diff options
context:
space:
mode:
authorGravatar Alexander Aring <aahringo@redhat.com> 2021-03-01 17:05:19 -0500
committerGravatar David Teigland <teigland@redhat.com> 2021-03-09 08:56:42 -0600
commiteec054b5a7cfe6d1f1598a323b05771ee99857b5 (patch)
treee4f196cd2f1aaebd29181fa9b98e648d5ea3273c /fs/dlm
parentfs: dlm: remove unaligned memory access handling (diff)
downloadlinux-eec054b5a7cfe6d1f1598a323b05771ee99857b5.tar.gz
linux-eec054b5a7cfe6d1f1598a323b05771ee99857b5.tar.bz2
linux-eec054b5a7cfe6d1f1598a323b05771ee99857b5.zip
fs: dlm: flush swork on shutdown
This patch fixes the flushing of send work before shutdown. The function cancel_work_sync() is not the right workqueue functionality to use here as it would cancel the work if the work queues itself. In cases of EAGAIN in send() for dlm message we need to be sure that everything is send out before. The function flush_work() will ensure that every send work is be done inclusive in EAGAIN cases. Signed-off-by: Alexander Aring <aahringo@redhat.com> Signed-off-by: David Teigland <teigland@redhat.com>
Diffstat (limited to 'fs/dlm')
-rw-r--r--fs/dlm/lowcomms.c5
1 files changed, 1 insertions, 4 deletions
diff --git a/fs/dlm/lowcomms.c b/fs/dlm/lowcomms.c
index a97c69ddbff0..43dad68e2387 100644
--- a/fs/dlm/lowcomms.c
+++ b/fs/dlm/lowcomms.c
@@ -712,10 +712,7 @@ static void shutdown_connection(struct connection *con)
{
int ret;
- if (cancel_work_sync(&con->swork)) {
- log_print("canceled swork for node %d", con->nodeid);
- clear_bit(CF_WRITE_PENDING, &con->flags);
- }
+ flush_work(&con->swork);
mutex_lock(&con->sock_mutex);
/* nothing to shutdown */