CVSROOT:        /cvs/cluster
Module name:    cluster
Branch:         RHEL4
Changes by:     [EMAIL PROTECTED]       2008-01-09 18:54:46

Modified files:
        magma-plugins  : Makefile 
        magma-plugins/sm: sm.c 

Log message:
        Fix #294491 - make magma_sm.so retry in dlm EINPROG condition

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/magma-plugins/Makefile.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.2&r2=1.2.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/magma-plugins/sm/sm.c.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.9.2.12&r2=1.9.2.13

--- cluster/magma-plugins/Attic/Makefile        2004/08/03 16:39:14     1.2
+++ cluster/magma-plugins/Attic/Makefile        2008/01/09 18:54:46     1.2.2.1
@@ -10,25 +10,25 @@
 ###############################################################################
 ###############################################################################
 all:
-       cd cman && ${MAKE} all
+       #cd cman && ${MAKE} all
        cd dumb && ${MAKE} all
        cd gulm && ${MAKE} all
        cd sm && ${MAKE} all
 
 clean:
-       cd cman && ${MAKE} clean
+       #cd cman && ${MAKE} clean
        cd dumb && ${MAKE} clean
        cd gulm && ${MAKE} clean
        cd sm && ${MAKE} clean
 
 install:
-       cd cman && ${MAKE} install
+       #cd cman && ${MAKE} install
        cd dumb && ${MAKE} install
        cd gulm && ${MAKE} install
        cd sm && ${MAKE} install
 
 uninstall:
-       cd cman && ${MAKE} uninstall
+       #cd cman && ${MAKE} uninstall
        cd dumb && ${MAKE} uninstall
        cd gulm && ${MAKE} uninstall
        cd sm && ${MAKE} uninstall
--- cluster/magma-plugins/sm/Attic/sm.c 2007/04/23 18:24:58     1.9.2.12
+++ cluster/magma-plugins/sm/Attic/sm.c 2008/01/09 18:54:46     1.9.2.13
@@ -36,7 +36,7 @@
 #include <sys/select.h>
 #include <sys/stat.h>
 
-#define MODULE_DESCRIPTION "CMAN/SM Plugin v1.1.7.4"
+#define MODULE_DESCRIPTION "CMAN/SM Plugin v1.1.7.5"
 #define MODULE_AUTHOR      "Lon Hohberger"
 
 #define DLM_LS_NAME       "Magma"
@@ -556,8 +556,9 @@
        FD_ZERO(&rfds);
        FD_SET(fd, &rfds);
 
-       if (select(fd + 1, &rfds, NULL, NULL, NULL) == 1)
+       if (select(fd + 1, &rfds, NULL, NULL, NULL) == 1) {
                return dlm_dispatch(fd);
+       }
 
        return -1;
 }
@@ -577,9 +578,12 @@
         if (ret < 0)
                 return -1;
 
-        if ((ret = (wait_for_dlm_event(p->ls) < 0))) {
-                fprintf(stderr, "wait_for_dlm_event: %d / %d\n",
-                        ret, errno);
+        while ((ret = (wait_for_dlm_event(p->ls) < 0))) {
+               /* If nothing much has happened, just
+                  wait a bit longer */
+               if (lksb->sb_status == EINPROG)
+                       continue;
+                errno = lksb->sb_status;
                 return -1;
         }
 
@@ -648,7 +652,11 @@
 
         /* lksb->sb_status should be EINPROG at this point */
 
-        if (wait_for_dlm_event(p->ls) < 0) {
+        while (wait_for_dlm_event(p->ls) < 0) {
+               /* If nothing much has happened, just
+                  wait a bit longer */
+               if (lksb->sb_status == EINPROG)
+                       continue;
                 errno = lksb->sb_status;
                 return -1;
         }
@@ -705,8 +713,11 @@
                return ret;
 
        while (lksb.sb_status == EINPROG) {
-               if (wait_for_dlm_event(p->ls) < 0)
+               if (wait_for_dlm_event(p->ls) < 0) {
+                       if (lksb.sb_status == EINPROG)
+                               continue;
                        return -1;
+               }
        }
 
        ret = -1;

Reply via email to