> On Tue, Jan 30, 2018 at 8:06 AM, Igor Kozhukhov <i...@dilos.org 
> <mailto:i...@dilos.org>> wrote:
> Hi all,
> 
> I have found one degradation after illumos update: 
> illumos #6902
> https://github.com/illumos/illumos-gate/commit/0d8fa8f8eba3ea46bc79d73445009505d1dd5d7d
>  
> <https://github.com/illumos/illumos-gate/commit/0d8fa8f8eba3ea46bc79d73445009505d1dd5d7d>
> 
> One public interface has been changed and applications with links to old 
> interface are failed.
> 
> I think you're talking about the function signature of zfs_iter_snapshots(), 
> a function in libzfs, changing in May, 2016.  Libzfs is not a public 
> interface, and while we've tried to maintain compatibility, there have never 
> been assurances that the interface would not change.
> 
> 
> As example, it is Jenkins with oracle jdk8.
> 
> I have found one way to be more universal with it and i’d like to propose one 
> tested solution:
> https://bitbucket.org/dilos/dilos-illumos/commits/d07f769c2777115c9c9767f5dd7a60ea1ca9a7db
>  
> <https://bitbucket.org/dilos/dilos-illumos/commits/d07f769c2777115c9c9767f5dd7a60ea1ca9a7db>
> 
> 
> I agree, that would be a reasonable way to have addressed it.  I don't think 
> we'd make that change in illumos today.
>  
> We have no versions control with libraries if we update interfaces what was 
> piblished and can be using for links agains to others applications.
> 
> like this situation, we can’t notify external vendors about updates in 
> interfaces and as transition period to use previous library and move on to 
> new version.
> 
> I’d like to propose to use scheme:
> if interface was published - save it, mark it as old, provide new interface 
> with suffix '2','3', etc, and if it is possible, use new interface as wrapper 
> to previouse interface.
> 
> I think that's a reasonable proposal.  How would you define "published 
> interface"?

I’d like to propose to do something:
- all interfaces in public headers = public interfaces - available for external 
applications and should be saved as is
- if we have changes in these interfaces - we implement it to new name absed on 
previos name with 2,3,etc number
for example - my surrnt proposed implementation with zfs_iter_snapshots() + 
zfs_iter_snapshots2(), where zfs_iter_snapshots() is using as wrapper to new 
interface

it is not my own idea - it is based on some userland applications ports where 
they are using some hints with mapping of the same functions to different 
versions of libs.
 i think this technology is using for transition period and compatibility 
between different interfaces in different versions of libraries.

another way.
it is technology like:
lib.so.<version>

where we can change version and SONAME and use another version of library with 
link to lib.so for builds with correct version.
this technollogy can be applicable for applications to use lib.so.1 with old 
builds and to use lib.so.2 with new builds by transition period to new version.

we can try identify some way what will be better applicable for OpenZFS.

first example - save old interfaces and provide new with another name
second example - to do it by library version 

i think, have to ask others plarfroms what the way will be more sutable for it 
too.

-Igor

> --matt
>  
> 
> It can helps to others vendors to have transition perion and switch to use 
> new interface without brikages.
> 
> It is my proposal for next ZFS updates.
> i have no ideas if it can be applicable to all illumos componets, but ZFS is 
> shared project between others platforms and this solution can help.
> 
> Best regards,
> -Igor
> 
> 
> openzfs-developer | Archives 
> <https://openzfs.topicbox.com/groups/developer/discussions/T3962bc5196cae513-M1a606e52bbec8c02fd0f2c10>
>  | Powered by Topicbox <https://topicbox.com/>

------------------------------------------
openzfs-developer
Archives: 
https://openzfs.topicbox.com/groups/developer/discussions/T3962bc5196cae513-M9da200fe864c3781ee706e4a
Powered by Topicbox: https://topicbox.com

Reply via email to