nbd umira
Dalibor Straka
dast na panelnet.cz
Středa Listopad 23 12:53:08 CET 2005
On Wed, Nov 23, 2005 at 06:59:47AM +0100, Dalibor Straka wrote:
> Ahoj,
>
> na opteronu mi umira nbd. Zkousel jsem debiani balik i nejnovejsi
> verzi z nbd.sf.net. Strace na toho demona (bez -f) ceka ve stavu
> " accept(3, " a kdyz se pripoji klient objevi se zpracovani pozadavku
> a vyforkovani na dite. Prvnich par klientu bezi v pohode:
>
Kdyz jsme u tech samoodpovedi, mam dva patche a funguje to
--- /tmp/nbd-server.orig.c 2005-11-23 11:40:31.175233163 +0100
+++ /tmp/nbd-server.c 2005-11-23 11:45:25.834480286 +0100
@@ -950,8 +950,10 @@
pid_t *pid;
DEBUG("accept, ");
- if ((net = accept(serve->socket, (struct sockaddr *)
&addrin, &addrinlen)) < 0)
- err("accept: %m");
+ if ((net = accept(serve->socket, (struct sockaddr *) &addrin, &addrinlen)) < 0){
+ syslog(LOG_ERR,"accept: %m");
+ continue;
+ }
client = g_malloc(sizeof(CLIENT));
client->server=serve;
--- nbd-server.c 2005-11-23 11:46:26.724325105 +0100
+++ /tmp/nbd-server.orig.c 2005-11-23 11:45:25.834480286 +0100
@@ -366,14 +366,10 @@
int* status=NULL;
int* i;
pid_t pid;
- int bye=1;
- msg2(LOG_INFO, "In the Sig chld handler");
- while(bye && (pid=wait(status)) > 0) {
+ while((pid=wait(status)) > 0) {
if(WIFEXITED(status)) {
msg3(LOG_INFO, "Child exited with %d", WEXITSTATUS(status));
- msg3(LOG_INFO, "Pid=wait(status) is %d", pid);
- bye=0;
}
i=g_hash_table_lookup(children, &pid);
if(!i) {
@@ -383,7 +379,6 @@
g_hash_table_remove(children, &pid);
}
}
- msg2(LOG_INFO, "Out of the Sig chld handler");
}
/**
Další informace o konferenci Linux