<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 01:44:15 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>Whamcloud Community JIRA</title>
    <link>https://jira.whamcloud.com</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>9.4.14</version>
        <build-number>940014</build-number>
        <build-date>05-12-2023</build-date>
    </build-info>


<item>
            <title>[LU-4606] Lustre hard codes libzfs.so.1 in lustre/utils/mount_utils_zfs.c</title>
                <link>https://jira.whamcloud.com/browse/LU-4606</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;Lustre hard codes libzfs.so.1 in mount_utils_zfs.c&lt;br/&gt;
ZoL git tree (after v0.6.2 tag) has bumped the so version to 2:0:0 so &lt;br/&gt;
libzfs is now libzfs.so.2.&lt;/p&gt;

&lt;p&gt;This breaks user space utilities.&lt;br/&gt;
Linking libzfs.so.2.0.0 to libzfs.so.1 works so there doesn&apos;t seem to be &lt;br/&gt;
any ABI breakage.&lt;/p&gt;</description>
                <environment>RHEL 6.x  Lustre 2.4.2 with ZFS </environment>
        <key id="23082">LU-4606</key>
            <summary>Lustre hard codes libzfs.so.1 in lustre/utils/mount_utils_zfs.c</summary>
                <type id="1" iconUrl="https://jira.whamcloud.com/secure/viewavatar?size=xsmall&amp;avatarId=11303&amp;avatarType=issuetype">Bug</type>
                                            <priority id="3" iconUrl="https://jira.whamcloud.com/images/icons/priorities/major.svg">Major</priority>
                        <status id="5" iconUrl="https://jira.whamcloud.com/images/icons/statuses/resolved.png" description="A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.">Resolved</status>
                    <statusCategory id="3" key="done" colorName="success"/>
                                    <resolution id="1">Fixed</resolution>
                                        <assignee username="utopiabound">Nathaniel Clark</assignee>
                                    <reporter username="aalba6675">Anthony Alba</reporter>
                        <labels>
                            <label>zfs</label>
                    </labels>
                <created>Mon, 10 Feb 2014 15:47:51 +0000</created>
                <updated>Mon, 3 Nov 2014 18:44:53 +0000</updated>
                            <resolved>Wed, 21 May 2014 14:16:44 +0000</resolved>
                                    <version>Lustre 2.5.0</version>
                    <version>Lustre 2.6.0</version>
                    <version>Lustre 2.4.2</version>
                                    <fixVersion>Lustre 2.6.0</fixVersion>
                    <fixVersion>Lustre 2.5.3</fixVersion>
                                        <due></due>
                            <votes>0</votes>
                                    <watches>9</watches>
                                                                            <comments>
                            <comment id="76650" author="utopiabound" created="Mon, 10 Feb 2014 20:56:45 +0000"  >&lt;p&gt;I do have a patch related to this &lt;a href=&quot;http://review.whamcloud.com/#/c/8979/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/#/c/8979/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This will be updated when the next stable release of zfs/spl happens.&lt;/p&gt;</comment>
                            <comment id="76953" author="alexxy" created="Thu, 13 Feb 2014 11:53:07 +0000"  >&lt;p&gt;Its better to add configure time check for libzfs version and link it directly to mkfs.lustre instead of dlopening it&lt;/p&gt;</comment>
                            <comment id="76996" author="ryao" created="Thu, 13 Feb 2014 17:57:15 +0000"  >&lt;p&gt;ZFSOnLinux imported a change to its internal library API from Illumos, which required a SONAME bump. It would be advisable to evaluate a switch to the new libzfs_core library, which is meant to provide a public library API with a stable interface.&lt;/p&gt;</comment>
                            <comment id="79687" author="adilger" created="Wed, 19 Mar 2014 18:16:03 +0000"  >&lt;p&gt;The reason that mkfs.lustre is using dlopen() instead of linking to the ZFS library directly is so that the same user tools can be used on systems with or without ZFS packages installed.&lt;/p&gt;

&lt;p&gt;See ORI-425: &lt;a href=&quot;http://review.whamcloud.com/1740&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/1740&lt;/a&gt; and &lt;a href=&quot;http://review.whamcloud.com/1742&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/1742&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="79692" author="isaac" created="Wed, 19 Mar 2014 19:00:56 +0000"  >&lt;p&gt;It seemed that the dynamic linker would only try to resolve symbols when they&apos;re first used. From ld.so(8):&lt;br/&gt;
LD_BIND_NOW&lt;br/&gt;
    If present, causes the dynamic linker to resolve all symbols at program startup instead of when they are first referenced.&lt;/p&gt;

&lt;p&gt;If true, then it might work if we just delay that zfs_init() call until when the 1st real zfs operation is needed, e.g. in zfs_make_lustre(). Then we&apos;d be able to get rid of the dlopen() without causing headache to ldiskfs systems. I&apos;m no expert on the dynamic linker, but it seems worthwhile to give it a shot.&lt;/p&gt;</comment>
                            <comment id="82305" author="utopiabound" created="Wed, 23 Apr 2014 18:27:43 +0000"  >&lt;p&gt;Ran with lastest masters of lustre, zfs and spl &lt;a href=&quot;http://review.whamcloud.com/#/c/8979/6&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/#/c/8979/6&lt;/a&gt; but ran into ZFS bug &lt;a href=&quot;https://github.com/zfsonlinux/zfs/issues/1891&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;1891&lt;/a&gt; in sanity/65ia&lt;/p&gt;</comment>
                            <comment id="82342" author="morrone" created="Wed, 23 Apr 2014 23:25:20 +0000"  >&lt;p&gt;The ZFS bug need not hold up fixing this bug correctly.&lt;/p&gt;</comment>
                            <comment id="82343" author="behlendorf" created="Wed, 23 Apr 2014 23:56:44 +0000"  >&lt;p&gt;Does sanity/65ia consistently reproduce this issue?&lt;/p&gt;</comment>
                            <comment id="82440" author="morrone" created="Thu, 24 Apr 2014 22:01:40 +0000"  >&lt;p&gt;LLNL completely agrees with the previous commenters in this ticket that argue for the removal of the hardcoded zfs library versions in dlopen() calls in lustre.  I commented to that effect in my review of patch &lt;a href=&quot;http://review.whamcloud.com/8979&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;8697&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The issue was raised that rpm will add a dependency on zfs if you compile with ZFS support.  Frankly, I don&apos;t see the problem.  If you don&apos;t want a dependency on zfs, don&apos;t compile against zfs.  Same with ldiskfs.&lt;/p&gt;

&lt;p&gt;But ok, fine, I&apos;ll play along.  So you want to make both OSD rpms available, but neither required.  Then obviously we need to have any direct dependencies on the contents of those OSD rpms contained in those OSD rpms, not present in more general shared RPMs.&lt;/p&gt;

&lt;p&gt;So how about fixing that issue?  Modularize the mount command.  Each OSD rpm offers a dynamically loadable component for the main mount command.  The mount command can then load the osd-specific shared library as needed, and only that osd shared library has dependencies on the backend filesystem.  At rpm build time, the zfs osd rpm would have the dependencies on zfs, and the ldiskfs osd rpm would have the dependencies on ldiskfs.  No leakage of dependencies into the more general rpms.&lt;/p&gt;

&lt;p&gt;I&apos;m just throwing this out off the top of my head.  Other options are possible.&lt;/p&gt;

&lt;p&gt;Granted, our current hard-code-the-library-string strategy was easy the first time, but it also half-assed and causing maintainance problems.  Lets take the time to do it right this time around.&lt;/p&gt;
</comment>
                            <comment id="83046" author="utopiabound" created="Thu, 1 May 2014 21:15:42 +0000"  >&lt;p&gt;This splits zfs functionality out of mount/mkfs into a loadable module and puts that module in lustre-osd-zfs&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://review.whamcloud.com/10193&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/10193&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="84586" author="utopiabound" created="Wed, 21 May 2014 14:16:44 +0000"  >&lt;p&gt;Patch landed to master, Opened &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-5096&quot; title=&quot;Linker cannot find custom libzfs location like it can with header files&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-5096&quot;&gt;&lt;del&gt;LU-5096&lt;/del&gt;&lt;/a&gt; to address Brian&apos;s issues with custom libzfs location that I missed.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10010">
                    <name>Duplicate</name>
                                            <outwardlinks description="duplicates">
                                        <issuelink>
            <issuekey id="24712">LU-5060</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                            <issuelinktype id="10011">
                    <name>Related</name>
                                            <outwardlinks description="is related to ">
                                        <issuelink>
            <issuekey id="24354">LU-4944</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="17983">LU-2976</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="24775">LU-5091</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="24823">LU-5102</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="27423">LU-5851</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="26056">LU-5501</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="24783">LU-5096</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="26662">LU-5643</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                            <customfield id="customfield_10890" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                    <customfield id="customfield_10030" key="com.atlassian.jira.plugin.system.customfieldtypes:labels">
                        <customfieldname>Epic/Theme</customfieldname>
                        <customfieldvalues>
                                        <label>ZFS</label>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_10390" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hzwep3:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10090" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>12600</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10060" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Severity</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10022"><![CDATA[3]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                        </customfields>
    </item>
</channel>
</rss>