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