<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 02:26:39 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-9490] MPI-IO Lustre ADIO driver gets Lustre layout parameters incorrectly </title>
                <link>https://jira.whamcloud.com/browse/LU-9490</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;Looking at the Lustre ADIO driver, it appears that it is retrieving the layout parameters (stripe count, stripe size) incorrectly from the kernel. It is calling an ioctl() directly to the kernel, but then not checking that the returned layout magic is something that it understands before dereferencing the fields of &lt;tt&gt;struct lov_mds_md&lt;/tt&gt;.  For composite files that for not have &lt;tt&gt;struct lov_mds_md&lt;/tt&gt; directly at the start of the layout, this will deteference random fields in the layout and return garbage to the library. &lt;/p&gt;</description>
                <environment></environment>
        <key id="46031">LU-9490</key>
            <summary>MPI-IO Lustre ADIO driver gets Lustre layout parameters incorrectly </summary>
                <type id="1" iconUrl="https://jira.whamcloud.com/secure/viewavatar?size=xsmall&amp;avatarId=11303&amp;avatarType=issuetype">Bug</type>
                                            <priority id="2" iconUrl="https://jira.whamcloud.com/images/icons/priorities/critical.svg">Critical</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="emoly.liu">Emoly Liu</assignee>
                                    <reporter username="adilger">Andreas Dilger</reporter>
                        <labels>
                    </labels>
                <created>Thu, 11 May 2017 14:54:17 +0000</created>
                <updated>Sun, 12 Nov 2017 21:08:57 +0000</updated>
                            <resolved>Wed, 7 Jun 2017 20:47:11 +0000</resolved>
                                    <version>Lustre 2.10.0</version>
                                    <fixVersion>Lustre 2.10.0</fixVersion>
                                        <due></due>
                            <votes>0</votes>
                                    <watches>12</watches>
                                                                            <comments>
                            <comment id="195519" author="adilger" created="Thu, 11 May 2017 17:08:42 +0000"  >&lt;p&gt;In particular: &lt;a href=&quot;https://trac.mpich.org/projects/mpich/browser/src/mpi/romio/adio/ad_lustre/ad_lustre_open.c?rev=f818af4a15b0a168ecab7f73baf0491c2baed26b&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://trac.mpich.org/projects/mpich/browser/src/mpi/romio/adio/ad_lustre/ad_lustre_open.c?rev=f818af4a15b0a168ecab7f73baf0491c2baed26b&lt;/a&gt;&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;void ADIOI_LUSTRE_Open(ADIO_File fd, &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt; *error_code)
{
	:
	:
	&lt;span class=&quot;code-comment&quot;&gt;/* get file striping information and set it in info */&lt;/span&gt;
	lum.lmm_magic = LOV_USER_MAGIC;
	err = ioctl(fd-&amp;gt;fd_sys, LL_IOC_LOV_GETSTRIPE, (void *) &amp;amp;lum);

	&lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (!err) {
		sprintf(value, &lt;span class=&quot;code-quote&quot;&gt;&quot;%d&quot;&lt;/span&gt;, lum.lmm_stripe_size);
		MPI_Info_set(fd-&amp;gt;info, &lt;span class=&quot;code-quote&quot;&gt;&quot;striping_unit&quot;&lt;/span&gt;, value);

		sprintf(value, &lt;span class=&quot;code-quote&quot;&gt;&quot;%d&quot;&lt;/span&gt;, lum.lmm_stripe_count);
		MPI_Info_set(fd-&amp;gt;info, &lt;span class=&quot;code-quote&quot;&gt;&quot;striping_factor&quot;&lt;/span&gt;, value);
	
		sprintf(value, &lt;span class=&quot;code-quote&quot;&gt;&quot;%d&quot;&lt;/span&gt;, lum.lmm_stripe_offset);
		MPI_Info_set(fd-&amp;gt;info, &lt;span class=&quot;code-quote&quot;&gt;&quot;start_iodevice&quot;&lt;/span&gt;, value);
	}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Some options that I see to handle this:&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;set LOV_USER_MAGIC = LOV_USER_MAGIC_COMP_V1 in lustreapi and then detect this in the kernel &lt;tt&gt;LL_IOC_LOV_GETSTRIPE&lt;/tt&gt; handling, and return a fake LOV_USER_MAGIC_V1 xattr to the caller.  I don&apos;t think this will be very robust.&lt;/li&gt;
	&lt;li&gt;fix ADIO_Lustre to check the returned magic value and then interpret the returned composite xattr based on the magic&lt;/li&gt;
	&lt;li&gt;fix ADIO_Lustre to use &lt;tt&gt;llapi_layout_get_by_path()&lt;/tt&gt;, which creates a dependency on liblustreapi (not sure if this is an issue, is it always installed on Lustre clients?)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;It appears that we have similar problems in our own code, for example any program that calls &lt;tt&gt;llapi_file_get_stripe()&lt;/tt&gt; will always return &lt;tt&gt;struct lov_user_md&lt;/tt&gt; to the caller.  For better or worse, this will result in &lt;tt&gt;lum-&amp;gt;lmm_stripe_count&lt;/tt&gt;, &lt;tt&gt;lum-&amp;gt;lmm_stripe_size&lt;/tt&gt;, and &lt;tt&gt;lum-&amp;gt;lmm_stripe_offset&lt;/tt&gt; being zero, since these fields overlap with &lt;tt&gt;lcm_padding2&lt;/tt&gt;.&lt;/p&gt;</comment>
                            <comment id="195533" author="pjones" created="Thu, 11 May 2017 17:39:52 +0000"  >&lt;p&gt;Niu&lt;/p&gt;

&lt;p&gt;Could you please assist with this issue?&lt;/p&gt;

&lt;p&gt;Thanks&lt;/p&gt;

&lt;p&gt;Peter&lt;/p&gt;</comment>
                            <comment id="195535" author="adilger" created="Thu, 11 May 2017 17:43:52 +0000"  >&lt;p&gt;It looks like &lt;tt&gt;lfs.c::lfs_migrate()&lt;/tt&gt; is calling &lt;tt&gt;llapi_file_get_stripe()&lt;/tt&gt; to get the stripe size, and this should be changed to use &lt;tt&gt;llapi_layout_get_by_path()&lt;/tt&gt; and the stripe count extracted from the returned layout.  One option is to set the component pointer to be the last initialized component, so that attributes returned are what the user would expect if they don&apos;t understand composite files.&lt;/p&gt;</comment>
                            <comment id="195538" author="simmonsja" created="Thu, 11 May 2017 17:59:25 +0000"  >&lt;p&gt;Yep we hit this problem during our PFL test shot. Prevented us from running one of our apps.&lt;/p&gt;</comment>
                            <comment id="195545" author="adilger" created="Thu, 11 May 2017 18:26:56 +0000"  >&lt;p&gt;James, could you please include the output from the Cray MPI-IO test run, since it was referencing a function that does not exist in the upstream MPICH code.&lt;/p&gt;</comment>
                            <comment id="195600" author="niu" created="Fri, 12 May 2017 02:33:50 +0000"  >&lt;blockquote&gt;
&lt;p&gt;set LOV_USER_MAGIC = LOV_USER_MAGIC_COMP_V1 in lustreapi and then detect this in the kernel LL_IOC_LOV_GETSTRIPE handling, and return a fake LOV_USER_MAGIC_V1 xattr to the caller. I don&apos;t think this will be very robust.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Yes, I also don&apos;t think it will work well. The fake v1 xattr can&apos;t provide accurate stripe information for ADIO to leverage on, imaging FLR or other more complex layout introduced later, it&apos;ll be more messy with the fake v1. If some application cares about Lustre file layout, it has to understand the layout anyway.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;fix ADIO_Lustre to check the returned magic value and then interpret the returned composite xattr based on the magic&lt;br/&gt;
fix ADIO_Lustre to use llapi_layout_get_by_path(), which creates a dependency on liblustreapi (not sure if this is an issue, is it always installed on Lustre clients?)&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;I vote for using llapi_layout_xxx interfaces, but I don&apos;t know how it should be fixed, should we inform the maintainer to update the ADIO driver?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;It appears that we have similar problems in our own code, for example any program that calls llapi_file_get_stripe() will always return struct lov_user_md to the caller. For better or worse, this will result in lum-&amp;gt;lmm_stripe_count, lum-&amp;gt;lmm_stripe_size, and lum-&amp;gt;lmm_stripe_offset being zero, since these fields overlap with lcm_padding2.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;I see only some places used llapi_file_get_stripe() (or call the ioctl) directly:&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;&apos;lfs find&apos;, &apos;lfs getstripe&apos; calls the ioctl directly, but we&apos;ve handled it properly.&lt;/li&gt;
	&lt;li&gt;&apos;lfs migrate&apos; calls llapi_file_get_stripe() directly and uses result for v1/v3 only, not an error but can be improved.&lt;/li&gt;
	&lt;li&gt;ll_dirstripe_verify.c calls llapi_file_get_stripe() directly, and it&apos;s used in sanity.sh, that&apos;ll cause test failures when root default layout is set as composite, I think it should be handled by &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-9324&quot; title=&quot;sanity-pfl test 10 needs to reset the file system default layout&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-9324&quot;&gt;&lt;del&gt;LU-9324&lt;/del&gt;&lt;/a&gt;. (or already being handled?)&lt;/li&gt;
&lt;/ul&gt;
</comment>
                            <comment id="195679" author="simmonsja" created="Fri, 12 May 2017 14:52:35 +0000"  >&lt;p&gt;This is the error we saw during the test shot: &lt;/p&gt;

&lt;p&gt;Assertion failed in file /notbackedup/users/ulib/mpt_base/mpich2/src/mpi/romio/adio/ad_cray/ad_cray_adio_open.c at line 474: _mpiio_o_lov_delay_create != 0&lt;/p&gt;</comment>
                            <comment id="195929" author="adilger" created="Tue, 16 May 2017 02:31:13 +0000"  >&lt;p&gt;Niu, it looks like ll_dirstripe_verify.c is not handling non-v1/v3 layouts properly.  It is probably just comparing &quot;0 == 0&quot; in this case.  We should probably deprecate the use of llapi_file_get_stripe() via _&lt;em&gt;attribute&lt;/em&gt;_((deprecated)) to start (compile time), then via a message printed out in 2.11.&lt;/p&gt;

&lt;p&gt;In the meantime, it probably makes sense to have it return something reasonable for PFL files when used, such as the plain layout of the last component (if file has no size) and the last init component if it has a size.&lt;/p&gt;

&lt;p&gt;Separately, Emoly, can you please work with Niu to create and push a patch for MPICH, as I believe you worked on this code originally:&lt;br/&gt;
&lt;a href=&quot;http://git.mpich.org/mpich.git/blob/HEAD:/src/mpi/romio/adio/ad_lustre/ad_lustre_open.c&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://git.mpich.org/mpich.git/blob/HEAD:/src/mpi/romio/adio/ad_lustre/ad_lustre_open.c&lt;/a&gt;  It should really be using the llapi_layout_* interface.  I don&apos;t know if applications pass in a hint for the file size, but if they do it would make it easy to decide which component to use for the returned layout parameters. &lt;/p&gt;

&lt;p&gt;However, for existing applications that call the ioctl directly, we may still need to return something reasonable from the kernel, since otherwise every MPI-IO application running on a new version of Lustre will fail if it hasn&apos;t been patched.  One option is to detect the magic value passed to the kernel &lt;tt&gt;LL_IOC_LOV_GETSTRIPE&lt;/tt&gt; handling in &lt;tt&gt;lov_getstripe()&lt;/tt&gt;, and if LOV_MAGIC_V1/V3 return the last init component, and only return the full composite layout if the caller passes in LOV_MAGIC_COMP_V1?  This would add complexity to the kernel, but would avoid compatibility issues with older applications, at the expense of returning &lt;em&gt;something&lt;/em&gt; useful to userspace rather than causing outright application failures.&lt;/p&gt;</comment>
                            <comment id="195931" author="niu" created="Tue, 16 May 2017 03:21:40 +0000"  >&lt;blockquote&gt;
&lt;p&gt;Niu, it looks like ll_dirstripe_verify.c is not handling non-v1/v3 layouts properly. It is probably just comparing &quot;0 == 0&quot; in this case. We should probably deprecate the use of llapi_file_get_stripe() via &lt;em&gt;attribute&lt;/em&gt;((deprecated)) to start (compile time), then via a message printed out in 2.11.&lt;br/&gt;
In the meantime, it probably makes sense to have it return something reasonable for PFL files when used, such as the plain layout of the last component (if file has no size) and the last init component if it has a size.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Ok, sure. What do you mean &quot;via a message printed out in 2.11.&quot;?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;However, for existing applications that call the ioctl directly, we may still need to return something reasonable from the kernel, since otherwise every MPI-IO application running on a new version of Lustre will fail if it hasn&apos;t been patched. One option is to detect the magic value passed to the kernel LL_IOC_LOV_GETSTRIPE handling in lov_getstripe(), and if LOV_MAGIC_V1/V3 return the last init component, and only return the full composite layout if the caller passes in LOV_MAGIC_COMP_V1? This would add complexity to the kernel, but would avoid compatibility issues with older applications, at the expense of returning something useful to userspace rather than causing outright application failures.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;I&apos;m wondering if it&apos;s better to return error instead of the last instantiated component?&lt;/p&gt;

&lt;p&gt;I suppose application usually calls getstripe on open/create file, so the first component will be returned in most cases, then optimizing based on first component&apos;s attributes will highly likely get opposite result. If we return an error instead of last instantiated component, app may either fallback to non-optimizing default setting (which is better than optimizing on first component), or error out (so that user will know it&apos;s time to upgrade).&lt;/p&gt;

&lt;p&gt;BTW, except ADIO, I didn&apos;t see other callers passing lmm magic to LL_IOC_LOV_GETSTRIPE ioctl, so this workaround only works for the apps which providing lmm magic.&lt;/p&gt;</comment>
                            <comment id="196270" author="adilger" created="Wed, 17 May 2017 23:50:54 +0000"  >&lt;blockquote&gt;
&lt;p&gt;What do you mean &quot;via a message printed out in 2.11.&quot;?&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;I mean that &lt;tt&gt;llapi_file_get_stripe()&lt;/tt&gt; should start to print out a warning about calling this function in 2.11, and that they should change to using &lt;tt&gt;llapi_layout_get_by_path()&lt;/tt&gt; instead.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I&apos;m wondering if it&apos;s better to return error instead of the last instantiated component?  I suppose application usually calls getstripe on open/create file, so the first component will be returned in most cases, then optimizing based on first component&apos;s attributes will highly likely get opposite result.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;That&apos;s why I suggested to &quot;have it return something reasonable for PFL files when used, such as the plain layout of the last component (if file has no size) and the last init component if it has a size.&quot;  That would return the last component if the file was just created.&lt;/p&gt;

&lt;p&gt;Another alternative is to return the fields of interest in the current padding fields:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;struct lov_user_md_v1 {           &lt;span class=&quot;code-comment&quot;&gt;/* LOV EA user data (host-endian) */&lt;/span&gt;
        :
        __u32 lmm_stripe_size;    &lt;span class=&quot;code-comment&quot;&gt;/* size of stripe in bytes */&lt;/span&gt;
        __u16 lmm_stripe_count;   &lt;span class=&quot;code-comment&quot;&gt;/* num stripes in use &lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt; object */&lt;/span&gt;
        __u16 lmm_layout_gen;     /* layout generation number
                                   * used when reading */
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;These map to the &lt;tt&gt;__u64 lcm_padding2&lt;/tt&gt; in &lt;tt&gt;struct lov_comp_md_v1&lt;/tt&gt;, which is currently unused.  If this ioctl() is called, it would be possible to extract those values from the proper component, temporarily store them into &lt;tt&gt;lov_user_md_v1&lt;/tt&gt;, and return it to userspace.  This will likely allow 99% of apps to continue using Lustre without any change.&lt;/p&gt;

&lt;p&gt;If course, Ideally we will get a proper fix into the hands of the users, but I think there also needs to be a workaround in place so that sites which don&apos;t apply the fix.&lt;/p&gt;</comment>
                            <comment id="196296" author="gerrit" created="Thu, 18 May 2017 04:26:41 +0000"  >&lt;p&gt;Niu Yawei (yawei.niu@intel.com) uploaded a new patch: &lt;a href=&quot;https://review.whamcloud.com/27180&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://review.whamcloud.com/27180&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-9490&quot; title=&quot;MPI-IO Lustre ADIO driver gets Lustre layout parameters incorrectly &quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-9490&quot;&gt;&lt;del&gt;LU-9490&lt;/del&gt;&lt;/a&gt; tests: ll_dirstripe_verify handles PFL layout&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: 1&lt;br/&gt;
Commit: ecf66cbfaf2e5734a18098db77882a344c944f9f&lt;/p&gt;</comment>
                            <comment id="196308" author="gerrit" created="Thu, 18 May 2017 07:19:58 +0000"  >&lt;p&gt;Niu Yawei (yawei.niu@intel.com) uploaded a new patch: &lt;a href=&quot;https://review.whamcloud.com/27183&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://review.whamcloud.com/27183&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-9490&quot; title=&quot;MPI-IO Lustre ADIO driver gets Lustre layout parameters incorrectly &quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-9490&quot;&gt;&lt;del&gt;LU-9490&lt;/del&gt;&lt;/a&gt; llite: return v1/v3 layout for legacy app&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: 1&lt;br/&gt;
Commit: 87da9d4b51f6874412c46ff130b36e938fa85fe4&lt;/p&gt;</comment>
                            <comment id="196317" author="adilger" created="Thu, 18 May 2017 10:26:32 +0000"  >&lt;p&gt;We still need a fix for MPICH ADIO, otherwise it will never work properly with composite layouts.  The current solution allows it to &lt;em&gt;function&lt;/em&gt;, but it won&apos;t generate any optimal IO patterns.&lt;/p&gt;</comment>
                            <comment id="196675" author="eberglan" created="Mon, 22 May 2017 22:17:15 +0000"  >&lt;p&gt;Emoly to work on ADIO driver ww21&lt;/p&gt;</comment>
                            <comment id="196709" author="emoly.liu" created="Tue, 23 May 2017 04:38:18 +0000"  >&lt;p&gt;I will look into this one.&lt;/p&gt;</comment>
                            <comment id="196719" author="emoly.liu" created="Tue, 23 May 2017 07:49:16 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.whamcloud.com/secure/ViewProfile.jspa?name=adilger&quot; class=&quot;user-hover&quot; rel=&quot;adilger&quot;&gt;adilger&lt;/a&gt;, I&apos;m cloning MPICH git repo. Do you mean I need to create a patch there? &lt;br/&gt;
BTW, the lustre ADIO driver patch in our repo (lustre/contrib/adio_driver_mpich2-1.0.7.patch) is too old, I remembered it was released by MPICH2 about 8 years ago. Should it be removed?&lt;/p&gt;</comment>
                            <comment id="196794" author="adilger" created="Tue, 23 May 2017 20:14:24 +0000"  >&lt;p&gt;Emoly, yes the fix should be submitted to the MPICH Git repo.  The ADIO patches in &lt;tt&gt;lustre/contrib&lt;/tt&gt; should be deleted.&lt;/p&gt;</comment>
                            <comment id="197150" author="emoly.liu" created="Fri, 26 May 2017 08:57:52 +0000"  >&lt;p&gt;Discussed with Niu and worked on how to apply each component stripe information to the I/O pattern redistribution.&lt;/p&gt;</comment>
                            <comment id="197191" author="gerrit" created="Fri, 26 May 2017 18:21:59 +0000"  >&lt;p&gt;Andreas Dilger (andreas.dilger@intel.com) uploaded a new patch: &lt;a href=&quot;https://review.whamcloud.com/27310&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://review.whamcloud.com/27310&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-9490&quot; title=&quot;MPI-IO Lustre ADIO driver gets Lustre layout parameters incorrectly &quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-9490&quot;&gt;&lt;del&gt;LU-9490&lt;/del&gt;&lt;/a&gt; llite: return v1/v3 layout for legacy app&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: pfl&lt;br/&gt;
Current Patch Set: 1&lt;br/&gt;
Commit: f3e00e27e8f86be9400df19f074b23da6d2b17fb&lt;/p&gt;</comment>
                            <comment id="197508" author="gerrit" created="Tue, 30 May 2017 05:00:44 +0000"  >&lt;p&gt;Andreas Dilger (andreas.dilger@intel.com) merged in patch &lt;a href=&quot;https://review.whamcloud.com/27310/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://review.whamcloud.com/27310/&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-9490&quot; title=&quot;MPI-IO Lustre ADIO driver gets Lustre layout parameters incorrectly &quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-9490&quot;&gt;&lt;del&gt;LU-9490&lt;/del&gt;&lt;/a&gt; llite: return v1/v3 layout for legacy app&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: pfl&lt;br/&gt;
Current Patch Set: &lt;br/&gt;
Commit: fac27756d5f2a283a5ec7a908e6434d30748a6bd&lt;/p&gt;</comment>
                            <comment id="198003" author="gerrit" created="Sat, 3 Jun 2017 03:56:32 +0000"  >&lt;p&gt;Oleg Drokin (oleg.drokin@intel.com) merged in patch &lt;a href=&quot;https://review.whamcloud.com/27183/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://review.whamcloud.com/27183/&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-9490&quot; title=&quot;MPI-IO Lustre ADIO driver gets Lustre layout parameters incorrectly &quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-9490&quot;&gt;&lt;del&gt;LU-9490&lt;/del&gt;&lt;/a&gt; llite: return v1/v3 layout for legacy app&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: &lt;br/&gt;
Commit: 545f464b68ee21ccc425113db9b57c63ac2840b1&lt;/p&gt;</comment>
                            <comment id="198521" author="gerrit" created="Wed, 7 Jun 2017 20:30:32 +0000"  >&lt;p&gt;Oleg Drokin (oleg.drokin@intel.com) merged in patch &lt;a href=&quot;https://review.whamcloud.com/27180/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://review.whamcloud.com/27180/&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-9490&quot; title=&quot;MPI-IO Lustre ADIO driver gets Lustre layout parameters incorrectly &quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-9490&quot;&gt;&lt;del&gt;LU-9490&lt;/del&gt;&lt;/a&gt; tests: ll_dirstripe_verify handles PFL layout&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: &lt;br/&gt;
Commit: c1359f54314084e0613a5ae70168595f296b7dfc&lt;/p&gt;</comment>
                            <comment id="198546" author="pjones" created="Wed, 7 Jun 2017 20:47:11 +0000"  >&lt;p&gt;Lustre changes all landed for 2.10. ADIO changes being tracked separately&lt;/p&gt;</comment>
                            <comment id="198989" author="eberglan" created="Tue, 13 Jun 2017 03:19:30 +0000"  >&lt;p&gt;ADIO changes being tracked in &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-9657&quot; title=&quot;Make Lustre ADIO driver work with PFL correctly&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-9657&quot;&gt;&lt;del&gt;LU-9657&lt;/del&gt;&lt;/a&gt;&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Related</name>
                                            <outwardlinks description="is related to ">
                                        <issuelink>
            <issuekey id="45517">LU-9349</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="49284">LU-10232</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="35745">LU-7964</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="46282">LU-9550</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_10390" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hzzci7:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10090" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>9223372036854775807</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>