<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 01:31:46 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-3192] LBUG:(osc_request.c:1308:osc_brw_prep_request()) ASSERTION( i == 0 || pg-&gt;off &gt; pg_prev-&gt;off )</title>
                <link>https://jira.whamcloud.com/browse/LU-3192</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;This happens to Lustre 2.3 running with SP1 but we have seen it in SP2 or 2.2(or even 2.1 with different stack trace, see LELUS-41):&lt;/p&gt;

&lt;p&gt;LustreError: 3821:0:(osc_request.c:819:osc_announce_cached()) dirty 361 - 362 &amp;gt; system dirty_max 2113536&lt;br/&gt;
LustreError: 3818:0:(osc_request.c:1308:osc_brw_prep_request()) ASSERTION( i == 0 || pg-&amp;gt;off &amp;gt; pg_prev-&amp;gt;off ) failed: i 1 p_c 151 pg ffffea0004129ce8 &lt;span class=&quot;error&quot;&gt;&amp;#91;pri 18446612138517887360 ind 30208&amp;#93;&lt;/span&gt; off 123731968 prev_pg ffffea000dbc0e18 [pri 0&lt;br/&gt;
ind 263316] off 123731968&lt;br/&gt;
LustreError: 3818:0:(osc_request.c:1308:osc_brw_prep_request()) LBUG&lt;br/&gt;
Pid: 3818, comm: doio_mpi&lt;br/&gt;
Call Trace:&lt;br/&gt;
&lt;span class=&quot;error&quot;&gt;&amp;#91;&amp;lt;ffffffff81007e59&amp;gt;&amp;#93;&lt;/span&gt; try_stack_unwind+0x1a9/0x200&lt;br/&gt;
&lt;span class=&quot;error&quot;&gt;&amp;#91;&amp;lt;ffffffff81006625&amp;gt;&amp;#93;&lt;/span&gt; dump_trace+0x95/0x300&lt;br/&gt;
&lt;span class=&quot;error&quot;&gt;&amp;#91;&amp;lt;ffffffffa016b8d7&amp;gt;&amp;#93;&lt;/span&gt; libcfs_debug_dumpstack+0x57/0x80 &lt;span class=&quot;error&quot;&gt;&amp;#91;libcfs&amp;#93;&lt;/span&gt;&lt;br/&gt;
&lt;span class=&quot;error&quot;&gt;&amp;#91;&amp;lt;ffffffffa016be27&amp;gt;&amp;#93;&lt;/span&gt; lbug_with_loc+0x47/0xb0 &lt;span class=&quot;error&quot;&gt;&amp;#91;libcfs&amp;#93;&lt;/span&gt;&lt;br/&gt;
&lt;span class=&quot;error&quot;&gt;&amp;#91;&amp;lt;ffffffffa06969c9&amp;gt;&amp;#93;&lt;/span&gt; osc_brw_prep_request+0x959/0xe60 &lt;span class=&quot;error&quot;&gt;&amp;#91;osc&amp;#93;&lt;/span&gt;&lt;br/&gt;
&lt;span class=&quot;error&quot;&gt;&amp;#91;&amp;lt;ffffffffa06983bc&amp;gt;&amp;#93;&lt;/span&gt; osc_build_rpc+0x90c/0x1180 &lt;span class=&quot;error&quot;&gt;&amp;#91;osc&amp;#93;&lt;/span&gt;&lt;br/&gt;
&lt;span class=&quot;error&quot;&gt;&amp;#91;&amp;lt;ffffffffa06ad617&amp;gt;&amp;#93;&lt;/span&gt; osc_send_oap_rpc+0x3c7/0xc20 &lt;span class=&quot;error&quot;&gt;&amp;#91;osc&amp;#93;&lt;/span&gt;&lt;br/&gt;
&lt;span class=&quot;error&quot;&gt;&amp;#91;&amp;lt;ffffffffa06ae24f&amp;gt;&amp;#93;&lt;/span&gt; osc_io_unplug+0x3df/0x730 &lt;span class=&quot;error&quot;&gt;&amp;#91;osc&amp;#93;&lt;/span&gt;&lt;br/&gt;
&lt;span class=&quot;error&quot;&gt;&amp;#91;&amp;lt;ffffffffa06a834a&amp;gt;&amp;#93;&lt;/span&gt; osc_io_submit+0x1da/0x520 &lt;span class=&quot;error&quot;&gt;&amp;#91;osc&amp;#93;&lt;/span&gt;&lt;br/&gt;
&lt;span class=&quot;error&quot;&gt;&amp;#91;&amp;lt;ffffffffa02e13e8&amp;gt;&amp;#93;&lt;/span&gt; cl_io_submit_rw+0x78/0x190 &lt;span class=&quot;error&quot;&gt;&amp;#91;obdclass&amp;#93;&lt;/span&gt;&lt;br/&gt;
&lt;span class=&quot;error&quot;&gt;&amp;#91;&amp;lt;ffffffffa07334cd&amp;gt;&amp;#93;&lt;/span&gt; lov_io_submit+0x27d/0xc00 &lt;span class=&quot;error&quot;&gt;&amp;#91;lov&amp;#93;&lt;/span&gt;&lt;br/&gt;
&lt;span class=&quot;error&quot;&gt;&amp;#91;&amp;lt;ffffffffa02e13e8&amp;gt;&amp;#93;&lt;/span&gt; cl_io_submit_rw+0x78/0x190 &lt;span class=&quot;error&quot;&gt;&amp;#91;obdclass&amp;#93;&lt;/span&gt;&lt;br/&gt;
&lt;span class=&quot;error&quot;&gt;&amp;#91;&amp;lt;ffffffffa02e35c1&amp;gt;&amp;#93;&lt;/span&gt; cl_io_read_page+0xd1/0x190 &lt;span class=&quot;error&quot;&gt;&amp;#91;obdclass&amp;#93;&lt;/span&gt;&lt;br/&gt;
&lt;span class=&quot;error&quot;&gt;&amp;#91;&amp;lt;ffffffffa07ee254&amp;gt;&amp;#93;&lt;/span&gt; ll_readpage+0x184/0x210 &lt;span class=&quot;error&quot;&gt;&amp;#91;lustre&amp;#93;&lt;/span&gt;&lt;br/&gt;
&lt;span class=&quot;error&quot;&gt;&amp;#91;&amp;lt;ffffffff810d3ff0&amp;gt;&amp;#93;&lt;/span&gt; generic_file_aio_read+0x230/0x640&lt;br/&gt;
&lt;span class=&quot;error&quot;&gt;&amp;#91;&amp;lt;ffffffffa0819846&amp;gt;&amp;#93;&lt;/span&gt; vvp_io_read_start+0x1f6/0x3d0 &lt;span class=&quot;error&quot;&gt;&amp;#91;lustre&amp;#93;&lt;/span&gt;&lt;br/&gt;
&lt;span class=&quot;error&quot;&gt;&amp;#91;&amp;lt;ffffffffa02e16ca&amp;gt;&amp;#93;&lt;/span&gt; cl_io_start+0x6a/0x130 &lt;span class=&quot;error&quot;&gt;&amp;#91;obdclass&amp;#93;&lt;/span&gt;&lt;br/&gt;
&lt;span class=&quot;error&quot;&gt;&amp;#91;&amp;lt;ffffffffa02e597c&amp;gt;&amp;#93;&lt;/span&gt; cl_io_loop+0xac/0x1a0 &lt;span class=&quot;error&quot;&gt;&amp;#91;obdclass&amp;#93;&lt;/span&gt;&lt;br/&gt;
&lt;span class=&quot;error&quot;&gt;&amp;#91;&amp;lt;ffffffffa07c5c23&amp;gt;&amp;#93;&lt;/span&gt; ll_file_io_generic+0x353/0x530 &lt;span class=&quot;error&quot;&gt;&amp;#91;lustre&amp;#93;&lt;/span&gt;&lt;br/&gt;
&lt;span class=&quot;error&quot;&gt;&amp;#91;&amp;lt;ffffffffa07c62c8&amp;gt;&amp;#93;&lt;/span&gt; ll_file_aio_read+0x238/0x290 &lt;span class=&quot;error&quot;&gt;&amp;#91;lustre&amp;#93;&lt;/span&gt;&lt;br/&gt;
&lt;span class=&quot;error&quot;&gt;&amp;#91;&amp;lt;ffffffffa07c69bf&amp;gt;&amp;#93;&lt;/span&gt; ll_file_read+0x20f/0x2b0 &lt;span class=&quot;error&quot;&gt;&amp;#91;lustre&amp;#93;&lt;/span&gt;&lt;br/&gt;
&lt;span class=&quot;error&quot;&gt;&amp;#91;&amp;lt;ffffffff81117fe8&amp;gt;&amp;#93;&lt;/span&gt; vfs_read+0xc8/0x1a0&lt;br/&gt;
&lt;span class=&quot;error&quot;&gt;&amp;#91;&amp;lt;ffffffff811181b5&amp;gt;&amp;#93;&lt;/span&gt; sys_read+0x55/0x90&lt;br/&gt;
&lt;span class=&quot;error&quot;&gt;&amp;#91;&amp;lt;ffffffff8100305b&amp;gt;&amp;#93;&lt;/span&gt; system_call_fastpath+0x16/0x1b&lt;br/&gt;
&lt;span class=&quot;error&quot;&gt;&amp;#91;&amp;lt;0000000020139f90&amp;gt;&amp;#93;&lt;/span&gt; 0x20139f90&lt;br/&gt;
Kernel panic - not syncing: LBUG&lt;/p&gt;

&lt;p&gt;Here are also some other instances all seem to hit the same page for the RPC:&lt;/p&gt;

&lt;p&gt;Lustre 2.3.0-trunk-1.0000.40706.58.4-abuild-trunk 27&lt;/p&gt;

&lt;p&gt;First hit Cname # hits Apid/Roles&lt;br/&gt;
LUS: LBUG-ASSERTION( i == 0 || pg-&amp;gt;off &amp;gt; pg_prev-&amp;gt;off ) failed: i 1 p_c 256 pg ffffea000c65a268 &lt;span class=&quot;error&quot;&gt;&amp;#91;pri 18446612137055183040 ind 26880&amp;#93;&lt;/span&gt; off 110100480 prev_pg ffffea000e0e73f0 &lt;span class=&quot;error&quot;&gt;&amp;#91;pri 0 ind 263338&amp;#93;&lt;/span&gt; off 110100480&lt;br/&gt;
13/02/06 01:43:15 c0-0c0s1n2 1 854758&lt;/p&gt;

&lt;p&gt;854758 doio_mpi&lt;/p&gt;

&lt;p&gt;LUS: LBUG-ASSERTION( i == 0 || pg-&amp;gt;off &amp;gt; pg_prev-&amp;gt;off ) failed: i 1 p_c 256 pg ffffea00179fdfa0 &lt;span class=&quot;error&quot;&gt;&amp;#91;pri 18446612160482967680 ind 46909&amp;#93;&lt;/span&gt; off 192139264 prev_pg ffffea000bd34598 &lt;span class=&quot;error&quot;&gt;&amp;#91;pri 0 ind 263425&amp;#93;&lt;/span&gt; off 192139264&lt;br/&gt;
13/02/06 02:22:40 c0-0c0s4n3 1 855115&lt;/p&gt;

&lt;p&gt;855115 doio_mpi&lt;/p&gt;

&lt;p&gt;LUS: LBUG-ASSERTION( i == 0 || pg-&amp;gt;off &amp;gt; pg_prev-&amp;gt;off ) failed: i 32 p_c 155 pg ffffea001bcb95e0 &lt;span class=&quot;error&quot;&gt;&amp;#91;pri 0 ind 264145&amp;#93;&lt;/span&gt; off 14807040 prev_pg ffffea001bff2bd0 &lt;span class=&quot;error&quot;&gt;&amp;#91;pri 18446612166806628160 ind 3615&amp;#93;&lt;/span&gt; off 14807040&lt;br/&gt;
13/02/06 00:09:44 c0-0c0s7n2 1 854062&lt;/p&gt;

&lt;p&gt;854062 doio_mpi&lt;/p&gt;</description>
                <environment></environment>
        <key id="18454">LU-3192</key>
            <summary>LBUG:(osc_request.c:1308:osc_brw_prep_request()) ASSERTION( i == 0 || pg-&gt;off &gt; pg_prev-&gt;off )</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="wc-triage">WC Triage</assignee>
                                    <reporter username="vitaly_fertman">Vitaly Fertman</reporter>
                        <labels>
                            <label>patch</label>
                    </labels>
                <created>Thu, 18 Apr 2013 14:19:48 +0000</created>
                <updated>Fri, 7 Nov 2014 19:27:05 +0000</updated>
                            <resolved>Fri, 7 Nov 2014 19:27:05 +0000</resolved>
                                                    <fixVersion>Lustre 2.7.0</fixVersion>
                                        <due></due>
                            <votes>0</votes>
                                    <watches>12</watches>
                                                                            <comments>
                            <comment id="56555" author="keith" created="Thu, 18 Apr 2013 17:54:19 +0000"  >&lt;p&gt;What is 2.3 SP1 and SP2?  Do you see this with the 2.3 branch in the git tree?  Or with Master?&lt;/p&gt;</comment>
                            <comment id="56559" author="pjones" created="Thu, 18 Apr 2013 18:14:05 +0000"  >&lt;p&gt;Keith I think that Vitaly means SLES11 SP1 and SP2&lt;/p&gt;</comment>
                            <comment id="56582" author="vitaly_fertman" created="Thu, 18 Apr 2013 21:52:33 +0000"  >&lt;p&gt;this is not correct to kick transient pages off the CLIO cache, because we may get 2 sets of pages in osc_build_req(), cacheable and transient ones, for the same offsets.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://review.whamcloud.com/6096&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/6096&lt;/a&gt; - revert of &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-481&quot; title=&quot;sanity test_119d fails (ASSERTION((struct cl_page *)vmpage-&amp;gt;private != slice-&amp;gt;cpl_page) failed)&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-481&quot;&gt;&lt;del&gt;LU-481&lt;/del&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href=&quot;http://review.whamcloud.com/6097&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/6097&lt;/a&gt; - fix of original &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-481&quot; title=&quot;sanity test_119d fails (ASSERTION((struct cl_page *)vmpage-&amp;gt;private != slice-&amp;gt;cpl_page) failed)&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-481&quot;&gt;&lt;del&gt;LU-481&lt;/del&gt;&lt;/a&gt; issue&lt;/p&gt;</comment>
                            <comment id="56583" author="vitaly_fertman" created="Thu, 18 Apr 2013 21:54:00 +0000"  >&lt;p&gt;lustre 2.3 on sles11 sp1/sp2&lt;/p&gt;</comment>
                            <comment id="56730" author="green" created="Mon, 22 Apr 2013 19:52:01 +0000"  >&lt;p&gt;So can you please describe the scenario to hit this and the environment?&lt;/p&gt;</comment>
                            <comment id="56744" author="vitaly_fertman" created="Mon, 22 Apr 2013 21:36:02 +0000"  >&lt;p&gt;due to putting out transient pages of the page cache, we may get 2 sets of pages, cacheable and transient, for the same offsets, originated in BIO and DIO. later, when preparing rpc, such pages are gathered for the same rpc, and assertion that 2 pages with the same offset are found is hit.&lt;/p&gt;</comment>
                            <comment id="56761" author="niu" created="Tue, 23 Apr 2013 02:22:55 +0000"  >&lt;p&gt;Actually, I just started refresh the fix of &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-247&quot; title=&quot;Lustre client slow performance on BG/P IONs: unaligned DIRECT_IO&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-247&quot;&gt;&lt;del&gt;LU-247&lt;/del&gt;&lt;/a&gt; (&lt;a href=&quot;http://review.whamcloud.com/#change,980&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/#change,980&lt;/a&gt;) yesterday, which could fix this problem (concurrent dio read &amp;amp; buffered read), but that isn&apos;t a small fix, I&apos;m not sure if it can be merged in 2.4.&lt;/p&gt;</comment>
                            <comment id="56955" author="adilger" created="Wed, 24 Apr 2013 17:38:47 +0000"  >&lt;p&gt;Vitaly, can you please tell us what the workload is that is triggering this problem?  Is this a synthetic workload that is generating &quot;difficult&quot; IO patterns with O_DIRECT and buffered IO on the same file offset, or is this a failure seen by a real application running from a user?&lt;/p&gt;

&lt;p&gt;I would be surprised if any real application will have an IO workload to trigger this, but then again application developers are known to do all kinds of strange things...&lt;/p&gt;

&lt;p&gt;If this is only from a synthetic workload, then I&apos;m inclined to drop it as a blocker for the 2.4.0 release, since this is extremely unlikely to be hit under real-world usage.&lt;/p&gt;</comment>
                            <comment id="56988" author="cheng_shao" created="Wed, 24 Apr 2013 22:07:53 +0000"  >&lt;p&gt;Andreas, this is not some real application workload. It is from an internal stress test. &lt;/p&gt;</comment>
                            <comment id="57084" author="jay" created="Thu, 25 Apr 2013 23:10:36 +0000"  >&lt;p&gt;Let&apos;s mark the transient page as special in IO engine so that it can&apos;t be merged with caching pages.&lt;/p&gt;</comment>
                            <comment id="57117" author="shadow" created="Fri, 26 Apr 2013 12:28:48 +0000"  >&lt;p&gt;Jay,&lt;/p&gt;

&lt;p&gt;transient pages already marked as special and live in CLIO cache until we have IO finished, and merging with buffered pages exist in CLIO from beginning, so we may say - that is broken for now. Per Nikita`s comments - he tried to present a flat file as offset range with clio pages if it&apos;s covered by lock. That allowed to re-stripe it easy just a change mapping a some offset range to new osc object.&lt;/p&gt;

&lt;p&gt;from other view - OST uses a single page cache to store DIO and buffered IO so we have no differences (buffered IO may read DIO data without access to disk). so we have free to use same view on client side, have a single CLIO page cache to store a data before send over network. That way is better in case we will return to idea to create a p2p communication and client may send own data to new client without asking any data from a server. That is very usefull in excacale as extend buffer cache dramatically.&lt;/p&gt;

&lt;p&gt;Because of it, i think we need to return to put transient pages into CLIO cache, but remember that is special pages and need disowned after IO finished and don&apos;t forget we need to stay in waiting until that data committed on OST side and don&apos;t removed a request from sending queue, otherwise we will hit a &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-1573&quot; title=&quot;avoid data corruption for direct io data&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-1573&quot;&gt;&lt;del&gt;LU-1573&lt;/del&gt;&lt;/a&gt;. But until request in sending queue, we a free to read/write in same pages, to reduce a network usage.&lt;/p&gt;



</comment>
                            <comment id="57139" author="jay" created="Fri, 26 Apr 2013 16:27:38 +0000"  >&lt;blockquote&gt;
&lt;p&gt;transient pages already marked as special and live in CLIO cache until we have IO finished, and merging with buffered pages exist in CLIO from beginning, so we may say - that is broken for now.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;It was. But we found a problem in &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-481&quot; title=&quot;sanity test_119d fails (ASSERTION((struct cl_page *)vmpage-&amp;gt;private != slice-&amp;gt;cpl_page) failed)&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-481&quot;&gt;&lt;del&gt;LU-481&lt;/del&gt;&lt;/a&gt; where a transient page can be in cache when trying to add a caching page. We could fix it by awaiting transient pages to go away but I didn&apos;t see any benefits there. Any idea?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Per Nikita`s comments - he tried to present a flat file as offset range with clio pages if it&apos;s covered by lock. That allowed to re-stripe it easy just a change mapping a some offset range to new osc object.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;This turns out too optimistic. Restriping is a case of layout change and right now we have a complete solution for layout change. The safest way to change a file&apos;s layout is to clean up file&apos;s page cache in prior. Don&apos;t bother talking about performance as changing layout is a rare operation &lt;img class=&quot;emoticon&quot; src=&quot;https://jira.whamcloud.com/images/icons/emoticons/wink.png&quot; height=&quot;16&quot; width=&quot;16&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;from other view - OST uses a single page cache to store DIO and buffered IO so we have no differences (buffered IO may read DIO data without access to disk). so we have free to use same view on client side, have a single CLIO page cache to store a data before send over network.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;hmm.. I tend to think DIO shouldn&apos;t pollute cache in anyways - this is why it is called Direct IO. Even on the OST side, it should go directly into disks before replying the clients. Also it;s really dangerous to cache write of DIO on the OSTs.&lt;/p&gt;
</comment>
                            <comment id="57178" author="niu" created="Sat, 27 Apr 2013 03:07:49 +0000"  >&lt;p&gt;Alexey, we&apos;ve seen quite a few problems caused by putting &apos;transient&apos; pages in the radix tree:&lt;/p&gt;

&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Race of buffered io vs. dio described in this ticket &amp;amp; &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-481&quot; title=&quot;sanity test_119d fails (ASSERTION((struct cl_page *)vmpage-&amp;gt;private != slice-&amp;gt;cpl_page) failed)&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-481&quot;&gt;&lt;del&gt;LU-481&lt;/del&gt;&lt;/a&gt;;&lt;/li&gt;
	&lt;li&gt;Unable to support unalinged DIO. Lustre now can only do aligned DIO (buffer address, offset &amp;amp; write count must be page size aligned), the reason we have such unnecessary&lt;br/&gt;
  restriction is that we put user pages (transient pages) in the radix tree. I think unaligned DIO is very important for DIO users and it also very helpful for lockless io;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;All in all, DIO pages are managed by applications, I don&apos;t see any reason to store them in the radix tree. (add them in the tree before io then remove on io completion looks only increase overhead).&lt;/p&gt;

&lt;p&gt;I&apos;ve refreshed the patch of &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-247&quot; title=&quot;Lustre client slow performance on BG/P IONs: unaligned DIRECT_IO&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-247&quot;&gt;&lt;del&gt;LU-247&lt;/del&gt;&lt;/a&gt; (&lt;a href=&quot;http://review.whamcloud.com/#change,980&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/#change,980&lt;/a&gt;), but I&apos;m not sure if it can catch the 2.4 window. I think Jingshan&apos;s idea of not merging &apos;transient&apos; page with cached page into same RPC could be a temporariy solution if the patch can&apos;t fit in with the 2.4 schedule.&lt;/p&gt;</comment>
                            <comment id="57209" author="shadow" created="Sun, 28 Apr 2013 19:22:39 +0000"  >&lt;p&gt;&amp;gt; It was. But we found a problem in &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-481&quot; title=&quot;sanity test_119d fails (ASSERTION((struct cl_page *)vmpage-&amp;gt;private != slice-&amp;gt;cpl_page) failed)&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-481&quot;&gt;&lt;del&gt;LU-481&lt;/del&gt;&lt;/a&gt; where a transient page can be in cache when trying to add a caching page. We could fix it by awaiting transient pages to go away but I didn&apos;t see any benefits there. Any idea?&lt;/p&gt;

&lt;p&gt;Vitaly have fix for &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-481&quot; title=&quot;sanity test_119d fails (ASSERTION((struct cl_page *)vmpage-&amp;gt;private != slice-&amp;gt;cpl_page) failed)&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-481&quot;&gt;&lt;del&gt;LU-481&lt;/del&gt;&lt;/a&gt;, it&apos;s simple. But with that fix we have avoid doubling IO stream in case mixing IO and (as i say before) we may read from a that pages without sending network requests.&lt;/p&gt;

&lt;p&gt;&amp;gt;This turns out too optimistic. Restriping is a case of layout change and right now we have a complete solution for layout change. The safest way to change a file&apos;s layout is to clean up file&apos;s page cache in prior. Don&apos;t bother talking about performance as changing layout is a rare operation &lt;/p&gt;

&lt;p&gt;why? if you change a layout - you just change a translation about offset in file, to data object and offset to object. main question in that case - have a stable point when old layout and new layout have a same contents.&lt;br/&gt;
but that is outside of that ticket.&lt;/p&gt;

&lt;p&gt;&amp;gt; hmm.. I tend to think DIO shouldn&apos;t pollute cache in anyways - this is why it is called Direct IO. Even on the OST side, it should go directly into disks before replying the clients. Also it;s really dangerous to cache write of DIO on the OSTs.&lt;/p&gt;

&lt;p&gt;by POSIX/SUS definition, DIO need bypass only pagecache, but don&apos;t see anything about raid cache, disk drive cache or other cache types...&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;http:&lt;span class=&quot;code-comment&quot;&gt;//pubs.opengroup.org/onlinepubs/9699919799/xrat/V4_xbd_chap03.html
&lt;/span&gt;Direct I/O

Historically, direct I/O refers to the system bypassing intermediate buffering, but may be extended to cover implementation-defined optimizations.
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                            <comment id="57211" author="shadow" created="Sun, 28 Apr 2013 19:37:38 +0000"  >&lt;p&gt;&amp;gt; Race of buffered io vs. dio described in this ticket &amp;amp; &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-481&quot; title=&quot;sanity test_119d fails (ASSERTION((struct cl_page *)vmpage-&amp;gt;private != slice-&amp;gt;cpl_page) failed)&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-481&quot;&gt;&lt;del&gt;LU-481&lt;/del&gt;&lt;/a&gt;;&lt;/p&gt;

&lt;p&gt;That ticket isn&apos;t race. that ticket is result of &quot;fix&quot; in &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-481&quot; title=&quot;sanity test_119d fails (ASSERTION((struct cl_page *)vmpage-&amp;gt;private != slice-&amp;gt;cpl_page) failed)&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-481&quot;&gt;&lt;del&gt;LU-481&lt;/del&gt;&lt;/a&gt;. When you kill finding a buffered page for DIO access you start able to put two CLIO pages in same offset and OSC send two pages in single bulk with same offset.&lt;/p&gt;

&lt;p&gt;&amp;gt; Unable to support unalinged DIO. Lustre now can only do aligned DIO (buffer address, offset &amp;amp; write count must be page size aligned), the reason we have such unnecessary&lt;/p&gt;

&lt;p&gt;That is big question. You need to read full page anyway on OST side and have full page write.&lt;br/&gt;
but unaligned write may be not at DIO case, so you will fix a particle case and not a generic.&lt;br/&gt;
Why it&apos;s don&apos;t fix in different way? like send a first page of buffer as part of LOCK ENQ request?&lt;br/&gt;
that is need to change a wire protocol, but will solve DIO and buffered unaligned write access.&lt;br/&gt;
(CLIO release page should be revised to ability to kill pages only with locks cover it, otherwise we have much more problems with readahead, single page reads inside a large up2date region and other)&lt;/p&gt;

&lt;p&gt;as about lockless IO.. lock less IO more easy implement as direct access to osc_brw api or other ways but have similar to obdecho client.&lt;/p&gt;

&lt;p&gt;&amp;gt; All in all, DIO pages are managed by applications, I don&apos;t see any reason to store them in the radix tree. (add them in the tree before io then remove on io completion looks only increase overhead).&lt;/p&gt;

&lt;p&gt;if you don&apos;t plan to have it&apos;s in radix tree - why it&apos;s should be covered by CLIO page? kill these pages from CLIO that is reduce a complexity of CLIO (we will have a single page type). &lt;/p&gt;

</comment>
                            <comment id="87913" author="aboyko" created="Tue, 1 Jul 2014 19:25:56 +0000"  >&lt;p&gt;&lt;a href=&quot;http://review.whamcloud.com/#/c/10930/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/#/c/10930/&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="98686" author="spitzcor" created="Fri, 7 Nov 2014 19:20:11 +0000"  >&lt;p&gt;&lt;a href=&quot;http://review.whamcloud.com/#/c/10930&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/#/c/10930&lt;/a&gt; landed, so should this bug be closed?&lt;/p&gt;</comment>
                            <comment id="98687" author="pjones" created="Fri, 7 Nov 2014 19:27:05 +0000"  >&lt;p&gt;Yes it should - thanks!&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Related</name>
                                            <outwardlinks description="is related to ">
                                        <issuelink>
            <issuekey id="10666">LU-247</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|hzvohj:</customfieldvalue>

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