[Cluster-devel] LVM2 clvmd and STABLE3

Marc - A. Dahlhaus [ Administration | Westermann GmbH ] mad at wol.de
Thu Jul 30 10:52:29 UTC 2009


Am Donnerstag, den 30.07.2009, 11:42 +0100 schrieb Christine Caulfield:
> On 30/07/09 11:36, Marc - A. Dahlhaus [ Administration | Westermann GmbH 
> ] wrote:
> > Am Donnerstag, den 30.07.2009, 10:01 +0100 schrieb Christine Caulfield:
> >> On 30/07/09 08:45, Marc - A. Dahlhaus [ Administration | Westermann GmbH
> >> ] wrote:
> >>> Am Dienstag, den 10.03.2009, 16:50 +0000 schrieb Chrissie Caulfield:
> >>>> Marc - A. Dahlhaus wrote:
> >>>>> Chrissie Caulfield schrieb:
> >>>>>> Marc - A. Dahlhaus [ Administration | Westermann GmbH ] wrote:
> >>>>>>
> >>>>>>> Hello,
> >>>>>>>
> >>>>>>>
> >>>>>>> what is the right approach to build LVM2 with STABLE3,
> >>>>>>> a build with --with-clvmd=corosync or --with-clvmd=cman ?
> >>>>>>>
> >>>>>>>
> >>>>>> I recommend you do both.
> >>>>>>
> >>>>>>     --with-clvmd=corosync=cman,corosync
> >>>>>>
> >>>>> sounds nice but it doesn't build.
> >>>>> I use the last released tarballs of STABLE3, corosync, openais and LVM2.
> >>>>> I tested the following:
> >>>>>
> >>>>> --with-clvmd=corosync=cman,corosync
> >>>>> --with-clvmd=cman,corosync
> >>>>> --with-clvmd=corosync,cman
> >>>>>
> >>>>> All end up with:
> >>>>>
> >>>>> gcc -m32 -o clvmd clvmd-command.o clvmd.o lvm-functions.o
> >>>>> refresh_clvmd.o clvmd-cman.o clvmd-corosync.o -march=i686 -mtune=generic
> >>>>> -O2 -pipe -march=i686 -mtune=generic -O2 -pipe -fPIC -Wall -Wundef
> >>>>> -Wshadow -Wcast-align -Wwrite-strings -Wmissing-prototypes
> >>>>> -Wmissing-declarations -Wnested-externs -Winline -Wmissing-noreturn
> >>>>> -Wformat-security -O2 -march=i686 -mtune=generic -O2 -pipe -fPIC -Wall
> >>>>> -Wundef -Wshadow -Wcast-align -Wwrite-strings -Wmissing-prototypes
> >>>>> -Wmissing-declarations -Wnested-externs -Winline -Wmissing-noreturn
> >>>>> -Wformat-security -O2    -fno-strict-aliasing -march=i686 -mtune=generic
> >>>>> -O2 -pipe -fPIC -Wall -Wundef -Wshadow -Wcast-align -Wwrite-strings
> >>>>> -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Winline
> >>>>> -Wmissing-noreturn -Wformat-security -O2 -Wl,--export-dynamic
> >>>>> -L../../libdm -L../../lib -L../../daemons/dmeventd \
> >>>>>                  -llvm -lpthread -ldevmapper-event -ldevmapper -ldlm
> >>>>> -lcman    -ldlm -lreadline -lrt -ldl -lncurses
> >>>>> clvmd-corosync.o: In function `_get_cluster_name':
> >>>>> clvmd-corosync.c:(.text+0x695): undefined reference to `confdb_initialize'
> >>>>> clvmd-corosync.c:(.text+0x6c6): undefined reference to
> >>>>> `confdb_object_find_start'
> >>>>> clvmd-corosync.c:(.text+0x6dd): undefined reference to `confdb_finalize'
> >>>>> clvmd-corosync.c:(.text+0x727): undefined reference to `confdb_object_find'
> >>>>> clvmd-corosync.c:(.text+0x769): undefined reference to `confdb_key_get'
> >>>>> clvmd-corosync.o: In function `_cluster_closedown':
> >>>>> clvmd-corosync.c:(.text+0x7e9): undefined reference to `cpg_finalize'
> >>>>> clvmd-corosync.c:(.text+0x801): undefined reference to `quorum_finalize'
> >>>>> clvmd-corosync.o: In function `_is_quorate':
> >>>>> clvmd-corosync.c:(.text+0x98d): undefined reference to `quorum_getquorate'
> >>>>> clvmd-corosync.o: In function `_get_main_cluster_fd':
> >>>>> clvmd-corosync.c:(.text+0xadd): undefined reference to `cpg_fd_get'
> >>>>> clvmd-corosync.o: In function `_cluster_fd_callback':
> >>>>> clvmd-corosync.c:(.text+0xb30): undefined reference to `cpg_dispatch'
> >>>>> clvmd-corosync.o: In function `_cluster_send_message':
> >>>>> clvmd-corosync.c:(.text+0xc12): undefined reference to `cpg_mcast_joined'
> >>>>> clvmd-corosync.o: In function `init_corosync_cluster':
> >>>>> clvmd-corosync.c:(.text+0xc80): undefined reference to `cpg_initialize'
> >>>>> clvmd-corosync.c:(.text+0xcec): undefined reference to `quorum_initialize'
> >>>>> clvmd-corosync.c:(.text+0xdb9): undefined reference to `cpg_join'
> >>>>> clvmd-corosync.c:(.text+0xddc): undefined reference to `cpg_finalize'
> >>>>> clvmd-corosync.c:(.text+0xdf4): undefined reference to `quorum_finalize'
> >>>>> clvmd-corosync.c:(.text+0xe66): undefined reference to `cpg_local_get'
> >>>>> clvmd-corosync.c:(.text+0xe89): undefined reference to `cpg_finalize'
> >>>>> clvmd-corosync.c:(.text+0xea1): undefined reference to `quorum_finalize'
> >>>>> clvmd-corosync.c:(.text+0xf1c): undefined reference to `quorum_finalize'
> >>>>>
> >>>>> The full configure line for reference:
> >>>>>
> >>>>> ./configure --enable-cmdlib --enable-dmeventd --enable-pkgconfig \
> >>>>>       --disable-selinux --with-clvmd=corosync,cman --with-lvm1=shared \
> >>>>>       --with-cluster=shared --with-pool=shared \
> >>>>>       --with-snapshots=shared --with-mirrors=internal
> >>>>>
> >>
> >> Hmmm.
> >>
> >> I've just checked and the lvm2 configure code to do this was in the
> >> 2.02.45 release.
> >>
> >> I tried it with head of CVS and it works fine ;-)
> >>
> >> Chrissie
> >>
> > I use this commands:
> >
> > CC="gcc -m32" CXX="g++ -m32" ./configure \
> >   --enable-cmdlib --enable-dmeventd --enable-pkgconfig \
> >   --disable-selinux --with-clvmd=corosync,cman --with-lvm1=shared \
> >   --with-cluster=shared --with-pool=shared \
> >   --with-snapshots=shared --with-mirrors=internal
> > make
> >
> > and end up with:
> >
> > gcc -m32 -o clvmd clvmd-command.o clvmd.o lvm-functions.o
> > refresh_clvmd.o clvmd-cman.o clvmd-corosync.o -march=i686 -mtune=generic
> > -O2 -pipe -march=i686 -mtune=generic -O2 -pipe -fPIC -Wall -Wundef
> > -Wshadow -Wcast-align -Wwrite-strings -Wmissing-prototypes
> > -Wmissing-declarations -Wnested-externs -Winline -Wmissing-noreturn
> > -Wformat-security -O2 -march=i686 -mtune=generic -O2 -pipe -fPIC -Wall
> > -Wundef -Wshadow -Wcast-align -Wwrite-strings -Wmissing-prototypes
> > -Wmissing-declarations -Wnested-externs -Winline -Wmissing-noreturn
> > -Wformat-security -O2    -fno-strict-aliasing -march=i686 -mtune=generic
> > -O2 -pipe -fPIC -Wall -Wundef -Wshadow -Wcast-align -Wwrite-strings
> > -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Winline
> > -Wmissing-noreturn -Wformat-security -O2 -Wl,--export-dynamic
> > -L../../libdm -L../../lib -L../../daemons/dmeventd \
> > 		-llvm-internal -lpthread -ldevmapper-event -ldevmapper -ldlm -lcman
> > -ldlm -lreadline -lrt -ldl -lncurses
> > clvmd-corosync.o: In function `_get_cluster_name':
> > clvmd-corosync.c:(.text+0x6b5): undefined reference to
> > `confdb_initialize'
> > clvmd-corosync.c:(.text+0x6e6): undefined reference to
> > `confdb_object_find_start'
> > clvmd-corosync.c:(.text+0x6fd): undefined reference to `confdb_finalize'
> > clvmd-corosync.c:(.text+0x747): undefined reference to
> > `confdb_object_find'
> > clvmd-corosync.c:(.text+0x789): undefined reference to `confdb_key_get'
> > clvmd-corosync.o: In function `_cluster_closedown':
> > clvmd-corosync.c:(.text+0x809): undefined reference to `cpg_finalize'
> > clvmd-corosync.c:(.text+0x821): undefined reference to `quorum_finalize'
> > clvmd-corosync.o: In function `_is_quorate':
> > clvmd-corosync.c:(.text+0x9ad): undefined reference to
> > `quorum_getquorate'
> > clvmd-corosync.o: In function `_get_main_cluster_fd':
> > clvmd-corosync.c:(.text+0xafd): undefined reference to `cpg_fd_get'
> > clvmd-corosync.o: In function `_cluster_fd_callback':
> > clvmd-corosync.c:(.text+0xb50): undefined reference to `cpg_dispatch'
> > clvmd-corosync.o: In function `_cluster_send_message':
> > clvmd-corosync.c:(.text+0xc32): undefined reference to
> > `cpg_mcast_joined'
> > clvmd-corosync.o: In function `init_corosync_cluster':
> > clvmd-corosync.c:(.text+0xca0): undefined reference to `cpg_initialize'
> > clvmd-corosync.c:(.text+0xd0c): undefined reference to
> > `quorum_initialize'
> > clvmd-corosync.c:(.text+0xdd9): undefined reference to `cpg_join'
> > clvmd-corosync.c:(.text+0xdfc): undefined reference to `cpg_finalize'
> > clvmd-corosync.c:(.text+0xe14): undefined reference to `quorum_finalize'
> > clvmd-corosync.c:(.text+0xe86): undefined reference to `cpg_local_get'
> > clvmd-corosync.c:(.text+0xea9): undefined reference to `cpg_finalize'
> > clvmd-corosync.c:(.text+0xec1): undefined reference to `quorum_finalize'
> > clvmd-corosync.c:(.text+0xf3c): undefined reference to `quorum_finalize'
> > collect2: ld gab 1 als Ende-Status zurück
> > make[2]: *** [clvmd] Fehler 1
> > make[2]: Leaving directory
> > `/repo/kiss-linux/lvm2/src/LVM2.2.02.50/daemons/clvmd'
> > make[1]: *** [clvmd] Fehler 2
> > make[1]: Leaving directory
> > `/repo/kiss-linux/lvm2/src/LVM2.2.02.50/daemons'
> > make: *** [daemons] Fehler 2
> >
> >
> > The problem is in configure as configure doesn't look for individual
> > substrings in CLVMD but tests for the whole string...
> >
> > So i have to set it to cman OR corosync OR all but not to cman,corosync
> > or corosync,cman...
> >
> > I can build just fine with "cman" and also with "corosync" but if i use
> 
> Hmm, that's what findstring() is suppose to do. but it's obviously not 
> working.

You are looking at daemons/clvmd/Makefile.in...
Please take a look at configure.in and search for the string corosync.
You should spot what i mean there.

I think the tests for the individual bindings of clvmd don't belong
inside of the Makefile but inside of configure.in and configure should
set the bindings to yes if and only if it can find the needed
dependencies for them.

Because i don't know what the test for the individual bindings should
test for, i can't create a patch to fix this up properly...

Marc




More information about the Cluster-devel mailing list