<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 01:28:22 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-2807] lockup in server completion ast -&gt; lu_object_find_at</title>
                <link>https://jira.whamcloud.com/browse/LU-2807</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;Running racer I hit a problem multiple times where on completion AST the callback gets stuck looking for some object.&lt;br/&gt;
Alex thinks it&apos;s a not fully fixed race vs object deletion of some sort.&lt;br/&gt;
The stack trace looks like this:&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;[175924.328073] INFO: task ptlrpc_hr01_003:16414 blocked for more than 120 seconds.
[175924.328610] &quot;echo 0 &amp;gt; /proc/sys/kernel/hung_task_timeout_secs&quot; disables this message.
[175924.329108] ptlrpc_hr01_0 D 0000000000000006  3952 16414      2 0x00000000
[175924.329432]  ffff880076a19920 0000000000000046 0000000000000040 0000000000000286
[175924.329950]  ffff880076a198a0 0000000000000286 0000000000000286 ffffc9000376b040
[175924.330457]  ffff8800573a67b8 ffff880076a19fd8 000000000000fba8 ffff8800573a67b8
[175924.330950] Call Trace:
[175924.331191]  [&amp;lt;ffffffffa0743c36&amp;gt;] ? htable_lookup+0x1a6/0x1c0 [obdclass]
[175924.331505]  [&amp;lt;ffffffffa041e79e&amp;gt;] cfs_waitq_wait+0xe/0x10 [libcfs]
[175924.331807]  [&amp;lt;ffffffffa0744243&amp;gt;] lu_object_find_at+0xb3/0x360 [obdclass]
[175924.332104]  [&amp;lt;ffffffff81057d60&amp;gt;] ? default_wake_function+0x0/0x20
[175924.332403]  [&amp;lt;ffffffffa07413df&amp;gt;] ? keys_fill+0x6f/0x190 [obdclass]
[175924.332746]  [&amp;lt;ffffffffa0744506&amp;gt;] lu_object_find+0x16/0x20 [obdclass]
[175924.333035]  [&amp;lt;ffffffffa0549ea6&amp;gt;] mdt_object_find+0x56/0x170 [mdt]
[175924.333398]  [&amp;lt;ffffffffa0586e63&amp;gt;] mdt_lvbo_fill+0x2f3/0x800 [mdt]
[175924.333715]  [&amp;lt;ffffffffa0845c1a&amp;gt;] ldlm_server_completion_ast+0x18a/0x640 [ptlrpc]
[175924.334204]  [&amp;lt;ffffffffa0845a90&amp;gt;] ? ldlm_server_completion_ast+0x0/0x640 [ptlrpc]
[175924.334655]  [&amp;lt;ffffffffa081bbdc&amp;gt;] ldlm_work_cp_ast_lock+0xcc/0x200 [ptlrpc]
[175924.334976]  [&amp;lt;ffffffffa085c18f&amp;gt;] ptlrpc_set_wait+0x6f/0x880 [ptlrpc]
[175924.335264]  [&amp;lt;ffffffff81090154&amp;gt;] ? __init_waitqueue_head+0x24/0x40
[175924.335559]  [&amp;lt;ffffffffa041e8a5&amp;gt;] ? cfs_waitq_init+0x15/0x20 [libcfs]
[175924.335867]  [&amp;lt;ffffffffa085876e&amp;gt;] ? ptlrpc_prep_set+0x11e/0x300 [ptlrpc]
[175924.336134]  [&amp;lt;ffffffffa081bb10&amp;gt;] ? ldlm_work_cp_ast_lock+0x0/0x200 [ptlrpc]
[175924.336444]  [&amp;lt;ffffffffa081e19b&amp;gt;] ldlm_run_ast_work+0x1db/0x460 [ptlrpc]
[175924.336767]  [&amp;lt;ffffffffa081eda4&amp;gt;] ldlm_reprocess_all+0x114/0x300 [ptlrpc]
[175924.337067]  [&amp;lt;ffffffffa08372e3&amp;gt;] ldlm_cli_cancel_local+0x2b3/0x470 [ptlrpc]
[175924.337445]  [&amp;lt;ffffffffa083bbab&amp;gt;] ldlm_cli_cancel+0x5b/0x360 [ptlrpc]
[175924.337719]  [&amp;lt;ffffffffa083bf42&amp;gt;] ldlm_blocking_ast_nocheck+0x92/0x320 [ptlrpc]
[175924.338177]  [&amp;lt;ffffffffa0819070&amp;gt;] ? lock_res_and_lock+0x30/0x50 [ptlrpc]
[175924.338464]  [&amp;lt;ffffffffa0549d40&amp;gt;] mdt_blocking_ast+0x190/0x2a0 [mdt]
[175924.338759]  [&amp;lt;ffffffffa042e401&amp;gt;] ? libcfs_debug_msg+0x41/0x50 [libcfs]
[175924.339051]  [&amp;lt;ffffffff814faf3e&amp;gt;] ? _spin_unlock+0xe/0x10
[175924.339339]  [&amp;lt;ffffffffa083f950&amp;gt;] ldlm_handle_bl_callback+0x130/0x400 [ptlrpc]
[175924.339814]  [&amp;lt;ffffffffa0820cc6&amp;gt;] ldlm_lock_decref_internal+0x426/0xc80 [ptlrpc]
[175924.340282]  [&amp;lt;ffffffff814faf3e&amp;gt;] ? _spin_unlock+0xe/0x10
[175924.340614]  [&amp;lt;ffffffffa0712217&amp;gt;] ? class_handle2object+0x97/0x170 [obdclass]
[175924.341175]  [&amp;lt;ffffffffa0821f49&amp;gt;] ldlm_lock_decref+0x39/0x90 [ptlrpc]
[175924.341527]  [&amp;lt;ffffffffa087112b&amp;gt;] ptlrpc_hr_main+0x39b/0x760 [ptlrpc]
[175924.341824]  [&amp;lt;ffffffff81057d60&amp;gt;] ? default_wake_function+0x0/0x20
[175924.342141]  [&amp;lt;ffffffffa0870d90&amp;gt;] ? ptlrpc_hr_main+0x0/0x760 [ptlrpc]
[175924.342444]  [&amp;lt;ffffffff8100c14a&amp;gt;] child_rip+0xa/0x20
[175924.342734]  [&amp;lt;ffffffffa0870d90&amp;gt;] ? ptlrpc_hr_main+0x0/0x760 [ptlrpc]
[175924.343068]  [&amp;lt;ffffffffa0870d90&amp;gt;] ? ptlrpc_hr_main+0x0/0x760 [ptlrpc]
[175924.343376]  [&amp;lt;ffffffff8100c140&amp;gt;] ? child_rip+0x0/0x20
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
        <key id="17555">LU-2807</key>
            <summary>lockup in server completion ast -&gt; lu_object_find_at</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="3">Duplicate</resolution>
                                        <assignee username="jay">Jinshan Xiong</assignee>
                                    <reporter username="green">Oleg Drokin</reporter>
                        <labels>
                            <label>MB</label>
                    </labels>
                <created>Wed, 13 Feb 2013 13:00:12 +0000</created>
                <updated>Wed, 16 Oct 2013 22:48:04 +0000</updated>
                            <resolved>Tue, 16 Apr 2013 15:18:21 +0000</resolved>
                                    <version>Lustre 2.4.0</version>
                                                        <due></due>
                            <votes>0</votes>
                                    <watches>8</watches>
                                                                            <comments>
                            <comment id="52289" author="green" created="Wed, 13 Feb 2013 13:03:41 +0000"  >&lt;p&gt;I dumped a core from this node just in case it&apos;s useful:&lt;br/&gt;
/exports/crashdumps/lu2807/vmcore and modules there too.&lt;/p&gt;</comment>
                            <comment id="53174" author="bfaccini" created="Thu, 28 Feb 2013 07:36:31 +0000"  >&lt;p&gt;I went thru the crash-dump, and I agree, this thread and an other (&quot;mdt01_008&quot;) are stuck in lu_object_find_at() awaiting for an object end-of-life. This means that htable_lookup() returned -EAGAIN.&lt;/p&gt;

&lt;p&gt;Going deeper into the crash-dump I did not found any object linked into the related (as far as my manual hashing computations were good to find the good one ...) hash-bucket descriptor, but anyway both hung threads really have their cfs_waitlink_t linked onto the lsb_marche_funebre list, so this means that these threads are stuck there for ever.&lt;/p&gt;

&lt;p&gt;Could be related to &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-1017&quot; title=&quot;MDS oops when running racer test&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-1017&quot;&gt;&lt;del&gt;LU-1017&lt;/del&gt;&lt;/a&gt;, but I still have to work on it in order to understand what was the fix for this one regarding the original crash that was reported ...&lt;/p&gt;

&lt;p&gt;BTW, are there known locking issues/holes around hash-bucket descriptor&apos;s lsb_marche_funebre waitq-list management that may explain this scenario of orphan threads ?&lt;/p&gt;
</comment>
                            <comment id="53589" author="bfaccini" created="Fri, 8 Mar 2013 06:34:04 +0000"  >&lt;p&gt;In fact this situation looks like an other possible consequence of the bug described in &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-1640&quot; title=&quot;Test failure on test suite lustre-rsync-test, subtest test_2c&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-1640&quot;&gt;&lt;del&gt;LU-1640&lt;/del&gt;&lt;/a&gt;/&lt;a href=&quot;https://jira.whamcloud.com/browse/LU-2492&quot; title=&quot;MDT thread stuck: mdd_object_find -&amp;gt; lu_object_find_at&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-2492&quot;&gt;&lt;del&gt;LU-2492&lt;/del&gt;&lt;/a&gt;. There is a fix for these tickets (&lt;a href=&quot;http://review.whamcloud.com/3439&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/3439&lt;/a&gt;), and it has been cherry-picked on Jan. 8th 2013 (as 6f34d6b85466bc8cddb8de1816734528af9da09b), so now I 1st need to confirm it was in at the time of the crash-dump and then depending either duplicate this to &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-2492&quot; title=&quot;MDT thread stuck: mdd_object_find -&amp;gt; lu_object_find_at&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-2492&quot;&gt;&lt;del&gt;LU-2492&lt;/del&gt;&lt;/a&gt; or find more about/against its fix.&lt;/p&gt;</comment>
                            <comment id="53611" author="green" created="Fri, 8 Mar 2013 13:24:48 +0000"  >&lt;p&gt;I can confirm I still hit this almost daily with current master.&lt;/p&gt;</comment>
                            <comment id="53889" author="bfaccini" created="Wed, 13 Mar 2013 06:14:44 +0000"  >&lt;p&gt;Bobijam agrees that there may be some more work to complement patch he already provided for &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-2942&quot; title=&quot;after_reply() compares unswabbed pb_status with -EINPROGRESS&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-2942&quot;&gt;&lt;del&gt;LU-2942&lt;/del&gt;&lt;/a&gt;. I am working on this and on the difference from &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-2492&quot; title=&quot;MDT thread stuck: mdd_object_find -&amp;gt; lu_object_find_at&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-2492&quot;&gt;&lt;del&gt;LU-2492&lt;/del&gt;&lt;/a&gt; I found in the crash-dump, where there was no more object beeing hashed.&lt;/p&gt;</comment>
                            <comment id="53927" author="bfaccini" created="Wed, 13 Mar 2013 13:20:33 +0000"  >&lt;p&gt;More crash-dump learning (or deceptions ...) indicate that :&lt;/p&gt;

&lt;p&gt;      _ both hung threads in lu_object_find_at() are in this state since ages (more than 100000s/1day)&lt;br/&gt;
      _ thus there is no more traces about them in the lustre debug-trace buffer&lt;br/&gt;
      _ since I am not absolutely sure about my manual hashing compute, I tried to find a reference about the dying object left in their stacks, but no-way memory and registers re-use cleared it.&lt;br/&gt;
      _ there are also a bunch of racer processes/commands that are stuck since about the same second, but I do not find a common direct cause ...&lt;/p&gt;

&lt;p&gt;Thus, and since problem is &quot;easily&quot; reproducible, I would like to get a new crash-dump when running with a debug patch to print the dying object reference.&lt;/p&gt;

&lt;p&gt;Oleg, can you tell me more detail on the platform and racer configs you have when you trigger problem ?&lt;/p&gt;

&lt;p&gt;Debug patch is at &lt;a href=&quot;http://review.whamcloud.com/5706&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/5706&lt;/a&gt;.&lt;/p&gt;

</comment>
                            <comment id="53929" author="green" created="Wed, 13 Mar 2013 13:41:36 +0000"  >&lt;p&gt;details:&lt;br/&gt;
lustre from master, single node, 3-4G ram, 8 contended cpu cores.&lt;br/&gt;
run this for a day or two: while :; do rm -rf /tmp/* ; SLOW=yes REFORMAT=yes DURATION=$((900*3)) PTLDEBUG=&quot;vfstrace rpctrace dlmtrace neterror ha config ioctl super cache&quot; DEBUG_SIZE=100 sh racer.sh ; sh llmountcleanup.sh ; done&lt;/p&gt;

&lt;p&gt;I will try to start your patch later today.&lt;/p&gt;</comment>
                            <comment id="54072" author="green" created="Thu, 14 Mar 2013 23:48:26 +0000"  >&lt;p&gt;reproduced with your patch.&lt;br/&gt;
crashdump is in /exports/crashdumps/t3/lu2807-1.dmp and the modules are in the same dir if needed.&lt;br/&gt;
I am leaving the node (centos6-10) in this state in case you want to poke at it (you can attach gdb at localhost:1210 if you wish) until at least Saturday since I am flying most of tomorrow (Friday).&lt;/p&gt;</comment>
                            <comment id="54108" author="bfaccini" created="Fri, 15 Mar 2013 09:22:41 +0000"  >&lt;p&gt;Thank&apos;s Oleg, I am working on the new crash-dump with the object reference the debug message printed.&lt;/p&gt;

&lt;p&gt;Interesting is that dying object found but still hashed condition was triggered earlier during your tests on same node but did not induce threads hangs. This is likely to be the consequence of Bobijam&apos;s patch for &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-2942&quot; title=&quot;after_reply() compares unswabbed pb_status with -EINPROGRESS&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-2942&quot;&gt;&lt;del&gt;LU-2942&lt;/del&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Also interesting in our case is that seem that always 2 threads trigger the same dying object condition, and with help of debug patch trace I found that concerned dying object is still hashed :&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;[ 8468.524706] Lustre: 17062:0:(lu_object.c:565:htable_lookup()) found object ffff880029715ea8 dying but still hashed.
[ 8468.540255] Lustre: 15574:0:(lu_object.c:565:htable_lookup()) found object ffff880029715ea8 dying but still hashed.

PID: 17062  TASK: ffff88001cd863c0  CPU: 6   COMMAND: &quot;mdt01_001&quot;
 #0 [ffff8800b574da50] schedule at ffffffff814f7c98
 #1 [ffff8800b574db18] cfs_waitq_wait at ffffffffa0a4a79e [libcfs]
 #2 [ffff8800b574db28] lu_object_find_at at ffffffffa0d0af83 [obdclass]
 #3 [ffff8800b574dbe8] lu_object_find at ffffffffa0d0b246 [obdclass]
 #4 [ffff8800b574dbf8] mdt_object_find at ffffffffa060eea6 [mdt]
 #5 [ffff8800b574dc28] mdt_lvbo_fill at ffffffffa064c3e3 [mdt]
 #6 [ffff8800b574dcb8] ldlm_handle_enqueue0 at ffffffffa0eb2f47 [ptlrpc]
 #7 [ffff8800b574dd28] mdt_enqueue at ffffffffa0622dd6 [mdt]
 #8 [ffff8800b574dd48] mdt_handle_common at ffffffffa0617f18 [mdt]
 #9 [ffff8800b574dd98] mds_regular_handle at ffffffffa06504c5 [mdt]
#10 [ffff8800b574dda8] ptlrpc_server_handle_request at ffffffffa0ee2de3 [ptlrpc]
#11 [ffff8800b574dea8] ptlrpc_main at ffffffffa0ee58ad [ptlrpc]
#12 [ffff8800b574df48] kernel_thread at ffffffff8100c14a

PID: 15574  TASK: ffff880058d08340  CPU: 2   COMMAND: &quot;ptlrpc_hr00_001&quot;
 #0 [ffff8800affef850] schedule at ffffffff814f7c98
 #1 [ffff8800affef918] cfs_waitq_wait at ffffffffa0a4a79e [libcfs]
 #2 [ffff8800affef928] lu_object_find_at at ffffffffa0d0af83 [obdclass]
 #3 [ffff8800affef9e8] lu_object_find at ffffffffa0d0b246 [obdclass]
 #4 [ffff8800affef9f8] mdt_object_find at ffffffffa060eea6 [mdt]
 #5 [ffff8800affefa28] mdt_lvbo_fill at ffffffffa064c3e3 [mdt]
 #6 [ffff8800affefab8] ldlm_server_completion_ast at ffffffffa0eb3b8a [ptlrpc]
 #7 [ffff8800affefb28] ldlm_work_cp_ast_lock at ffffffffa0e89bdc [ptlrpc]
 #8 [ffff8800affefb58] ptlrpc_set_wait at ffffffffa0eca0ff [ptlrpc]
 #9 [ffff8800affefbf8] ldlm_run_ast_work at ffffffffa0e8c19b [ptlrpc]
#10 [ffff8800affefc28] ldlm_reprocess_all at ffffffffa0e8cda4 [ptlrpc]
#11 [ffff8800affefc78] ldlm_cli_cancel_local at ffffffffa0ea5303 [ptlrpc]
#12 [ffff8800affefca8] ldlm_cli_cancel at ffffffffa0ea9bd0 [ptlrpc]
#13 [ffff8800affefce8] ldlm_blocking_ast_nocheck at ffffffffa0ea9f67 [ptlrpc]
#14 [ffff8800affefd18] mdt_blocking_ast at ffffffffa060ed40 [mdt]
#15 [ffff8800affefd98] ldlm_handle_bl_callback at ffffffffa0ead970 [ptlrpc]
#16 [ffff8800affefdc8] ldlm_lock_decref_internal at ffffffffa0e8ecc6 [ptlrpc]
#17 [ffff8800affefe28] ldlm_lock_decref at ffffffffa0e8ff49 [ptlrpc]
#18 [ffff8800affefe58] ptlrpc_hr_main at ffffffffa0edf11b [ptlrpc]
#19 [ffff8800affeff48] kernel_thread at ffffffff8100c14a

*(struct lu_object_header *)0xffff880029715ea8
$4 = {
  loh_flags = 0x1,
  loh_ref = {
    counter = 0x1
  },
  loh_fid = {
    f_seq = 0x200000401,
    f_oid = 0x42,
    f_ver = 0x0
  },
  loh_attr = 0x8001,
  loh_hash = {
    next = 0x0,
    pprev = 0xffffc90005c96b08
  },
  loh_lru = {
    next = 0xffff880029715ee0,
    prev = 0xffff880029715ee0
  },
  loh_layers = {
    next = 0xffff880029715f18,
    prev = 0xffff880082dc0f08
  },
  loh_reference = {&amp;lt;No data fields&amp;gt;}
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                            <comment id="54258" author="bfaccini" created="Mon, 18 Mar 2013 15:55:16 +0000"  >&lt;p&gt;Humm in fact seems that there is a 3rd guy involved (stuck since about the same time and with pointer/reference to the object the 2 others/first threads wait for) here and probably the cause of the remaining reference to the dying object :&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;PID: 18000  TASK: ffff88004519a500  CPU: 2   COMMAND: &quot;mdt00_004&quot;
 #0 [ffff88002e71d820] schedule at ffffffff814f7c98
 #1 [ffff88002e71d8e8] cfs_waitq_wait at ffffffffa0a4a79e [libcfs]
 #2 [ffff88002e71d8f8] ldlm_completion_ast at ffffffffa0eabdba [ptlrpc]
 #3 [ffff88002e71d9a8] ldlm_cli_enqueue_local at ffffffffa0eab478 [ptlrpc]
 #4 [ffff88002e71da38] mdt_object_lock0 at ffffffffa0611889 [mdt]
 #5 [ffff88002e71dae8] mdt_object_lock at ffffffffa0612104 [mdt]
 #6 [ffff88002e71daf8] mdt_getattr_name_lock at ffffffffa0624ef9 [mdt]
 #7 [ffff88002e71dbb8] mdt_intent_getattr at ffffffffa0625ced [mdt]
 #8 [ffff88002e71dc18] mdt_intent_policy at ffffffffa06228fe [mdt]
 #9 [ffff88002e71dc58] ldlm_lock_enqueue at ffffffffa0e8c70a [ptlrpc]
#10 [ffff88002e71dcb8] ldlm_handle_enqueue0 at ffffffffa0eb2df7 [ptlrpc]
#11 [ffff88002e71dd28] mdt_enqueue at ffffffffa0622dd6 [mdt]
#12 [ffff88002e71dd48] mdt_handle_common at ffffffffa0617f18 [mdt]
#13 [ffff88002e71dd98] mds_regular_handle at ffffffffa06504c5 [mdt]
#14 [ffff88002e71dda8] ptlrpc_server_handle_request at ffffffffa0ee2de3 [ptlrpc]
#15 [ffff88002e71dea8] ptlrpc_main at ffffffffa0ee58ad [ptlrpc]
#16 [ffff88002e71df48] kernel_thread at ffffffff8100c14a
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;and after some de-assembly to retrieve and resolve where the pointer to dying object come for this thread, I was able to determine it is the parent pointer in :&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;/*
 * UPDATE lock should be taken against parent, and be release before exit;
 * child_bits lock should be taken against child, and be returned back:
 *            (1)normal request should release the child lock;
 *            (2)intent request will grant the lock to client.
 */
static int mdt_getattr_name_lock(struct mdt_thread_info *info,
                                 struct mdt_lock_handle *lhc,
                                 __u64 child_bits,
                                 struct ldlm_reply *ldlm_rep)
{
        struct ptlrpc_request  *req       = mdt_info_req(info);
        struct mdt_body        *reqbody   = NULL;
        struct mdt_object      *parent    = info-&amp;gt;mti_object;  &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;
....

&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
</comment>
                            <comment id="54452" author="bfaccini" created="Wed, 20 Mar 2013 10:46:31 +0000"  >&lt;p&gt;Forget the 2nd part of my last update (I might be tired ...) pointer to the dying object in the 3rd (pid 18000) is NOT the parent but the child !!! So it is definitely the one that bumped the object&apos;s loh_ref/ref-count and highly probably the cause the 2 others threads have not been awaken/broadcasted.&lt;/p&gt;</comment>
                            <comment id="54493" author="bfaccini" created="Wed, 20 Mar 2013 17:54:18 +0000"  >&lt;p&gt;Thus my understanding now of the situation, it is a dead-lock between pid 18000 having set a reference to the object and now waiting for lock completion ast on it, and pid 15574 running the completion but stuck waiting for the object to die that will not happen since reference count is set.&lt;/p&gt;

&lt;p&gt;Can this be fixed by canceling the lock during object death ??&lt;/p&gt;</comment>
                            <comment id="54771" author="bfaccini" created="Mon, 25 Mar 2013 17:17:21 +0000"  >&lt;p&gt;The dead-lock comes from the fact thread 18000, which owns last object reference, is waiting for lock-completion, which is itself handled by thread 15574. But 15574 can not accomplish the completion for this lock because, in parsing its l_cp_ast list, it is already running completion for an other lock on same object when it has been marked dying in-between and due to lvb an object lookup has been necessary, causing to wait for object full death that can never happen.&lt;/p&gt;

&lt;p&gt;I am currently reviewing concerned source code to propose a fix now.&lt;/p&gt;</comment>
                            <comment id="54911" author="bfaccini" created="Wed, 27 Mar 2013 13:06:28 +0000"  >&lt;p&gt;The object lookup, due to lvb and causing the dead-lock, is the result of recent integration of patches for layout-swap, mainly from &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-1876&quot; title=&quot;Layout Lock Server Patch Landings to Master&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-1876&quot;&gt;&lt;del&gt;LU-1876&lt;/del&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I&apos;ll ask Jinshan if this scenario sounds familiar to him and if has some idea on how to fix it without breaking layout-swap.&lt;/p&gt;</comment>
                            <comment id="54955" author="jay" created="Wed, 27 Mar 2013 20:23:19 +0000"  >&lt;p&gt;I think this is a race between unlink and getattr. Let&apos;s make up a test case for this race, say:&lt;br/&gt;
1. client1 unlink reaches the MDT;&lt;br/&gt;
2. before unlink enqueues lock, client2 tries to send a getattr intent req;&lt;br/&gt;
3. unlink acquires inodebits dlm lock;&lt;br/&gt;
4. before unlink releases the lock, getattr comes to acquire the lock, blocked;&lt;br/&gt;
5. unlink finishes and releases the lock, getattr&apos;s completion_ast will be invoked;&lt;br/&gt;
6. this problem should be reproduced.&lt;/p&gt;

&lt;p&gt;If this is the case, we can work out a lu_object_lookup() and if the object is already killed or not existed, -ENOENT should be returned; then -ENOENT should be returned to getattr intent request too.&lt;/p&gt;</comment>
                            <comment id="55013" author="bfaccini" created="Thu, 28 Mar 2013 15:54:55 +0000"  >&lt;p&gt;Thank&apos;s Jinshan, so for you problem has not been introduced by LVB/layout-swap changes but only highlighted.&lt;/p&gt;

&lt;p&gt;And the fix you suggest is to give getattr the mean to detect unlink occurred and object is dying with a new lu_object_lookup() method, just after it acquired the &quot;inodebit dlm lock&quot; and return ENOENT if object is dying ?&lt;/p&gt;
</comment>
                            <comment id="55016" author="jay" created="Thu, 28 Mar 2013 16:12:35 +0000"  >&lt;p&gt;I mean we can declare a new function, say: mdt_object_lookup() which will lookup the hash table and make sure the object exists in the cache. In mdt_object_lookup(), it also calls lu_object_find(), but with a new flags in lu_object_conf, say: LOC_F_LOOKUP. With this flag, lu_object_find() will look up hash table only, and of course, if the object is dying it will return -ENOENT.&lt;/p&gt;

&lt;p&gt;This assumes that the object must have been referenced by someone. For getattr intent request, this is true. However we need to check other code path to make sure.&lt;/p&gt;</comment>
                            <comment id="55235" author="jay" created="Mon, 1 Apr 2013 21:43:31 +0000"  >&lt;p&gt;patch is at: &lt;a href=&quot;http://review.whamcloud.com/5911&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/5911&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="55609" author="jay" created="Fri, 5 Apr 2013 16:30:02 +0000"  >&lt;p&gt;I&apos;m going to fix this issue by finding a field in ldlm_lock, say l_tree_node, to store mdt_object, if it&apos;s an intent operation which find the object firstly and then request dlm lock. So in mdt_lvbo_fill(), it only calls mdt_object_find() if it&apos;s NULL.&lt;/p&gt;</comment>
                            <comment id="55611" author="bfaccini" created="Fri, 5 Apr 2013 16:39:37 +0000"  >&lt;p&gt;So finally, you changed your mind and will fix it on the LVB/layout-swap side as we were discussing before ?&lt;/p&gt;</comment>
                            <comment id="55614" author="bzzz" created="Fri, 5 Apr 2013 16:50:11 +0000"  >&lt;p&gt;frankly, I can&apos;t say this is very nice solution.. and I don&apos;t think one more RPC to fetch LOV after data restore is such a big problem.&lt;/p&gt;</comment>
                            <comment id="55766" author="jay" created="Mon, 8 Apr 2013 17:35:21 +0000"  >&lt;blockquote&gt;
&lt;p&gt;So finally, you changed your mind and will fix it on the LVB/layout-swap side as we were discussing before ?&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;This is not an issue about layout-swap or something. Maybe I missed something in our previous conversation &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="55770" author="bfaccini" created="Mon, 8 Apr 2013 18:01:01 +0000"  >&lt;p&gt;No, I did not mean the problem is in layout-swap/lvb but that it was put back to front due to it. We already agreed it is an old/known problem/race between unlink and getattr. I just wanted to comment on the fact that now you think the best place to handle and fix this is in mdt_lvbo_fill() where I was pointing that the extra-lookup causing the hung situation is.&lt;/p&gt;</comment>
                            <comment id="56395" author="jay" created="Tue, 16 Apr 2013 15:18:21 +0000"  >&lt;p&gt;Will be fixed in &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-3124&quot; title=&quot;bad interaction between layout lock and wide striping&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-3124&quot;&gt;&lt;del&gt;LU-3124&lt;/del&gt;&lt;/a&gt; with patch &lt;a href=&quot;http://review.whamcloud.com/6042&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/6042&lt;/a&gt;&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Related</name>
                                            <outwardlinks description="is related to ">
                                        <issuelink>
            <issuekey id="18280">LU-3124</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="21417">LU-4106</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="18280">LU-3124</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|hzvj2n:</customfieldvalue>

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