Hello PCP group:
I have ran into a PCP bug: the cluster pmda failed to load the ib pmda dso.
How should we approach the loading of the IB pmda as a LOCAL context DSO?
Should we just permanently add it to the dsotab like in the following patch,
or should we rethink the dsotab and allow it to grow dynamically via a new API?
===========================================================================
diff -uprBw pcp-3.1.1.sgi.orig/src/libpcp/src/GNUmakefile pcp-3.1.1.sgi/src/libpcp/src/GNUmakefile
--- pcp-3.1.1.sgi.orig/src/libpcp/src/GNUmakefile 2010-02-25 15:07:18.000000000 -0600
+++ pcp-3.1.1.sgi/src/libpcp/src/GNUmakefile 2010-03-24 09:47:08.000000000 -0500
@@ -91,11 +91,8 @@ else
kernel_pmda_dso = $(TARGET_OS)
endif
-ifeq ($(HAVE_IBDEV),1)
+# the pmdacluster needs the ib entry into the dsotab (even if HAVE_IBDEV is not defined by default)
infiniband_pmda_dso = ib
-else
-infiniband_pmda_dso =
-endif
dsotbl.h: $(TOPDIR)/src/pmns/stdpmid
echo '/* This file is automatically generated by build' > $@
===========================================================================
After I apply this patch the libpcp/src/dsotbl.h looks like this:
---------------------------------------------------------------------------
/* This file is automatically generated by build
*
* It contains list of DSO, supported by the CONTEXT_LOCAL
*/
static __pmDSO dsotab[] = {
#define LINUX_DSO 60
{ 60, "linux/pmda_linux.so", "linux_init" },
#define IB_DSO 91
{ 91, "ib/pmda_ib.so", "ib_init" },
#define MMV_DSO 70
{ 70, "mmv/pmda_mmv.so", "mmv_init" },
#define SAMPLE_DSO 30
{ 30, "sample/pmda_sample.so", "sample_init" },
};
static int numdso = (sizeof(dsotab)/sizeof(dsotab[0]));
---------------------------------------------------------------------------
Thank you,
Cornel