<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 01:26:56 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-2640] deactivate OSD_EXEC_OP() operation accounting if operation is being undone</title>
                <link>https://jira.whamcloud.com/browse/LU-2640</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;In &lt;a href=&quot;http://review.whamcloud.com/5046&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/5046&lt;/a&gt; there was a change to &lt;tt&gt;OSD_EXEC_OP()&lt;/tt&gt; to address problems in MDD operations that fail part-way through, where the undo of earlier operations causes internal osd-ldiskfs declare/execute accounting to fail.  For example, in &lt;tt&gt;mdd_create()::cleanup&lt;/tt&gt;, the failed create calls &lt;tt&gt;__mdd_index_delete(), mdo_ref_del(), mdo_destroy()&lt;/tt&gt; in order to clean up the newly created object.&lt;/p&gt;

&lt;p&gt;One proposal is to have some kind of OSD API call/flag/method to mark the transaction handle as being used for rollback, and to disable the ot_declare_op LASSERT() checking in OSD_EXEC_OP() for this case.&lt;/p&gt;</description>
                <environment></environment>
        <key id="17219">LU-2640</key>
            <summary>deactivate OSD_EXEC_OP() operation accounting if operation is being undone</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="yong.fan">nasf</assignee>
                                    <reporter username="adilger">Andreas Dilger</reporter>
                        <labels>
                            <label>MB</label>
                    </labels>
                <created>Fri, 18 Jan 2013 00:14:24 +0000</created>
                <updated>Wed, 13 Sep 2017 06:34:33 +0000</updated>
                            <resolved>Mon, 18 Mar 2013 23:18:11 +0000</resolved>
                                    <version>Lustre 2.4.0</version>
                                    <fixVersion>Lustre 2.4.0</fixVersion>
                                        <due></due>
                            <votes>0</votes>
                                    <watches>6</watches>
                                                                            <comments>
                            <comment id="50764" author="adilger" created="Fri, 18 Jan 2013 00:16:17 +0000"  >&lt;p&gt;To clarify, this bug is to track this fix separately from the LFSCK 1.5 project, instead of submitting the fix merged into that patch series.&lt;/p&gt;</comment>
                            <comment id="50887" author="bzzz" created="Mon, 21 Jan 2013 09:55:00 +0000"  >&lt;p&gt;given all this information is required only from create to stop (and not longer), we can reserve quite amount of memory in osd_thread_info to track per-inode declaration. this way we could avoid the need in additional method.&lt;/p&gt;</comment>
                            <comment id="50888" author="yong.fan" created="Mon, 21 Jan 2013 10:05:40 +0000"  >&lt;p&gt;Currently, I think that changing OSD APIs to enhance transaction debug for tracing modification rollback is some overreaction: not only the declare APIs, but also some exec APIs, otherwise, the OSD cannot distinguish whether a modification, such as destroy, belongs to a normal unlink or create rollback.&lt;/p&gt;

&lt;p&gt;So I prefer to simplify the requirement and processing as that:&lt;/p&gt;

&lt;p&gt;1) When declare for the modification, the transaction trace mechanism will record both the transaction itself and its possible rollback. For example, when declare for ref_add, both &quot;osd_thandle::ot_declare_ops&lt;span class=&quot;error&quot;&gt;&amp;#91;OSD_OT_REF_ADD&amp;#93;&lt;/span&gt;&quot; and &quot;osd_thandle::ot_declare_ops_rb&lt;span class=&quot;error&quot;&gt;&amp;#91;OSD_OT_REF_ADD&amp;#93;&lt;/span&gt;&quot; will be increased.&lt;/p&gt;

&lt;p&gt;2) The OSD needs not to strictly distinguish whether a modification belongs to a normal transaction or a rollback. For example, when ref_del is called, it will try to check &quot;osd_thandle::ot_declare_ops&lt;span class=&quot;error&quot;&gt;&amp;#91;OSD_OT_REF_DEL&amp;#93;&lt;/span&gt;&quot; firstly, if failed to decrease, then it quite possible belongs to former ref_add rollback, so the &quot;osd_thandle::ot_declare_ops_rb&lt;span class=&quot;error&quot;&gt;&amp;#91;OSD_OT_REF_ADD&amp;#93;&lt;/span&gt;&quot; will be decreased.&lt;/p&gt;

&lt;p&gt;Although it is not perfect, it is enough to resolve the issues I met during LFSCK 1.5 test. I prefer to use this patch (&lt;a href=&quot;http://review.whamcloud.com/#change,5138&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/#change,5138&lt;/a&gt;) as a solution, at least a temporary solution for &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-2640&quot; title=&quot;deactivate OSD_EXEC_OP() operation accounting if operation is being undone&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-2640&quot;&gt;&lt;del&gt;LU-2640&lt;/del&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;It does not belong to the LFSCK, and not depends on the LFSCK. But some sanity tests may fail if without this issue fixed, it should be landed to master in priority.&lt;/p&gt;</comment>
                            <comment id="50890" author="bzzz" created="Mon, 21 Jan 2013 10:09:48 +0000"  >&lt;p&gt;well, I think Andreas is expecting a bit more than just fixing this assertion (otherwise we could just disable the whole thing which is just silly sanity check at the moment). instead we should think how we can improve credits accounting as well. I think this can be done on per-inode/op basis.&lt;/p&gt;</comment>
                            <comment id="50891" author="yong.fan" created="Mon, 21 Jan 2013 10:39:51 +0000"  >&lt;p&gt;Well, it is different from transaction debug disable, it still has original functionality, additional to allow rollback cases. About more accurate credits accounting, we need consider more, but it seems not urgent requirement.&lt;/p&gt;

&lt;p&gt;To not block sanity tests, can we consider some temporary and simple solution?&lt;/p&gt;</comment>
                            <comment id="50892" author="bzzz" created="Mon, 21 Jan 2013 10:47:58 +0000"  >&lt;p&gt;not sure I follow. we do pass sanity tests, there might be some cases, but they do not block testing. &lt;/p&gt;</comment>
                            <comment id="50893" author="yong.fan" created="Mon, 21 Jan 2013 10:49:36 +0000"  >&lt;p&gt;We passed sanity test, just because we did not correctly rollback something. Please check mdd_dir.c changes in the patch &lt;a href=&quot;http://review.whamcloud.com/#change,5138&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/#change,5138&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="50895" author="bzzz" created="Mon, 21 Jan 2013 10:55:28 +0000"  >&lt;p&gt;this doesn&apos;t sound like a blocker for testing, because 5138 itself can be postponed. for release, sure.&lt;/p&gt;</comment>
                            <comment id="50896" author="yong.fan" created="Mon, 21 Jan 2013 11:02:53 +0000"  >&lt;p&gt;The issues fixed in mdd_dir.c will affect LFSCK behavior. If we do not fix it, then there may be some dangling reference name entries in the system.&lt;/p&gt;</comment>
                            <comment id="50898" author="bzzz" created="Mon, 21 Jan 2013 11:09:16 +0000"  >&lt;p&gt;well, i didn&apos;t say &quot;do not fix it&quot;. but i think there is no point to introduce some temporary solution because for a while it&apos;s enough to just disable this sanity check.&lt;br/&gt;
and AFAIU, this &quot;dangling reference&quot; should not block the testing.&lt;/p&gt;</comment>
                            <comment id="50899" author="yong.fan" created="Mon, 21 Jan 2013 11:20:17 +0000"  >&lt;p&gt;The &quot;dangling reference&quot; will not affect sanity test, but it will affect the LFSCK behavior.&lt;br/&gt;
I prefer to well define the policy for name entry insert/delete, and the target object nlink add/del. The current implementation is confused and contains bugs.&lt;/p&gt;</comment>
                            <comment id="50900" author="bzzz" created="Mon, 21 Jan 2013 11:27:12 +0000"  >&lt;p&gt;not sure what &quot;policy&quot; means here. the exact order should not matter much. if current implementation is missing some undo, then it&apos;s to be fixed, of course.&lt;br/&gt;
as for LFSCK, it should be able to cope with this as there are already filesystems using this code, so having dangling reference in theory.&lt;/p&gt;</comment>
                            <comment id="50901" author="yong.fan" created="Mon, 21 Jan 2013 11:33:34 +0000"  >&lt;p&gt;Yes, in theory, for existing system, the dandling reference name entry may exist. But we should try to avoid that in new system.&lt;/p&gt;

&lt;p&gt;As my understand, we prefer to space lost rather than dangling reference, which has been explained in mdd_create() comment. I think we should follow the similar policy for link/unlink cases.&lt;/p&gt;</comment>
                            <comment id="50902" author="bzzz" created="Mon, 21 Jan 2013 11:41:58 +0000"  >&lt;p&gt;we sort of having transactions to avoid this.. if some change can&apos;t be undone, then i&apos;d suppose all the processing should be aborted (read-only and failover in case of ldiskfs). until the change is committed with -&amp;gt;trans_stop() on-disk state is safe (or not worse than before -&amp;gt;trans_start())&lt;/p&gt;
</comment>
                            <comment id="50955" author="yong.fan" created="Tue, 22 Jan 2013 00:10:40 +0000"  >&lt;p&gt;I have updated the patch (&lt;a href=&quot;http://review.whamcloud.com/#change,5138&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/#change,5138&lt;/a&gt;) with more consideration.&lt;/p&gt;</comment>
                            <comment id="51075" author="aboyko" created="Thu, 24 Jan 2013 00:59:58 +0000"  >&lt;p&gt;Hi Nasf, I have checked the latest patch and got fail, pls look at &lt;a href=&quot;http://jira.whamcloud.com/browse/LU-2668?focusedCommentId=51027&amp;amp;page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-51027&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;http://jira.whamcloud.com/browse/LU-2668?focusedCommentId=51027&amp;amp;page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-51027&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="51076" author="yong.fan" created="Thu, 24 Jan 2013 01:51:58 +0000"  >&lt;p&gt;Miss to call &quot;OSD_EXEC_OP(th, insert)&quot; in &quot;osd_index_ea_insert()&quot;. It exists in master for a long time. Thanks for trigger it!&lt;/p&gt;

&lt;p&gt;I will update my patches to fix it.&lt;/p&gt;</comment>
                            <comment id="51078" author="adilger" created="Thu, 24 Jan 2013 01:55:59 +0000"  >&lt;p&gt;Alexander, what are you using for testing this problem? It looks like the MDT is running out of space and fails in the error cleanup path.&lt;/p&gt;</comment>
                            <comment id="51081" author="shadow" created="Thu, 24 Jan 2013 02:14:58 +0000"  >&lt;p&gt;Andreas,&lt;/p&gt;

&lt;p&gt;Alexander worked on backport a directory size limits patch from upstream to lustre to avoid problems from &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-2479&quot; title=&quot;sanity.sh test_129: max dir size limit work incorrectly.&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-2479&quot;&gt;&lt;del&gt;LU-2479&lt;/del&gt;&lt;/a&gt;.&lt;br/&gt;
quickly - we have created large directory, remove some entries, set limit, but not able to create something because that directory over limits. patch mainline, just forbid to extent a directory instead of creating anything.&lt;/p&gt;</comment>
                            <comment id="51090" author="aboyko" created="Thu, 24 Jan 2013 07:35:23 +0000"  >&lt;p&gt;I try patchset 3&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;00000004:00000001:1.0:1359025663.382680:0:14733:0:(mdd_dir.c:523:__mdd_index_insert_only()) Process leaving (rc=18446744073709551588 : -28 : ffffffffffffffe4)
00000004:00000001:1.0:1359025663.382681:0:14733:0:(mdd_dir.c:540:__mdd_index_insert()) Process leaving (rc=18446744073709551588 : -28 : ffffffffffffffe4)
00000004:00000001:1.0:1359025663.382682:0:14733:0:(mdd_dir.c:1794:mdd_create()) Process leaving via cleanup (rc=18446744073709551588 : -28 : 0xffffffffffffffe4)  
00000004:00040000:1.0:1359025663.382684:0:14733:0:(osd_internal.h:412:osd_trans_exec_op()) ASSERTION( oh-&amp;gt;ot_declare_ops_rb[rb] &amp;gt; 0 ) failed: 5
00000004:00040000:1.0:1359025663.382799:0:14733:0:(osd_internal.h:412:osd_trans_exec_op()) LBUG

Pid: 14733, comm: mdt01_001

Call Trace:
 [&amp;lt;ffffffffa073e905&amp;gt;] libcfs_debug_dumpstack+0x55/0x80 [libcfs]
 [&amp;lt;ffffffffa073ef07&amp;gt;] lbug_with_loc+0x47/0xb0 [libcfs]
 [&amp;lt;ffffffffa0e7d6e0&amp;gt;] osd_it_ea_get+0x0/0x140 [osd_ldiskfs]
 [&amp;lt;ffffffffa0e86c75&amp;gt;] osd_object_ref_del+0x135/0x210 [osd_ldiskfs]
 [&amp;lt;ffffffffa0bb132b&amp;gt;] lod_ref_del+0x3b/0xd0 [lod]
 [&amp;lt;ffffffffa0dbf5fd&amp;gt;] mdo_ref_del+0xad/0xb0 [mdd]
 [&amp;lt;ffffffffa0dc5ce2&amp;gt;] mdd_create+0xd02/0x1500 [mdd]
 [&amp;lt;ffffffffa074f371&amp;gt;] ? libcfs_debug_msg+0x41/0x50 [libcfs]
 [&amp;lt;ffffffffa0f27321&amp;gt;] mdt_reint_open+0x1191/0x1900 [mdt]
 [&amp;lt;ffffffffa074f371&amp;gt;] ? libcfs_debug_msg+0x41/0x50 [libcfs]
 [&amp;lt;ffffffffa0f121a1&amp;gt;] mdt_reint_rec+0x41/0xe0 [mdt]
 [&amp;lt;ffffffffa0f0b843&amp;gt;] mdt_reint_internal+0x4e3/0x7d0 [mdt]
 [&amp;lt;ffffffffa0f0bdfd&amp;gt;] mdt_intent_reint+0x1ed/0x4f0 [mdt]
 [&amp;lt;ffffffffa0f074fe&amp;gt;] mdt_intent_policy+0x3ae/0x750 [mdt]
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;mdd_declare_create() has one declare_ref_add, but mdd_create() cleanup has two ref_del().&lt;/p&gt;</comment>
                            <comment id="51091" author="bzzz" created="Thu, 24 Jan 2013 07:40:06 +0000"  >&lt;p&gt;&amp;gt; mdd_declare_create() has one declare_ref_add, but mdd_create() cleanup has two ref_del().&lt;/p&gt;

&lt;p&gt;right, because mdd_create() does not declare initial nlink set to 1 by object creation&lt;br/&gt;
(we discussed this problem few times in the past..)&lt;br/&gt;
adding one more declare_ref_add() in mdd_create() w/o actual ref_add() would be confusing, imho.&lt;/p&gt;</comment>
                            <comment id="51101" author="yong.fan" created="Thu, 24 Jan 2013 09:35:56 +0000"  >&lt;p&gt;Seems we do not need two ref_del() when rollback for mkdir, the osd_object_destroy() can handle the last nlink for dir object.&lt;/p&gt;

&lt;p&gt;Alex, how do you think?&lt;/p&gt;</comment>
                            <comment id="51102" author="bzzz" created="Thu, 24 Jan 2013 09:43:54 +0000"  >&lt;p&gt;well, this is not quite correct. osd_object_destroy() does its own hack because of limits on nlink in ldiskfs. we should not bring this assumption into the API.&lt;/p&gt;</comment>
                            <comment id="51104" author="yong.fan" created="Thu, 24 Jan 2013 10:06:12 +0000"  >&lt;p&gt;Yes, it&apos;s hack. Then what do you prefer to resolve it?&lt;/p&gt;

&lt;p&gt;We can hack in OSD, and let osd_thandle::ot_declare_ops_rb&lt;span class=&quot;error&quot;&gt;&amp;#91;OSD_OT_REF_ADD&amp;#93;&lt;/span&gt; increase when osd_trans_exec_op(OSD_OT_CREATE) called, can you accept it?&lt;/p&gt;</comment>
                            <comment id="51106" author="bzzz" created="Thu, 24 Jan 2013 10:28:30 +0000"  >&lt;p&gt;of course, it&apos;s better. though I was actually hoping for a breakthrough solution to improve checks and credits calculation.&lt;/p&gt;</comment>
                            <comment id="51268" author="yong.fan" created="Fri, 25 Jan 2013 19:45:25 +0000"  >&lt;p&gt;Alexander, would you please to try this one? Thanks.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://review.whamcloud.com/#change,5138,set4&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/#change,5138,set4&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="51305" author="aboyko" created="Mon, 28 Jan 2013 04:10:13 +0000"  >&lt;p&gt;With patch set 4 test looks fine.&lt;/p&gt;</comment>
                            <comment id="51501" author="adilger" created="Wed, 30 Jan 2013 20:42:14 +0000"  >&lt;p&gt;Alex, the 5138 patch was landed as-is to allow later LFSCK patch landings to move forward.&lt;/p&gt;

&lt;p&gt;Oleg wants a better comment explaining what the transaction declaration accounting is doing, so that it can be more easily understood by others.&lt;/p&gt;

&lt;p&gt;Other open questions that need to be discussed:&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;should we implement an OSD API to notify the transaction that there is a rollback in progress?&lt;/li&gt;
	&lt;li&gt;having more accurate transaction accounting is useful for both reducing the transaction credits, and improving the debugging.  We do some limited aggregation of declarations for quotas, so that the common case of multiple updates for the same UID/GID do not need too many credits.  We could change this to be a more generic mechanism (e.g. identified by FID?) that tracks a few different kinds of updates (e.g. setattr/dirty object, write/append/alloc/punch/truncate, insert/delete item).&lt;/li&gt;
&lt;/ul&gt;
</comment>
                            <comment id="51506" author="bzzz" created="Wed, 30 Jan 2013 23:18:53 +0000"  >&lt;p&gt;if I remember DMU code correctly, it&apos;s fine to declare some range to be modified and then modify it few times - we should be passing internal sanity checks.&lt;br/&gt;
the same applies for ldiskfs for sure.&lt;br/&gt;
given so I think that we don&apos;t actually need to declare &quot;rollback&quot; updates as they are working on the same range/hash always.&lt;br/&gt;
notice we probably don&apos;t need this mechanism with DMU as it does this internally (when debugging is enabled).&lt;/p&gt;</comment>
                            <comment id="52569" author="yong.fan" created="Sun, 17 Feb 2013 08:45:39 +0000"  >&lt;p&gt;One idea about the &quot;rollback&quot; notification: introduce a new member thandle::th_rollback, which can be set by MDD and checked by OSD.&lt;/p&gt;

&lt;p&gt;How do you think?&lt;/p&gt;</comment>
                            <comment id="52570" author="bzzz" created="Sun, 17 Feb 2013 09:45:59 +0000"  >&lt;p&gt;the thing is that neither ldiskfs nor dmu need this.. &lt;/p&gt;</comment>
                            <comment id="52576" author="yong.fan" created="Sun, 17 Feb 2013 19:27:50 +0000"  >&lt;p&gt;That depends on how &quot;need&quot; to be defined. From the view of transaction tracing and debugging, it is useful. We may implement such purposes through other ways, but the &quot;thandle::th_rollback&quot; is simple and clean. In fact, the &quot;thandle::th_local&quot; is also used for notification among layers, but not the functional requirement of ldiskfs or DUM. So...&lt;/p&gt;</comment>
                            <comment id="52588" author="bzzz" created="Sun, 17 Feb 2013 23:58:45 +0000"  >&lt;p&gt;this debugging is in turn needed only because low-level debugging in ldiskfs is rather poor. this is the only reason to have it in the first place.&lt;br/&gt;
with better debugging (which we want to calculate credits better) we likely won&apos;t need this flag.&lt;/p&gt;
</comment>
                            <comment id="52686" author="adilger" created="Tue, 19 Feb 2013 10:57:49 +0000"  >&lt;p&gt;Alex, while I agree that th_rollback is not strictly needed, I think you two are arguing in circles. Clearly we want to improve the ldiskfs transaction credit debugging in some way. The current mechanism is rather weak in detecting when rollback has started, while setting a flag in the handle is positively indicating that rollback has started. &lt;/p&gt;

&lt;p&gt;Unless you have some better mechanism that we could use in short order, I&apos;m inclined to go with this method for now.  The only other method I can think of is adding detailed accounting for every item being modified (e.g. tracking inode numbers, group descriptors, bitmaps, etc) so that the same item can be modified multiple times. However the complexity of that is high and I think it could be deferred until 2.5 if we want to implement it at that point.&lt;/p&gt;

&lt;p&gt;For now, I think th_rollback is an acceptable solution for the time we have left in 2.4, and it can be clearly commented that it is a workaround and reference this bug for a more complete solution in the future.&lt;/p&gt;</comment>
                            <comment id="52687" author="bzzz" created="Tue, 19 Feb 2013 11:17:51 +0000"  >&lt;p&gt;it doesn&apos;t need to be that detailed, imo. just an array of object and (depending on object type) optype with some argument (hash in case of index, range in case of regular file, xattr) would be enough.&lt;/p&gt;

&lt;p&gt;I am against th_rollback because we&apos;ll have to modify number of functions in MDD to implement this. and then this will stay there for long as no one seem to be interested enough.&lt;/p&gt;

&lt;p&gt;at the same time 2.x is doing pretty well w/o this mechanism at all (obviously). I&apos;m tempted to say i regret for introducing this in the first place &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;</comment>
                            <comment id="52689" author="bzzz" created="Tue, 19 Feb 2013 11:29:50 +0000"  >&lt;p&gt;given we do not hit this (except undo cases) so regular paths should be fine from this point of view, I&apos;d suggest to disable the mechanism.&lt;br/&gt;
we still have ldiskfs&apos;s internal checks.&lt;/p&gt;</comment>
                            <comment id="52691" author="adilger" created="Tue, 19 Feb 2013 12:07:42 +0000"  >&lt;p&gt;Do you think the current mechanism is worse than none at all?  I think the current accounting can still find some code defects, even if it does not find as many as with th_rollback being set by the caller. In that case, I&apos;d rather leave it in place during development instead of removing it entirely.&lt;/p&gt;

&lt;p&gt;Maybe make this debugging conditional on (LUSTRE_PATCH &amp;gt;= 50 &amp;amp;&amp;amp; LUSTRE_PATCH &amp;lt; 90)?  That allows us to catch problems during development, but relies only on ldiskfs/jbd accounting during production. &lt;/p&gt;</comment>
                            <comment id="52693" author="bzzz" created="Tue, 19 Feb 2013 12:22:19 +0000"  >&lt;p&gt;well, if it doesn&apos;t work well on its own, i&apos;d rather agree it&apos;s bad. in orion i made the most trivial implementation just to avoid some silly bugs and frankly i didn&apos;t meant to keep it this way for long. unfortunately it survived.&lt;/p&gt;

&lt;p&gt;i&apos;m absolutely fine with your idea to have it enabled in pre-release versions or something like that. i&apos;m not actually going to block the patch if you think this is required. but again my concern is that we keep filling generic code with more and more very specific handling (another example is fid_is_client_mdt_visible())&lt;br/&gt;
which shouldn&apos;t be there at all.&lt;/p&gt;</comment>
                            <comment id="52800" author="yong.fan" created="Thu, 21 Feb 2013 10:09:05 +0000"  >&lt;p&gt;The patch for thandle::th_rollback idea:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://review.whamcloud.com/#change,5501&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/#change,5501&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="53860" author="yong.fan" created="Wed, 13 Mar 2013 02:42:24 +0000"  >&lt;p&gt;The patch for conditional enable transaction debug:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://review.whamcloud.com/#change,5698&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/#change,5698&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="54318" author="pjones" created="Mon, 18 Mar 2013 23:18:11 +0000"  >&lt;p&gt;Landed for 2.4&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10010">
                    <name>Duplicate</name>
                                                                <inwardlinks description="is duplicated by">
                                        <issuelink>
            <issuekey id="17268">LU-2668</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|hzvflr:</customfieldvalue>

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

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