<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 02:05:16 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-7015] Grant space and reserved blocks percent parameters</title>
                <link>https://jira.whamcloud.com/browse/LU-7015</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;Our system space utilization on one of our systems is high, and as we work to prune some of this data, we&apos;re exploring some other space tunings.&lt;/p&gt;

&lt;p&gt;One of our admins noted the &quot;cur_grant_bytes&quot; osc parameter.  When we looked at a few clients, we saw that this variable often exceeds the max_dirty_mb, sometimes by an order of magnitude.  We usually use 64MB of dirty cache per osc per client. Is there an upper limit to this cur_grants_bytes parameter?  What are the side effects of setting this value to some lower value (or 0)?  Can we reduce this client grant while there is active I/O, and can we do this for all osc connections simultaneously (for a collective of millions of osc connections) for a system?  Is this documented well anywhere?  &lt;/p&gt;


&lt;p&gt;Additionally, we are looking into tuning the reserved_blocks_percent parameter.  The Lustre manual states that 5% is the minimum, but is that a sane value for all OST sizes?&lt;/p&gt;

&lt;p&gt;Thanks,&lt;br/&gt;
&amp;#8211;&lt;br/&gt;
Jesse&lt;/p&gt;
</description>
                <environment>RHEL-6.6, lustre-2.5.4</environment>
        <key id="31508">LU-7015</key>
            <summary>Grant space and reserved blocks percent parameters</summary>
                <type id="9" iconUrl="https://jira.whamcloud.com/images/icons/issuetypes/undefined.png">Question/Request</type>
                                            <priority id="4" iconUrl="https://jira.whamcloud.com/images/icons/priorities/minor.svg">Minor</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="green">Oleg Drokin</assignee>
                                    <reporter username="hanleyja">Jesse Hanley</reporter>
                        <labels>
                    </labels>
                <created>Mon, 17 Aug 2015 20:30:06 +0000</created>
                <updated>Wed, 14 Mar 2018 12:28:21 +0000</updated>
                            <resolved>Thu, 10 Sep 2015 18:20:55 +0000</resolved>
                                    <version>Lustre 2.5.4</version>
                                    <fixVersion>Lustre 2.8.0</fixVersion>
                                        <due></due>
                            <votes>0</votes>
                                    <watches>13</watches>
                                                                            <comments>
                            <comment id="124357" author="ezell" created="Mon, 17 Aug 2015 21:24:46 +0000"  >&lt;p&gt;To include some numbers:&lt;/p&gt;

&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;# ls exports | wc -l
20190
# echo &quot;$(cat tot_granted) / $(ls exports | wc -l)&quot; | bc
116961044
# echo &quot;100 * $(cat tot_granted) / 1024 / $(cat kbytestotal)&quot; | bc
15
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Our 20,000 clients average 116MB of grants per OST, resulting in 15% of the OST reserved for grants.  That means when any OST hits 85% full, users start getting ENOSPC.  I picked a random client and grant sizes range from 2MB to 343MB per OSC.&lt;/p&gt;</comment>
                            <comment id="124360" author="green" created="Mon, 17 Aug 2015 21:46:24 +0000"  >&lt;p&gt;cur_grant_bytes is how much grant was received from this OST by a client. It has no direct relation to max_dirty_mb other than max_dirty_mb cannot be higher than this.&lt;/p&gt;

&lt;p&gt;Technically the calculation for the grant request is&lt;/p&gt;
&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;                long max_in_flight = (cli-&amp;gt;cl_max_pages_per_rpc &amp;lt;&amp;lt;
                                      PAGE_CACHE_SHIFT) *
                                     (cli-&amp;gt;cl_max_rpcs_in_flight + 1);
                oa-&amp;gt;o_undirty = max(cli-&amp;gt;cl_dirty_max_pages &amp;lt;&amp;lt; PAGE_CACHE_SHIFT,
                                    max_in_flight);
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;This is how much every client RPC requests.&lt;br/&gt;
It&apos;s a max of either your num RPCs in flight or max_dirty_mb&lt;/p&gt;

&lt;p&gt;Theoretically we should not exceed this value (want = o_undirty):&lt;/p&gt;
&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;        /* Grant some fraction of the client&apos;s requested grant space so that
         * they are not always waiting for write credits (not all of it to
         * avoid overgranting in face of multiple RPCs in flight).  This
         * essentially will be able to control the OSC_MAX_RIF for a client.
         *
         * If we do have a large disparity between what the client thinks it
         * has and what we think it has, don&apos;t grant very much and let the
         * client consume its grant first.  Either it just has lots of RPCs
         * in flight, or it was evicted and its grants will soon be used up. */
        if (curgrant &amp;gt;= want || curgrant &amp;gt;= fed-&amp;gt;fed_grant + grant_chunk)
                   RETURN(0);
...
        grant = min(want, left);
        /* round grant upt to the next block size */
        grant = (grant + (1 &amp;lt;&amp;lt; ofd-&amp;gt;ofd_blockbits) - 1) &amp;amp;
                ~((1ULL &amp;lt;&amp;lt; ofd-&amp;gt;ofd_blockbits) - 1);
        /* Limit to ofd_grant_chunk() if not reconnect/recovery */
        if ((grant &amp;gt; grant_chunk) &amp;amp;&amp;amp; conservative)
                grant = grant_chunk;
...
        ofd-&amp;gt;ofd_tot_granted += grant;
        fed-&amp;gt;fed_grant += grant;
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;So I imagine biggest case could be that if a client sends a bunch of requests while the grant is nearly at the max, then every one of those RPCs would return 2M of grant each,&lt;br/&gt;
which I guess theoretically should only allow to get a client to receive at most 2x of the max_dirty_mb or max_requests_in_flight megabytes (though if you are in recovery then every request could bring as much grant).&lt;br/&gt;
Overall it seems there&apos;s seem to be a bit of a logic flaw in server-side granting logic where after initial checks want should be recalculated as want -= grant or something like that.&lt;/p&gt;

&lt;p&gt;While you can write a low value into the proc file, it would only have an effect of releasing the extra grant above the value you write there immediately, but the value does not stick and the grant would keep accumulating according to the calculations above.&lt;/p&gt;

&lt;p&gt;As for the reserved_blocks_percent, do you mean the ext4 reservation? I think recent e2fspogs reduced that to smaller value for large filesystem sizes by default already.&lt;/p&gt;</comment>
                            <comment id="124402" author="hanleyja" created="Tue, 18 Aug 2015 13:08:18 +0000"  >&lt;p&gt;Thanks Oleg for the detail!&lt;/p&gt;

&lt;p&gt;These servers were originally formatted with Lustre 2.4.  When I checked, it looks like the OSTs are at 5% reserved:&lt;/p&gt;

&lt;p&gt;Block count:              3755999232&lt;br/&gt;
Reserved block count:     187799961&lt;/p&gt;

&lt;p&gt;187799961 / 3755999232 * 100 ~= 5%&lt;/p&gt;

&lt;p&gt;With that being the case, can/should we lower this to a smaller reserved block count?&lt;/p&gt;

&lt;p&gt;Also, do I need to submit a new case about the server logic?&lt;/p&gt;

&lt;p&gt;Thanks!&lt;br/&gt;
&amp;#8211;&lt;br/&gt;
Jesse&lt;/p&gt;</comment>
                            <comment id="124403" author="ezell" created="Tue, 18 Aug 2015 13:16:52 +0000"  >&lt;p&gt;I guess until we get usage down or a patch for this, we will need to periodically shrink grants on clients to avoid ENOSPC.&lt;/p&gt;

&lt;p&gt;The source of the question about reserved space was to better understand when a user might get ENOSPC.  Would it be when a client has exhausted its grant and  (kbytesfree - (tot_granted/1024)) &amp;lt;= 0 or does it use (kbytesavail - (tot_granted/1024)) &amp;lt;= 0 ?&lt;/p&gt;

&lt;p&gt;The Lustre Operations manual has a pretty strong warning about lowering the reserved space:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Reducing the space reservation can cause severe performance degradation as the OST file system becomes more than 95% full, due to difficulty in locating large areas of contiguous free space. This performance degradation may persist even if the space usage drops below 95% again. It is recommended NOT to reduce the reserved disk space below 5%.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;But  if that will give us a little headroom, we know grants will help keep us from getting &lt;b&gt;too&lt;/b&gt; close to completely empty.&lt;/p&gt;</comment>
                            <comment id="124405" author="ezell" created="Tue, 18 Aug 2015 13:36:01 +0000"  >&lt;p&gt;It looks like ofd_grant_space_left() uses ofd-&amp;gt;ofd_osfs.os_bavail, so it appears to take the reserved space into account.&lt;/p&gt;</comment>
                            <comment id="124455" author="ezell" created="Tue, 18 Aug 2015 17:22:13 +0000"  >&lt;p&gt;I just ran a quick test on our TDS system.  I took a newly mounted client and created 50 files striped across OST 0.  I backgrounded 50 &lt;em&gt;dd&lt;/em&gt; processes against those files and gathered logs with +cache enabled on the client and server.&lt;/p&gt;

&lt;p&gt;The first thing I noticed it that the server very quickly increased the grant to the client, maybe even before the client had a chance to realize it.&lt;/p&gt;

&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;00002000:00000020:4.0:1439910325.382841:0:36645:0:(ofd_grant.c:662:ofd_grant()) atlastds-OST0000: cli ce2fb5d0-e502-410d-675d-3b8d0dd26305/ffff880806fe3c00 wants: 33554432 current grant 0 granting: 8388608
00002000:00000020:4.0:1439910325.383027:0:31053:0:(ofd_grant.c:662:ofd_grant()) atlastds-OST0000: cli ce2fb5d0-e502-410d-675d-3b8d0dd26305/ffff880806fe3c00 wants: 33554432 current grant 0 granting: 8388608
00002000:00000020:4.0:1439910325.383615:0:36646:0:(ofd_grant.c:662:ofd_grant()) atlastds-OST0000: cli ce2fb5d0-e502-410d-675d-3b8d0dd26305/ffff880806fe3c00 wants: 33554432 current grant 0 granting: 8388608
00002000:00000020:4.0:1439910325.383775:0:36647:0:(ofd_grant.c:662:ofd_grant()) atlastds-OST0000: cli ce2fb5d0-e502-410d-675d-3b8d0dd26305/ffff880806fe3c00 wants: 33554432 current grant 0 granting: 8388608
00002000:00000020:4.0:1439910325.384272:0:36648:0:(ofd_grant.c:662:ofd_grant()) atlastds-OST0000: cli ce2fb5d0-e502-410d-675d-3b8d0dd26305/ffff880806fe3c00 wants: 33554432 current grant 0 granting: 8388608
00002000:00000020:4.0:1439910325.385007:0:36649:0:(ofd_grant.c:662:ofd_grant()) atlastds-OST0000: cli ce2fb5d0-e502-410d-675d-3b8d0dd26305/ffff880806fe3c00 wants: 33554432 current grant 0 granting: 8388608
00002000:00000020:4.0:1439910325.385154:0:36650:0:(ofd_grant.c:662:ofd_grant()) atlastds-OST0000: cli ce2fb5d0-e502-410d-675d-3b8d0dd26305/ffff880806fe3c00 wants: 33554432 current grant 0 granting: 8388608
00002000:00000020:6.0:1439910325.416668:0:36648:0:(ofd_grant.c:662:ofd_grant()) atlastds-OST0000: cli ce2fb5d0-e502-410d-675d-3b8d0dd26305/ffff880806fe3c00 wants: 33554432 current grant 335872 granting: 8388608
00002000:00000020:5.0:1439910325.417207:0:36649:0:(ofd_grant.c:662:ofd_grant()) atlastds-OST0000: cli ce2fb5d0-e502-410d-675d-3b8d0dd26305/ffff880806fe3c00 wants: 33554432 current grant 0 granting: 8388608
00002000:00000020:6.0:1439910325.417262:0:36645:0:(ofd_grant.c:662:ofd_grant()) atlastds-OST0000: cli ce2fb5d0-e502-410d-675d-3b8d0dd26305/ffff880806fe3c00 wants: 33554432 current grant 0 granting: 8388608
00002000:00000020:6.0:1439910325.433766:0:31053:0:(ofd_grant.c:662:ofd_grant()) atlastds-OST0000: cli ce2fb5d0-e502-410d-675d-3b8d0dd26305/ffff880806fe3c00 wants: 33554432 current grant 29917184 granting: 8388608
00002000:00000020:4.0:1439910325.433773:0:36646:0:(ofd_grant.c:662:ofd_grant()) atlastds-OST0000: cli ce2fb5d0-e502-410d-675d-3b8d0dd26305/ffff880806fe3c00 wants: 33554432 current grant 8187904 granting: 8388608
00002000:00000020:5.0:1439910325.433789:0:31052:0:(ofd_grant.c:662:ofd_grant()) atlastds-OST0000: cli ce2fb5d0-e502-410d-675d-3b8d0dd26305/ffff880806fe3c00 wants: 33554432 current grant 22822912 granting: 8388608
00002000:00000020:6.0:1439910325.434528:0:31054:0:(ofd_grant.c:662:ofd_grant()) atlastds-OST0000: cli ce2fb5d0-e502-410d-675d-3b8d0dd26305/ffff880806fe3c00 wants: 33554432 current grant 25923584 granting: 8388608
00002000:00000020:4.0:1439910325.434534:0:36647:0:(ofd_grant.c:662:ofd_grant()) atlastds-OST0000: cli ce2fb5d0-e502-410d-675d-3b8d0dd26305/ffff880806fe3c00 wants: 33554432 current grant 25845760 granting: 8388608
00002000:00000020:5.0:1439910325.591676:0:36650:0:(ofd_grant.c:662:ofd_grant()) atlastds-OST0000: cli ce2fb5d0-e502-410d-675d-3b8d0dd26305/ffff880806fe3c00 wants: 33554432 current grant 32403456 granting: 8388608
00002000:00000020:4.0:1439910325.591852:0:36652:0:(ofd_grant.c:662:ofd_grant()) atlastds-OST0000: cli ce2fb5d0-e502-410d-675d-3b8d0dd26305/ffff880806fe3c00 wants: 33554432 current grant 32382976 granting: 8388608
00002000:00000020:5.0:1439910325.591860:0:36647:0:(ofd_grant.c:662:ofd_grant()) atlastds-OST0000: cli ce2fb5d0-e502-410d-675d-3b8d0dd26305/ffff880806fe3c00 wants: 33554432 current grant 32608256 granting: 8388608
00002000:00000020:6.0:1439910325.593790:0:31054:0:(ofd_grant.c:662:ofd_grant()) atlastds-OST0000: cli ce2fb5d0-e502-410d-675d-3b8d0dd26305/ffff880806fe3c00 wants: 33554432 current grant 30371840 granting: 8388608
00002000:00000020:5.0:1439910325.595378:0:36651:0:(ofd_grant.c:662:ofd_grant()) atlastds-OST0000: cli ce2fb5d0-e502-410d-675d-3b8d0dd26305/ffff880806fe3c00 wants: 33554432 current grant 29700096 granting: 8388608
00002000:00000020:4.0:1439910325.595384:0:31052:0:(ofd_grant.c:662:ofd_grant()) atlastds-OST0000: cli ce2fb5d0-e502-410d-675d-3b8d0dd26305/ffff880806fe3c00 wants: 33554432 current grant 29696000 granting: 8388608
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The server granted it 56MB before the client even reported having a grant.&lt;/p&gt;

&lt;p&gt;I haven&apos;t read all of the grant-related code, so take this analysis with a grain of salt.&lt;/p&gt;

&lt;p&gt;Is the &lt;em&gt;want&lt;/em&gt; parameter supposed to be an absolute or relative value?&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeHeader panelHeader&quot; style=&quot;border-bottom-width: 1px;&quot;&gt;&lt;b&gt;lustre/ofd/ofd_grant.c:ofd_grant()&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;        /* Grant some fraction of the client&apos;s requested grant space so that
         * they are not always waiting &lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; write credits (not all of it to
         * avoid overgranting in face of multiple RPCs in flight).  This
         * essentially will be able to control the OSC_MAX_RIF &lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; a client.
         *
         * If we &lt;span class=&quot;code-keyword&quot;&gt;do&lt;/span&gt; have a large disparity between what the client thinks it
         * has and what we think it has, don&apos;t grant very much and let the
         * client consume its grant first.  Either it just has lots of RPCs
         * in flight, or it was evicted and its grants will soon be used up. */
        &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (curgrant &amp;gt;= want || curgrant &amp;gt;= fed-&amp;gt;fed_grant + grant_chunk)
                   RETURN(0);
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This looks like &lt;em&gt;want&lt;/em&gt; is being used as an absolute value.  Assuming &lt;em&gt;want&lt;/em&gt; should be absolute, do we also need a check to ensure that &lt;em&gt;fed-&amp;gt;fed_grant&lt;/em&gt; isn&apos;t much larger than &lt;em&gt;want&lt;/em&gt;?&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeHeader panelHeader&quot; style=&quot;border-bottom-width: 1px;&quot;&gt;&lt;b&gt;lustre/ofd/ofd_grant.c:ofd_grant()&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;grant = min(want, left);
...
        &lt;span class=&quot;code-comment&quot;&gt;/* Limit to ofd_grant_chunk() &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; not reconnect/recovery */&lt;/span&gt;
        &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; ((grant &amp;gt; grant_chunk) &amp;amp;&amp;amp; conservative)
                grant = grant_chunk;
...
        ofd-&amp;gt;ofd_tot_granted += grant;
        fed-&amp;gt;fed_grant += grant;
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;This looks like &lt;em&gt;want&lt;/em&gt; is a relative value.&lt;/p&gt;

&lt;p&gt;So the clients repeatedly says &quot;I want 32MB&quot;  and the server takes that request, lowers it to &lt;em&gt;grant_chunk&lt;/em&gt; (8MB), and grants it 8MB repeatedly until the client claims it has at least 32MB.&lt;/p&gt;

&lt;p&gt;According to Andreas in &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-3859&quot; title=&quot;grant shrinker floods OST and produce a large load&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-3859&quot;&gt;&lt;del&gt;LU-3859&lt;/del&gt;&lt;/a&gt;, OBD_CONNECT_GRANT_SHRINK isn&apos;t set, so this is never cleaned up automatically.  Is there a reason this is disabled?&lt;/p&gt;</comment>
                            <comment id="124516" author="adilger" created="Tue, 18 Aug 2015 20:47:57 +0000"  >&lt;p&gt;The upper limit for wanted grant is typically at least 2x max_dirty_mb, so by having max_dirty_mb=64M doubles the potential amount of grant per client.  With 22,000 clients that will result in a large amount of grant, as you have seen.  Presumably the change to max_dirty_mb=64M was done to improve single-client write performance and/or increase writeback caching on the client without blocking the IO?&lt;/p&gt;

&lt;p&gt;Unfortunately, without the grant shrinker active, writing to cur_grant_bytes will not permanently affect the amount of grant held by the client unless the filesystem is nearly out of space.  Otherwise, the client will try to surrender the grant but the server will reply that there is still grant available and return the same amount back.  Only when the available space begins to get constrained will the OST not return the grant, but this can be done on clients as an emergency measure when available space is running short, something like:&lt;/p&gt;
&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;pdsh -a &amp;lt;clients&amp;gt; lctl set_param osc.*.cur_grant_bytes=2M
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;(or even 1MB if necessary) and then clients which do not need any grant will not get any more.&lt;/p&gt;

&lt;p&gt;The grant shrinking code had problems when it was first introduced (before 2.0 was released) and has never been fixed since then.&lt;/p&gt;</comment>
                            <comment id="126156" author="gerrit" created="Thu, 3 Sep 2015 13:54:58 +0000"  >&lt;p&gt;Oleg Drokin (oleg.drokin@intel.com) uploaded a new patch: &lt;a href=&quot;http://review.whamcloud.com/16216&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/16216&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-7015&quot; title=&quot;Grant space and reserved blocks percent parameters&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-7015&quot;&gt;&lt;del&gt;LU-7015&lt;/del&gt;&lt;/a&gt; ofd: Fix wanted grant calculation&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: 1&lt;br/&gt;
Commit: 22c2ad105d9d420058f653f03030ce2e4a3f017b&lt;/p&gt;</comment>
                            <comment id="126870" author="gerrit" created="Thu, 10 Sep 2015 01:04:40 +0000"  >&lt;p&gt;Oleg Drokin (oleg.drokin@intel.com) merged in patch &lt;a href=&quot;http://review.whamcloud.com/16216/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/16216/&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-7015&quot; title=&quot;Grant space and reserved blocks percent parameters&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-7015&quot;&gt;&lt;del&gt;LU-7015&lt;/del&gt;&lt;/a&gt; ofd: Fix wanted grant calculation&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: &lt;br/&gt;
Commit: 091988499717c729f8870b331ab3774b249d5818&lt;/p&gt;</comment>
                            <comment id="126966" author="jgmitter" created="Thu, 10 Sep 2015 18:20:55 +0000"  >&lt;p&gt;Landed for 2.8.0&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10010">
                    <name>Duplicate</name>
                                                                <inwardlinks description="is duplicated by">
                                                        </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10011">
                    <name>Related</name>
                                            <outwardlinks description="is related to ">
                                        <issuelink>
            <issuekey id="20709">LU-3859</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </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|hzxknr:</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>
                                                                                                                                                                                                                                                                                                                                                                                                                </customfields>
    </item>
</channel>
</rss>