From d3b9d11bade8bc52d08688ee66a4a20fe0a31a04 Mon Sep 17 00:00:00 2001 From: Ralph Boehme Date: Mon, 30 Apr 2018 19:03:41 +0200 Subject: [PATCH] s3:cleanupd: use MSG_SMB_BRL_VALIDATE to signal cleanupd unclean process shutdown Since 6423ca4bf293cac5e2f84b1a37bb29b06b5c05ed messaging_send_all() broadcasts messages in a cluster, so cleanupd receives those broadcasts and acts upon it by re-broadcasting the message. Result: message storm. By reactivating the currently unused MSG_SMB_BRL_VALIDATE for the trigger message to cleanupd we avoid the storm. Note that MSG_SMB_BRL_VALIDATE was unused only in the sense that noone *listened* to it, but we were still *sending* the message in smbd_parent_ctdb_reconfigured(). de6fe2a1dd6ab03b1c369b61da17fded72305b2d removed listening for MSG_SMB_BRL_VALIDATE from cleanupd. This commits brings it back. Bug: https://bugzilla.samba.org/show_bug.cgi?id=13414 Signed-off-by: Ralph Boehme Reviewed-by: Jeremy Allison --- source3/smbd/server.c | 2 +- source3/smbd/smbd_cleanupd.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/source3/smbd/server.c b/source3/smbd/server.c index e7e297f1f18..07d7136ef41 100644 --- a/source3/smbd/server.c +++ b/source3/smbd/server.c @@ -757,7 +757,7 @@ static void cleanup_timeout_fn(struct tevent_context *event_ctx, parent->cleanup_te = NULL; messaging_send_buf(parent->msg_ctx, parent->cleanupd, - MSG_SMB_UNLOCK, NULL, 0); + MSG_SMB_BRL_VALIDATE, NULL, 0); } static void cleanupd_started(struct tevent_req *req) diff --git a/source3/smbd/smbd_cleanupd.c b/source3/smbd/smbd_cleanupd.c index 5bd18c1411c..a9b1e8a1137 100644 --- a/source3/smbd/smbd_cleanupd.c +++ b/source3/smbd/smbd_cleanupd.c @@ -71,7 +71,7 @@ struct tevent_req *smbd_cleanupd_send(TALLOC_CTX *mem_ctx, return tevent_req_post(req, ev); } - status = messaging_register(msg, NULL, MSG_SMB_UNLOCK, + status = messaging_register(msg, NULL, MSG_SMB_BRL_VALIDATE, smbd_cleanupd_unlock); if (tevent_req_nterror(req, status)) { return tevent_req_post(req, ev); -- 2.11.4.GIT