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;