The branch, master has been updated via 5d1a8d2 Stop spamming the logs with "Could not remove pid XX from serverid.tdb" messages and initiating the cleanup function on every process death. from 5e5f569 lib/dbwrap: make it possible to delete/store the current record during traverse
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 5d1a8d2a31390762c471229c2b115147ad0857fe Author: Jeremy Allison <j...@samba.org> Date: Wed May 30 17:12:10 2012 -0700 Stop spamming the logs with "Could not remove pid XX from serverid.tdb" messages and initiating the cleanup function on every process death. We now have many sub-processes from smbd that don't serve SMB1/SMB2 requests and don't register themselves in the serverid.tdb. Only initiate the cleanup from processes that were explicitly in the child list. Autobuild-User: Jeremy Allison <j...@samba.org> Autobuild-Date: Thu May 31 04:44:09 CEST 2012 on sn-devel-104 ----------------------------------------------------------------------- Summary of changes: source3/smbd/server.c | 33 ++++++++++++++++++--------------- 1 files changed, 18 insertions(+), 15 deletions(-) Changeset truncated at 500 lines: diff --git a/source3/smbd/server.c b/source3/smbd/server.c index ab4e971..f71235f 100644 --- a/source3/smbd/server.c +++ b/source3/smbd/server.c @@ -416,6 +416,24 @@ static void remove_child_pid(struct smbd_parent_context *parent, struct smbd_child_pid *child; struct server_id child_id; + child_id = pid_to_procid(pid); + + for (child = parent->children; child != NULL; child = child->next) { + if (child->pid == pid) { + struct smbd_child_pid *tmp = child; + DLIST_REMOVE(parent->children, child); + TALLOC_FREE(tmp); + parent->num_children -= 1; + break; + } + } + + if (child == NULL) { + /* not all forked child processes are added to the children list */ + DEBUG(2, ("Could not find child %d -- ignoring\n", (int)pid)); + return; + } + if (unclean_shutdown) { /* a child terminated uncleanly so tickle all processes to see if they can grab any of the @@ -435,25 +453,10 @@ static void remove_child_pid(struct smbd_parent_context *parent, } } - child_id = pid_to_procid(pid); - if (!serverid_deregister(child_id)) { DEBUG(1, ("Could not remove pid %d from serverid.tdb\n", (int)pid)); } - - for (child = parent->children; child != NULL; child = child->next) { - if (child->pid == pid) { - struct smbd_child_pid *tmp = child; - DLIST_REMOVE(parent->children, child); - TALLOC_FREE(tmp); - parent->num_children -= 1; - return; - } - } - - /* not all forked child processes are added to the children list */ - DEBUG(2, ("Could not find child %d -- ignoring\n", (int)pid)); } /**************************************************************************** -- Samba Shared Repository