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 <[email protected]>
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 <[email protected]>
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