Description of problem: [root@link-12 ~]# lvm.static vgscan Reading all physical volumes. This may take a while... lvm.static: symbol lookup error: /usr/lib/liblvm2clusterlock.so: undefined symbol: lvm_snprintf Version-Release number of selected component (if applicable): lvm2-2.01.03-1.0.RHEL4 lvm2-cluster-2.01.03-1.0.RHEL4 How reproducible: Steps to Reproduce: 1. 2. 3. Actual results: Expected results: Additional info:
The clvmd init script uses this incantation, so that's how it came up.
Another issue here is why the lvm.static is using a shared library in /usr/lib. Surely the whole point of lvm.static is that it doesn't depend on anything. If you REALLY need a static lvm binary that is cluster-aware then the cluster locking code should be compiled into it.
I changed the clvmd init.d script to use /usr/sbin/vgscan. This addresses the init script problem but not the actual bug itself. lvm.static should not be generating any unresolved symbol errors since it shouldn't be loading libraries at runtime. Checking in clvmd_init_rhel4; /cvs/lvm2/LVM2/scripts/clvmd_init_rhel4,v <-- clvmd_init_rhel4 new revision: 1.4; previous revision: 1.3 done
Assigning this to Alasdair (sorry!) as it's not really a clvm problem as such and he understands the lvm linking better than I do
If we *need* a cluster-aware lvm2 before /usr is mounted, we probably need to generate a new binary for this purpose e.g. lvm2_cluster.static. As yet, I don't think we need it before /usr is mounted so this can wait. lvm.static should probably be fixed to fail cleanly in these circumstances.
Workaround for now is not to use the lvm2 static binary. In 2.01.05 if you invoke the lvm.static binary under any different name it runs /usr/sbin/lvm instead if that exists.
That workaround doesn't appear to work. [root@morph-05 sbin]# rpm -qa | grep lvm lvm2-cluster-2.01.04-1.0.RHEL4 lvm2-2.01.05-1.0.RHEL4 [root@morph-05 sbin]# /sbin/vgchange -ay vgchange: symbol lookup error: /usr/lib/liblvm2clusterlock.so: undefined symbol: lvm_snprintf [root@morph-05 sbin]# ./lvm.static vgchange -ay lvm.static: symbol lookup error: /usr/lib/liblvm2clusterlock.so: undefined symbol: lvm_snprintf [root@morph-05 sbin]# /usr/sbin/vgchange -ay 3 logical volume(s) in volume group "gfs" now active
Blocker bug, adding it to the list
The fix didn't work because the build system prepended DESTDIR to the path. Try again with 2.01.07.
Workaround believed to be OK: [root@morph-02 sbin]# /sbin/vgchange -ay 5 logical volume(s) in volume group "gfs" now active [root@morph-02 sbin]# /usr/sbin/vgchange -ay 5 logical volume(s) in volume group "gfs" now active [root@morph-02 sbin]# /sbin/lvm.static vgchange -ay lvm.static: symbol lookup error: /usr/lib/liblvm2clusterlock.so: undefined symbol: lvm_snprintf The last example should not be required: initscripts use --ignorelockingfailure which should bypass the problem: pleast test that.
fix verified.
An advisory has been issued which should help the problem described in this bug report. This report is therefore being closed with a resolution of ERRATA. For more information on the solution and/or where to find the updated files, please follow the link below. You may reopen this bug report if the solution does not work for you. http://rhn.redhat.com/errata/RHBA-2005-192.html