Not sure if this makes sense to someone, but just in case... I started corosync and pacemaker, mounted the GFS2 filesystem, started a "strace" on the dlm_controld.pcmk process and executed a pinp_pong test. Result: function not implemented Then I unmounted it, stopped pacemaker and corosync, started cman, mounted the filesystem again, started an "strace" on dlm_controld and executed a ping_pong test. Result: the number of locks/s was displayed.
Here is a piece of the strace output on each case (the complete output was just a lot of lines similar to these ones): The interestign part is that while the "read" operation looks pretty much the same with both control daemons, the "write" that follows is quite different. Also the call to "poll" has different parameters at the end, in the pacemaker one it says (...., 8, -1) while in the cman one says (...., 7, 1000) PACEMAKER (strace on dlm_controld.pcmk. Ping_pong failed with "function not implemented"): poll([{fd=5, events=POLLIN}, {fd=6, events=POLLIN}, {fd=11, events=POLLIN}, {fd=12, events=POLLIN}, {fd=14, events=POLLIN}, {fd=15, events=POLLIN}, {fd=17, events=POLLIN}, {fd=18, events=POLLIN}], 8, -1) = 1 ([{fd=14, revents=POLLIN}]) read(14, "\1\0\0\0\2\0\0\0\0\0\0\0\2\0\0\0\313\v\0\0\0\0\0\0\0\0\0\0\331\255gP"..., 64) = 64 write(14, "\1\0\0\0\2\0\0\0\0\0\0\0\2\0\0\0\313\v\0\0\300\250\1\3\332\377\377\377\331\255gP"..., 64) = 64 poll([{fd=5, events=POLLIN}, {fd=6, events=POLLIN}, {fd=11, events=POLLIN}, {fd=12, events=POLLIN}, {fd=14, events=POLLIN}, {fd=15, events=POLLIN}, {fd=17, events=POLLIN}, {fd=18, events=POLLIN}], 8, -1) = 1 ([{fd=14, revents=POLLIN}]) read(14, "\1\0\0\0\2\0\0\0\0\0\0\0\1\1\1\0\313\v\0\0\0\0\0\0\0\0\0\0\331\255gP"..., 64) = 64 write(14, "\1\0\0\0\2\0\0\0\0\0\0\0\1\1\1\0\313\v\0\0\300\250\1\3\332\377\377\377\331\255gP"..., 64) = 64 poll([{fd=5, events=POLLIN}, {fd=6, events=POLLIN}, {fd=11, events=POLLIN}, {fd=12, events=POLLIN}, {fd=14, events=POLLIN}, {fd=15, events=POLLIN}, {fd=17, events=POLLIN}, {fd=18, events=POLLIN}], 8, -1) = 1 ([{fd=14, revents=POLLIN}]) read(14, "\1\0\0\0\2\0\0\0\0\0\0\0\2\0\0\0\313\v\0\0\0\0\0\0\0\0\0\0\331\255gP"..., 64) = 64 write(14, "\1\0\0\0\2\0\0\0\0\0\0\0\2\0\0\0\313\v\0\0\300\250\1\3\332\377\377\377\331\255gP"..., 64) = 64 CMAN (strace on dlm_controld. Ping_pong was succesfull): poll([{fd=5, events=POLLIN}, {fd=8, events=POLLIN}, {fd=13, events=POLLIN}, {fd=14, events=POLLIN}, {fd=16, events=POLLIN}, {fd=18, events=POLLIN}, {fd=19, events=POLLIN}], 7, 1000) = 1 ([{fd=16, revents=POLLIN}]) read(16, "\1\0\0\0\2\0\0\0\0\0\0\0\1\1\1\0\234\r\0\0\0\0\0\0\0\0\0\0\331\255gP"..., 64) = 64 write(16, "\1\0\0\0\2\0\0\0\0\0\0\0\1\1\1\0\234\r\0\0\1\0\0\0\0\0\0\0\331\255gP"..., 64) = 64 poll([{fd=5, events=POLLIN}, {fd=8, events=POLLIN}, {fd=13, events=POLLIN}, {fd=14, events=POLLIN}, {fd=16, events=POLLIN}, {fd=18, events=POLLIN}, {fd=19, events=POLLIN}], 7, 1000) = 1 ([{fd=16, revents=POLLIN}]) read(16, "\1\0\0\0\2\0\0\0\0\0\0\0\2\0\0\0\234\r\0\0\0\0\0\0\0\0\0\0\331\255gP"..., 64) = 64 write(16, "\1\0\0\0\2\0\0\0\0\0\0\0\2\0\0\0\234\r\0\0\1\0\0\0\0\0\0\0\331\255gP"..., 64) = 64 poll([{fd=5, events=POLLIN}, {fd=8, events=POLLIN}, {fd=13, events=POLLIN}, {fd=14, events=POLLIN}, {fd=16, events=POLLIN}, {fd=18, events=POLLIN}, {fd=19, events=POLLIN}], 7, 1000) = 1 ([{fd=16, revents=POLLIN}]) read(16, "\1\0\0\0\2\0\0\0\0\0\0\0\1\1\1\0\234\r\0\0\0\0\0\0\0\0\0\0\331\255gP"..., 64) = 64 write(16, "\1\0\0\0\2\0\0\0\0\0\0\0\1\1\1\0\234\r\0\0\1\0\0\0\0\0\0\0\331\255gP"..., 64) = 64