On Tue, 15 Apr 2014 09:18:27 Michael Tokarev wrote:
> This approach works, but, as you've shown below, not for ceph, because
> ceph does not tolerate mixed-cluster, so once you update any 3rd party,
> not cluster-related but cluster-used, software, you'll have to upgrade
> whole cluster too, because according to the package manager, you'll
> have to update - in this case - librbd to the latest, which will most
> likely require updating whole ceph stack on one node, which ofcourse
> requires upgrading ceph stack on other nodes as well.

I only meant that different versions of cluster components (in my short 
experience with 0.72.2 and 0.78) do not work well with each other.
Having said that `qemu-img` linked with "librbd-0.72.2" worked well with 
cluster 0.72.2 and with 0.78 (unless there are some subtle bugs that I didn't 
notice).


> Dmitry: this is a good example of why naive `makeshlibs -V' approach
> sometimes should NOT be used...

I see your point. Indeed .symbols approach to linking is more flexible.

However I believe that `makeshlibs -V' is the safest and most conservative way 
to ensure that application will always require at least the very version of 
the library it was build with (and not earlier). Basically I have two 
arguments for this: easier maintenance (here my only concerns are C++ symbols 
as maintaining C symbols is easy) and run-time safety. To my taste there were 
way too many bugs in 0.72.2 to use it with confidence. Even if combination of 
client librbd/librados-0.72.2 libraries *may* work with newer cluster just 
fine, I'd rather not take any chances and force upgrading all client libraries 
just to be safe even if it may be unnecessary.

I'm sure some time later symbols will work just fine to allow linking with 
older client libraries.
I'm already gaining more confidence with 0.79 than I ever had with 0.72.2 so I 
hope we will start using symbols soon if it won't cause any build problems in 
"experimental".


> For now, I think, the current approach taken by Dmitry is the best:
> he gave all C symbols a version, so that any non-C++ program will
> use the versioned .symbols file correctly.  And marked all C++ symbols
> as belonging to "current" version (I think it should be possible to
> use a variable in .symbols file, like ${VERSION}, somehow) -- so that
> all C++ users of the library will always require "latest" version.
> We don't have many C++ users in Debian archive (if at all), so this
> should not be that bad as a start.  Later on, when the above changes
> will land in ceph, it will be possible to expand the C++ regex in
> the symbols file to include actual list of exported symbols.

Thank you very much for reassuring me with the chosen strategy.
By the way today I've made another commit to "experimental" branch to update 
symbols files with data from 0.72.2. I doubt if including older symbols would 
be necessary...

-- 
All the best,
 Dmitry Smirnov
 GPG key : 4096R/53968D1B

Attachment: signature.asc
Description: This is a digitally signed message part.

Reply via email to