<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 02:54:44 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-12681] Data corruption - due incorrect KMS with SEL files</title>
                <link>https://jira.whamcloud.com/browse/LU-12681</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;In testing with SEL port to the 2.12 branch, Grev found an data corruption issue.&lt;br/&gt;
I checked it with last master on client side and issue still present.&lt;br/&gt;
example of it&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;
[4] FAILED comparison of buffer containing 8-&lt;span class=&quot;code-object&quot;&gt;byte&lt;/span&gt; ints:
[4]   File name = /mnt/lustre/SEL/IOR.o
[4]   In transfer 392, 256 errors between buffer indices 212992 and 213247.
[4]   File &lt;span class=&quot;code-object&quot;&gt;byte&lt;/span&gt; offset = 5454028800:
[4]     Expected: 0x000000045d5e330f 00000000001a0008 000000045d5e330f 00000000001a0018
[4]     Actual:   0x0000000000000000 0000000000000000 0000000000000000 0000000000000000
ior ERROR: data check error, aborting execution, errno 0, Success (ior.c:414)
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;current step of investigation, KMS don&apos;t valid in some cases and ll_prepare_partial_page fill a full page with zero, while part of them already send to the OST.&lt;br/&gt;
this quick and dirty fix resolves an issue but KMS problem needs invested.&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;
@@ -598,25 +597,30 @@ &lt;span class=&quot;code-keyword&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt; ll_prepare_partial_page(&lt;span class=&quot;code-keyword&quot;&gt;const&lt;/span&gt; struct lu_env *env, struct cl_io *io,
                GOTO(out, result);
        }

+#&lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; 0
        /*
         * If are writing to a &lt;span class=&quot;code-keyword&quot;&gt;new&lt;/span&gt; page, no need to read old data.
         * The extent locking will have updated the KMS, and &lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; our
         * purposes here we can treat it like i_size.
         */
-       &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (attr-&amp;gt;cat_kms &amp;lt;= offset) {
+       &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (attr-&amp;gt;cat_kms &amp;lt; offset) {
                &lt;span class=&quot;code-object&quot;&gt;char&lt;/span&gt; *kaddr = ll_kmap_atomic(vpg-&amp;gt;vpg_page, KM_USER0);

                memset(kaddr, 0, cl_page_size(obj));
                ll_kunmap_atomic(kaddr, KM_USER0);
+               CDEBUG(D_INFO, &lt;span class=&quot;code-quote&quot;&gt;&quot;kms-skip %llu &amp;lt;&amp;gt; %llu\n&quot;&lt;/span&gt;, attr-&amp;gt;cat_kms, offset);
                GOTO(out, result = 0);
        }
+#endif
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&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;00000080:00200000:1.0:1566400964.212391:0:28647:0:(rw26.c:833:ll_write_end()) pos 3891347456, len 2048, copied 2048
00000080:00000040:1.0:1566400964.407924:0:28647:0:(rw26.c:611:ll_prepare_partial_page()) kms-skip 3643416576 &amp;lt;&amp;gt; 3891347456
00000080:00200000:1.0:1566400964.407925:0:28647:0:(rw26.c:833:ll_write_end()) pos 3891349504, len 2048, copied 2048
and brw sends a full page to the OST
00000008:00000040:1.0:1566400964.653615:0:28647:0:(osc_request.c:1556:osc_brw_prep_request()) buff[1] [3891347456,966656,520]
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;it not a problem with offset on same page, I tries to fix this check against real offset - but sometimes KMS result is very strange like KMS = 3G while offset point is 5G, so it&apos;s something like a more complex problem.&lt;/p&gt;</description>
                <environment></environment>
        <key id="56698">LU-12681</key>
            <summary>Data corruption - due incorrect KMS with SEL files</summary>
                <type id="1" iconUrl="https://jira.whamcloud.com/secure/viewavatar?size=xsmall&amp;avatarId=11303&amp;avatarType=issuetype">Bug</type>
                                            <priority id="1" iconUrl="https://jira.whamcloud.com/images/icons/priorities/blocker.svg">Blocker</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="vitaly_fertman">Vitaly Fertman</assignee>
                                    <reporter username="shadow">Alexey Lyashkov</reporter>
                        <labels>
                            <label>patch</label>
                    </labels>
                <created>Thu, 22 Aug 2019 06:29:39 +0000</created>
                <updated>Mon, 19 Jul 2021 05:32:10 +0000</updated>
                            <resolved>Tue, 1 Oct 2019 03:20:48 +0000</resolved>
                                    <version>Lustre 2.13.0</version>
                                    <fixVersion>Lustre 2.13.0</fixVersion>
                    <fixVersion>Lustre 2.12.7</fixVersion>
                                        <due></due>
                            <votes>0</votes>
                                    <watches>8</watches>
                                                                            <comments>
                            <comment id="253462" author="shadow" created="Fri, 23 Aug 2019 00:05:44 +0000"  >&lt;p&gt;It looks one ldlm lock isn&apos;t canceled with layout change as expected. KMS reset to zero in this event, but new update isn&apos;t coming, or coming with wrong data, s KMS settings limited to new lock range.&lt;/p&gt;</comment>
                            <comment id="253500" author="shadow" created="Fri, 23 Aug 2019 13:37:35 +0000"  >&lt;p&gt;it looks we have several problems.&lt;br/&gt;
1) layout change.&lt;br/&gt;
LOV/OSC stores an KMS info inside of layout, but this info reallocated / zeroed during layout change process.&lt;br/&gt;
ldlm locks detached to ability reconnect and refresh lvb if needs, but lock info is stale and don&apos;t account a local writes under this lock. It looks we need some other place (in lock probably) where osc_touch_page_at() store an info.&lt;br/&gt;
problem affects any PFL files&lt;/p&gt;

&lt;p&gt;2) I have few (a specially two hits). When first thread send a full page to the OST, but second page update isn&apos;t send. It don&apos;t invested currently, work in progress.&lt;/p&gt;

&lt;p&gt;3) DoM lock lost&lt;br/&gt;
DoM lock lost will reset a KMS to zero, it&apos;s nice for DoM only file, but PFL file with DoM component first will destroy KMS on LOV/OSC part. osc uses ldlm_extent_shift for same reason, and it looks better approach.&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;
        &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (lock-&amp;gt;l_ast_data) {
                struct cl_attr attr;
                struct cl_object *obj = lock-&amp;gt;l_ast_data;
                &lt;span class=&quot;code-comment&quot;&gt;/* Losing the lock, set KMS to 0 */&lt;/span&gt;
                cl_object_attr_lock(obj);
                attr.cat_kms = 0;
                cl_object_attr_update(env, obj, &amp;amp;attr, CAT_KMS);
                cl_object_attr_unlock(obj);
        }
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;I don&apos;t have reproducer for this case, but it looks writing by half page at end of file with flush a DoM lock in parallel (LRU as example) should corrupt data easy.&lt;/p&gt;</comment>
                            <comment id="253706" author="shadow" created="Tue, 27 Aug 2019 17:55:43 +0000"  >&lt;p&gt;It looks story of this corruption started with CLIO. It disconnect ldlm locks when CL object destroyed. so ldlm locks with stale lvb info was exist in cache, and can connected to the new cl object via ldlm_lock_match in osc_enqueue_base.&lt;/p&gt;

&lt;p&gt;it looks loi_kms_valid designed to solve it problem but it don&apos;t work correctly due osc_lock_lvb_update which limit kms just for lock policy region which can be smaller than maximal known offset.&lt;/p&gt;

&lt;p&gt;Vitaly and I started with looking to solution to update lvb attributes in lock with local update.&lt;br/&gt;
other approach is moving stripe info from lov object to ldlm resource.&lt;/p&gt;</comment>
                            <comment id="253707" author="pfarrell" created="Tue, 27 Aug 2019 18:02:32 +0000"  >&lt;p&gt;Hmm...&#160; But the LVB info can be stale the moment it is created, right?&#160; Why is it a problem only if it&apos;s been disconnected first...?&lt;/p&gt;</comment>
                            <comment id="253709" author="shadow" created="Tue, 27 Aug 2019 18:16:17 +0000"  >&lt;p&gt;@Patrik, LVB is stale just for PR lock. you are KMS/Size owner for PW lock.&lt;/p&gt;

&lt;p&gt;lock enq store a LVB info in LOV object which updated via osc_page_touch_at / brw_interpret.&lt;/p&gt;</comment>
                            <comment id="253710" author="pfarrell" created="Tue, 27 Aug 2019 18:25:41 +0000"  >&lt;p&gt;Hmm, but a PR lock can protect size within a region, since you need a PW lock (which conflicts) to update size.&#160; And a PW lock only protects size in the area covered by the lock...&lt;/p&gt;</comment>
                            <comment id="253711" author="shadow" created="Tue, 27 Aug 2019 18:35:50 +0000"  >&lt;p&gt;just in case you lock protects an EOF, in other cases you size is stale, but KMS is actual for PW, as KMS is actual for the region covered by any lock.&lt;/p&gt;</comment>
                            <comment id="254472" author="pfarrell" created="Tue, 10 Sep 2019 17:41:06 +0000"  >&lt;p&gt;Do you guys have a reproducer on master for this?&#160; I&apos;d be curious to maybe take a closer look&lt;/p&gt;</comment>
                            <comment id="254758" author="gerrit" created="Mon, 16 Sep 2019 21:10:04 +0000"  >&lt;p&gt;Vitaly Fertman (c17818@cray.com) uploaded a new patch: &lt;a href=&quot;https://review.whamcloud.com/36198&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://review.whamcloud.com/36198&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-12681&quot; title=&quot;Data corruption - due incorrect KMS with SEL files&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-12681&quot;&gt;&lt;del&gt;LU-12681&lt;/del&gt;&lt;/a&gt; mdc: kms_ignore cleanup&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: 1&lt;br/&gt;
Commit: 3a90d0943a096e63ff06e4f13eb7f1a64face7fb&lt;/p&gt;</comment>
                            <comment id="254759" author="gerrit" created="Mon, 16 Sep 2019 21:10:05 +0000"  >&lt;p&gt;Vitaly Fertman (c17818@cray.com) uploaded a new patch: &lt;a href=&quot;https://review.whamcloud.com/36199&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://review.whamcloud.com/36199&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-12681&quot; title=&quot;Data corruption - due incorrect KMS with SEL files&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-12681&quot;&gt;&lt;del&gt;LU-12681&lt;/del&gt;&lt;/a&gt; osc: wrong cache of LVB attrs&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: 1&lt;br/&gt;
Commit: 52c2dc7777924b47572ef70e04e87385243c836a&lt;/p&gt;</comment>
                            <comment id="254760" author="gerrit" created="Mon, 16 Sep 2019 21:10:06 +0000"  >&lt;p&gt;Vitaly Fertman (c17818@cray.com) uploaded a new patch: &lt;a href=&quot;https://review.whamcloud.com/36200&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://review.whamcloud.com/36200&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-12681&quot; title=&quot;Data corruption - due incorrect KMS with SEL files&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-12681&quot;&gt;&lt;del&gt;LU-12681&lt;/del&gt;&lt;/a&gt; osc: wrong cache of LVB attrs, part2&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: 1&lt;br/&gt;
Commit: 1ddd47605588677902d2ae04ec187f9ca90d2d83&lt;/p&gt;</comment>
                            <comment id="254897" author="vitaly_fertman" created="Tue, 17 Sep 2019 15:47:24 +0000"  >&lt;p&gt;The problem is regularly reproduced with IOR running with transfer size not aligned by page size and also being run on a SEL layout. e.g.:&lt;/p&gt;

&lt;p&gt;1st problem offset:&lt;br/&gt;
redpill-client01: &lt;span class=&quot;error&quot;&gt;&amp;#91;27&amp;#93;&lt;/span&gt; At transfer buffer #32, index #212992 (file byte offset 2666450944):&lt;/p&gt;

&lt;p&gt;the happened IO is:&lt;br/&gt;
redpill-client01: api = POSIX&lt;br/&gt;
redpill-client01: test filename = /mnt/fs1//ha.sh-94333/redpill-client01-ior/f.ior&lt;br/&gt;
redpill-client01: access = single-shared-file&lt;br/&gt;
redpill-client01: pattern = strided (33 segments)&lt;br/&gt;
redpill-client01: ordering in a file = sequential offsets&lt;br/&gt;
redpill-client01: ordering inter file=constant task offsets = 1&lt;br/&gt;
redpill-client01: clients = 48 (8 per node)&lt;br/&gt;
redpill-client01: repetitions = 2&lt;br/&gt;
redpill-client01: xfersize = 1.63 MiB&lt;br/&gt;
redpill-client01: blocksize = 27.66 MiB&lt;br/&gt;
redpill-client01: aggregate filesize = 42.78 GiB&lt;br/&gt;
redpill-client01: &lt;br/&gt;
redpill-client01: Using Time Stamp 1565463864 (0x5d4f1538) for Data Signature&lt;br/&gt;
redpill-client01: Commencing write performance test.&lt;br/&gt;
redpill-client01: Sat Aug 10 19:04:24 2019&lt;br/&gt;
redpill-client01: &lt;br/&gt;
redpill-client01: access bw(MiB/s) block(KiB) xfer(KiB) open(s) wr/rd(s) close(s) total(s) iter&lt;br/&gt;
redpill-client01: ------ --------- ---------- --------- -------- -------- -------- -------- ----&lt;br/&gt;
redpill-client01: write 171.50 28322 1666.00 0.015037 255.36 0.116421 255.46 0 XXCEL&lt;/p&gt;

&lt;p&gt;i.e. each client writes 33 * 28322K, each 28322K are written by 1666K&lt;/p&gt;

&lt;p&gt;the file by itself:&lt;br/&gt;
lfs getstripe -y /mnt/fs1//ha.sh-94333/redpill-client01-ior/f.ior&lt;br/&gt;
lcm_layout_gen: 64&lt;br/&gt;
lcm_mirror_count: 1&lt;br/&gt;
lcm_entry_count: 3&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;component0:&lt;br/&gt;
lcme_id: 1&lt;br/&gt;
lcme_mirror_id: 0&lt;br/&gt;
lcme_flags: init&lt;br/&gt;
lcme_extent.e_start: 0&lt;br/&gt;
lcme_extent.e_end: 67108864&lt;br/&gt;
sub_layout:&lt;br/&gt;
lmm_stripe_count: 1&lt;br/&gt;
lmm_stripe_size: 1048576&lt;br/&gt;
lmm_pattern: raid0&lt;br/&gt;
lmm_layout_gen: 0&lt;br/&gt;
lmm_stripe_offset: 0&lt;br/&gt;
lmm_objects:&lt;br/&gt;
l_ost_idx: 0&lt;br/&gt;
l_fid: 0x100000000:0x23a551c4:0x0&lt;/li&gt;
	&lt;li&gt;component1:&lt;br/&gt;
lcme_id: 3&lt;br/&gt;
lcme_mirror_id: 0&lt;br/&gt;
lcme_flags: init&lt;br/&gt;
lcme_extent.e_start: 67108864&lt;br/&gt;
lcme_extent.e_end: 45969571840&lt;br/&gt;
sub_layout:&lt;br/&gt;
lmm_stripe_count: 1&lt;br/&gt;
lmm_stripe_size: 1048576&lt;br/&gt;
lmm_pattern: raid0&lt;br/&gt;
lmm_layout_gen: 0&lt;br/&gt;
lmm_stripe_offset: 6&lt;br/&gt;
lmm_objects:&lt;br/&gt;
l_ost_idx: 6&lt;br/&gt;
l_fid: 0x100060000:0x2368b93b:0x0&lt;/li&gt;
	&lt;li&gt;component2:&lt;br/&gt;
lcme_id: 4&lt;br/&gt;
lcme_mirror_id: 0&lt;br/&gt;
lcme_flags: extension&lt;br/&gt;
lcme_extent.e_start: 45969571840&lt;br/&gt;
lcme_extent.e_end: EOF&lt;br/&gt;
sub_layout:&lt;br/&gt;
lmm_stripe_count: 0&lt;br/&gt;
lmm_extension_size: 134217728&lt;br/&gt;
lmm_pattern: raid0&lt;br/&gt;
lmm_layout_gen: 0&lt;br/&gt;
lmm_stripe_offset: -1&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;the problem is that first 2k of the block are zeros, the next 2k in the block is a start of the next transfersize (2666450944+2k / 1666k = 1563) however this is not a segment border, thus written by the same client.&lt;br/&gt;
it means a half of a page at the end of one transfersize chunk of data is lost when followed by another transfersize chunk of data from the same client.&lt;/p&gt;

&lt;p&gt;SEL is involved just because it triggers layout changes regularly, however the problem originally belongs to the layout lock handling  in CLIO - osc objects do not survive after layout lock change and the cached lvb attributes are lost, with the info about the modifications have been made; new osc objects are re-populated by the lvb cache from the outdated lock&apos;s lvb. a later preparation of a partial page checks KMS which is low enough to not read the page in advance - the left part is just left 0-ed.&lt;/p&gt;

&lt;p&gt;the patch descriptions have more detailed explanations of the particular scenarios being fixed.&lt;/p&gt;</comment>
                            <comment id="255026" author="sihara" created="Thu, 19 Sep 2019 04:20:18 +0000"  >&lt;p&gt;I got a similar problem on unaligned single shared file workload with IOR. &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-12786&quot; title=&quot;io hard read fails due to data verification fails&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-12786&quot;&gt;&lt;del&gt;LU-12786&lt;/del&gt;&lt;/a&gt;&lt;br/&gt;
I&apos;m not using SEL, but is &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-12681&quot; title=&quot;Data corruption - due incorrect KMS with SEL files&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-12681&quot;&gt;&lt;del&gt;LU-12681&lt;/del&gt;&lt;/a&gt; general problem or specific in SEL?&lt;/p&gt;</comment>
                            <comment id="255027" author="shadow" created="Thu, 19 Sep 2019 04:25:59 +0000"  >&lt;p&gt;It&apos;s very generic problem, primary case is PFL or SEL, where layout changed sometimes.&lt;br/&gt;
But in some cases this error can hit on any client with CLIO, so lustre 2.0+ affected.&lt;br/&gt;
This needs to flush inode from inode cache, but ldlm locks need to stay in cache, likely pined with IO.&lt;br/&gt;
I remember similar problems in long time ago in past, when inode info was moved from lock to the ldlm resource. &lt;/p&gt;</comment>
                            <comment id="255037" author="sihara" created="Thu, 19 Sep 2019 13:28:44 +0000"  >&lt;p&gt;OK, so patch for &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-12681&quot; title=&quot;Data corruption - due incorrect KMS with SEL files&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-12681&quot;&gt;&lt;del&gt;LU-12681&lt;/del&gt;&lt;/a&gt; would be worth to try for my workload, then? &lt;/p&gt;</comment>
                            <comment id="255043" author="pfarrell" created="Thu, 19 Sep 2019 14:43:07 +0000"  >&lt;p&gt;Ihara,&lt;/p&gt;

&lt;p&gt;I don&apos;t think so - This bug results mostly in zeroes in &lt;b&gt;partial&lt;/b&gt; page reads.&#160; In most scenarios, this is transient corruption that stays on the client, and doesn&apos;t go to disk.&#160; (It can go to disk, but only under special scenarios.)&#160; You have much larger regions of bad data (most of a write in all cases I saw), the data is bad on disk, and the data is &lt;b&gt;not&lt;/b&gt; zeroes, instead it&apos;s mostly random garbage.&#160; (It is in one case, but it&apos;s possible for unwritten regions of disk to contain zeroes rather than garbage.)&lt;/p&gt;</comment>
                            <comment id="255050" author="shadow" created="Thu, 19 Sep 2019 17:19:10 +0000"  >&lt;p&gt;Partick,&lt;/p&gt;

&lt;p&gt;you are wrong. This bug on partial page &lt;b&gt;write&lt;/b&gt;. POSIX requests a zero page before modify.&lt;br/&gt;
and lustre does it in the &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;
&lt;span class=&quot;code-keyword&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt; ll_prepare_partial_page(&lt;span class=&quot;code-keyword&quot;&gt;const&lt;/span&gt; struct lu_env *env, struct cl_io *io,
                                   struct cl_page *pg, struct file *file)
{
        /*
         * If are writing to a &lt;span class=&quot;code-keyword&quot;&gt;new&lt;/span&gt; page, no need to read old data.
         * The extent locking will have updated the KMS, and &lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; our
         * purposes here we can treat it like i_size.
         */
        &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (attr-&amp;gt;cat_kms &amp;lt;= offset) {
                &lt;span class=&quot;code-object&quot;&gt;char&lt;/span&gt; *kaddr = ll_kmap_atomic(vpg-&amp;gt;vpg_page, KM_USER0);

                memset(kaddr, 0, cl_page_size(obj));
                ll_kunmap_atomic(kaddr, KM_USER0);
                GOTO(out, result = 0);
        }
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;it caused a zeros will send to OST and to the disk.&lt;/p&gt;</comment>
                            <comment id="255054" author="pfarrell" created="Thu, 19 Sep 2019 17:31:10 +0000"  >&lt;p&gt;Sorry, I meant the &lt;b&gt;read&lt;/b&gt; required to do a partial page write.&#160; I know what you&apos;re talking about.&lt;/p&gt;

&lt;p&gt;The read is of the full page, but then the write overwrites part of it.&#160; So that&apos;s why I said a &quot;partial page read&quot;, but that is incorrect, as you pointed out.&lt;/p&gt;

&lt;p&gt;My point about the corruption being limited in this case to just zeroes, not garbage data, still stands.&#160; That&apos;s why &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-12786&quot; title=&quot;io hard read fails due to data verification fails&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-12786&quot;&gt;&lt;del&gt;LU-12786&lt;/del&gt;&lt;/a&gt; doesn&apos;t match here.&lt;/p&gt;</comment>
                            <comment id="255650" author="gerrit" created="Mon, 30 Sep 2019 23:11:52 +0000"  >&lt;p&gt;Oleg Drokin (green@whamcloud.com) merged in patch &lt;a href=&quot;https://review.whamcloud.com/36199/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://review.whamcloud.com/36199/&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-12681&quot; title=&quot;Data corruption - due incorrect KMS with SEL files&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-12681&quot;&gt;&lt;del&gt;LU-12681&lt;/del&gt;&lt;/a&gt; osc: wrong cache of LVB attrs&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: &lt;br/&gt;
Commit: 8ac020df4592fc6e85edd75d54cb3795a4e50f8e&lt;/p&gt;</comment>
                            <comment id="255651" author="gerrit" created="Mon, 30 Sep 2019 23:11:58 +0000"  >&lt;p&gt;Oleg Drokin (green@whamcloud.com) merged in patch &lt;a href=&quot;https://review.whamcloud.com/36200/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://review.whamcloud.com/36200/&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-12681&quot; title=&quot;Data corruption - due incorrect KMS with SEL files&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-12681&quot;&gt;&lt;del&gt;LU-12681&lt;/del&gt;&lt;/a&gt; osc: wrong cache of LVB attrs, part2&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: &lt;br/&gt;
Commit: 40319db5bc649adaf3dad066e2c1bb49f7f1c04a&lt;/p&gt;</comment>
                            <comment id="255695" author="pjones" created="Tue, 1 Oct 2019 03:20:48 +0000"  >&lt;p&gt;Landed for 2.13&lt;/p&gt;</comment>
                            <comment id="285860" author="gerrit" created="Tue, 24 Nov 2020 08:37:56 +0000"  >&lt;p&gt;Mike Pershin (mpershin@whamcloud.com) uploaded a new patch: &lt;a href=&quot;https://review.whamcloud.com/40739&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://review.whamcloud.com/40739&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-12681&quot; title=&quot;Data corruption - due incorrect KMS with SEL files&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-12681&quot;&gt;&lt;del&gt;LU-12681&lt;/del&gt;&lt;/a&gt; osc: wrong cache of LVB attrs&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: b2_12&lt;br/&gt;
Current Patch Set: 1&lt;br/&gt;
Commit: 5aa6767d63368e630531669e51b4c8e11e1788b8&lt;/p&gt;</comment>
                            <comment id="285861" author="gerrit" created="Tue, 24 Nov 2020 08:37:56 +0000"  >&lt;p&gt;Mike Pershin (mpershin@whamcloud.com) uploaded a new patch: &lt;a href=&quot;https://review.whamcloud.com/40740&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://review.whamcloud.com/40740&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-12681&quot; title=&quot;Data corruption - due incorrect KMS with SEL files&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-12681&quot;&gt;&lt;del&gt;LU-12681&lt;/del&gt;&lt;/a&gt; osc: wrong cache of LVB attrs, part2&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: b2_12&lt;br/&gt;
Current Patch Set: 1&lt;br/&gt;
Commit: e9580cc6f49d185e080ff4139176aa9369a4e3ca&lt;/p&gt;</comment>
                            <comment id="293899" author="gerrit" created="Thu, 4 Mar 2021 08:34:22 +0000"  >&lt;p&gt;Oleg Drokin (green@whamcloud.com) merged in patch &lt;a href=&quot;https://review.whamcloud.com/40739/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://review.whamcloud.com/40739/&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-12681&quot; title=&quot;Data corruption - due incorrect KMS with SEL files&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-12681&quot;&gt;&lt;del&gt;LU-12681&lt;/del&gt;&lt;/a&gt; osc: wrong cache of LVB attrs&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: b2_12&lt;br/&gt;
Current Patch Set: &lt;br/&gt;
Commit: d9329ccb757f06f0ff9df2a2c1b627bb29015c81&lt;/p&gt;</comment>
                            <comment id="295279" author="gerrit" created="Wed, 17 Mar 2021 23:21:15 +0000"  >&lt;p&gt;Oleg Drokin (green@whamcloud.com) merged in patch &lt;a href=&quot;https://review.whamcloud.com/40740/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://review.whamcloud.com/40740/&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-12681&quot; title=&quot;Data corruption - due incorrect KMS with SEL files&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-12681&quot;&gt;&lt;del&gt;LU-12681&lt;/del&gt;&lt;/a&gt; osc: wrong cache of LVB attrs, part2&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: b2_12&lt;br/&gt;
Current Patch Set: &lt;br/&gt;
Commit: 8c74fe2c6c3f8472ddf39f6ccc5e9c3744de344d&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Related</name>
                                            <outwardlinks description="is related to ">
                                        <issuelink>
            <issuekey id="48585">LU-10070</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="59478">LU-13645</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="56947">LU-12786</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|i00lg7:</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>