<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 02:04:59 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-6984] Failure to delete over a million files in a DNE2 directory.</title>
                <link>https://jira.whamcloud.com/browse/LU-6984</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;In my testing of DNE2 I&apos;m seeing problems when creating 1 million+ files per directory. Clearing out the debug logs I see the problem is only on the client side. When running a application I see:&lt;/p&gt;

&lt;p&gt;command line used: /lustre/sultan/stf008/scratch/jsimmons/mdtest -I 100000 -i 5 -d /lustre/sultan/stf008/scratch/jsimmons/dne2_4_mds_md_test/shared_1000k_10&lt;br/&gt;
Path: /lustre/sultan/stf008/scratch/jsimmons/dne2_4_mds_md_test&lt;br/&gt;
FS: 21.8 TiB Used FS: 0.2% Inodes: 58.7 Mi Used Inodes: 4.6%&lt;/p&gt;

&lt;p&gt;10 tasks, 1000000 files/directories&lt;br/&gt;
aprun: Apid 3172: Caught signal Window changed, sending to application&lt;br/&gt;
08/03/2015 10:34:45: Process 0(nid00028): FAILED in create_remove_directory_tree, Unable to remove directory: No such file or directory&lt;br/&gt;
Rank 0 &lt;span class=&quot;error&quot;&gt;&amp;#91;Mon Aug 3 10:34:45 2015&amp;#93;&lt;/span&gt; &lt;span class=&quot;error&quot;&gt;&amp;#91;c0-0c0s1n2&amp;#93;&lt;/span&gt; application called MPI_Abort(MPI_COMM_WORLD, 1) - process 0&lt;br/&gt;
_pmiu_daemon(SIGCHLD): &lt;span class=&quot;error&quot;&gt;&amp;#91;NID 00028&amp;#93;&lt;/span&gt; &lt;span class=&quot;error&quot;&gt;&amp;#91;c0-0c0s1n2&amp;#93;&lt;/span&gt; &lt;span class=&quot;error&quot;&gt;&amp;#91;Mon Aug 3 10:34:45 2015&amp;#93;&lt;/span&gt; PE RANK 0 exit signal Aborted&lt;br/&gt;
aprun: Apid 3172: Caught signal Interrupt, sending to application&lt;br/&gt;
_pmiu_daemon(SIGCHLD): &lt;span class=&quot;error&quot;&gt;&amp;#91;NID 00012&amp;#93;&lt;/span&gt; &lt;span class=&quot;error&quot;&gt;&amp;#91;c0-0c0s6n0&amp;#93;&lt;/span&gt; &lt;span class=&quot;error&quot;&gt;&amp;#91;Mon Aug 3 10:50:50 2015&amp;#93;&lt;/span&gt; PE RANK 7 exit signal Interrupt&lt;br/&gt;
_pmiu_daemon(SIGCHLD): &lt;span class=&quot;error&quot;&gt;&amp;#91;NID 00018&amp;#93;&lt;/span&gt; &lt;span class=&quot;error&quot;&gt;&amp;#91;c0-0c0s6n2&amp;#93;&lt;/span&gt; &lt;span class=&quot;error&quot;&gt;&amp;#91;Mon Aug 3 10:50:50 2015&amp;#93;&lt;/span&gt; PE RANK 9 exit signal Interrupt&lt;br/&gt;
_pmiu_daemon(SIGCHLD): &lt;span class=&quot;error&quot;&gt;&amp;#91;NID 00013&amp;#93;&lt;/span&gt; &lt;span class=&quot;error&quot;&gt;&amp;#91;c0-0c0s6n1&amp;#93;&lt;/span&gt; &lt;span class=&quot;error&quot;&gt;&amp;#91;Mon Aug 3 10:50:50 2015&amp;#93;&lt;/span&gt; PE RANK 8 exit signal Interrupt&lt;/p&gt;

&lt;p&gt;After the test failed any attempt to remove the files create by these test fail. When I attempt to remove the files I see the following errors in dmesg.&lt;/p&gt;

&lt;p&gt;LustreError: 5430:0:(llite_lib.c:2286:ll_prep_inode()) new_inode -fatal: rc -2&lt;br/&gt;
LustreError: 5451:0:(llite_lib.c:2286:ll_prep_inode()) new_inode -fatal: rc -2&lt;br/&gt;
LustreError: 5451:0:(llite_lib.c:2286:ll_prep_inode()) Skipped 7 previous similar messages&lt;br/&gt;
LustreError: 5451:0:(llite_lib.c:2286:ll_prep_inode()) new_inode -fatal: rc -2&lt;/p&gt;</description>
                <environment>pre-2.8 clients with DNE2 directories which contain 1 million or more files.</environment>
        <key id="31430">LU-6984</key>
            <summary>Failure to delete over a million files in a DNE2 directory.</summary>
                <type id="1" iconUrl="https://jira.whamcloud.com/secure/viewavatar?size=xsmall&amp;avatarId=11303&amp;avatarType=issuetype">Bug</type>
                                            <priority id="2" iconUrl="https://jira.whamcloud.com/images/icons/priorities/critical.svg">Critical</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="di.wang">Di Wang</assignee>
                                    <reporter username="simmonsja">James A Simmons</reporter>
                        <labels>
                            <label>dne2</label>
                    </labels>
                <created>Tue, 11 Aug 2015 14:40:54 +0000</created>
                <updated>Mon, 20 Feb 2017 07:41:57 +0000</updated>
                            <resolved>Sat, 3 Oct 2015 04:21:28 +0000</resolved>
                                    <version>Lustre 2.8.0</version>
                                    <fixVersion>Lustre 2.8.0</fixVersion>
                                        <due></due>
                            <votes>0</votes>
                                    <watches>11</watches>
                                                                            <comments>
                            <comment id="123844" author="simmonsja" created="Tue, 11 Aug 2015 14:45:07 +0000"  >&lt;p&gt;I attached to this ticket the client logs from when it failed to delete some of the files in the DNE2 directory. Let me know if the logs are good enough. Please be aware that the deletion of files sometimes works so it is some race condition. The logs cover both failed and successful attempts to delete files.&lt;/p&gt;</comment>
                            <comment id="123863" author="adilger" created="Tue, 11 Aug 2015 17:17:39 +0000"  >&lt;p&gt;James, how many shards in the striped directory?&lt;/p&gt;</comment>
                            <comment id="123864" author="simmonsja" created="Tue, 11 Aug 2015 17:22:31 +0000"  >&lt;p&gt;Each file is striped across 56 OSTs and the problem exist for any MDS striping greater than one.&lt;/p&gt;</comment>
                            <comment id="123891" author="di.wang" created="Tue, 11 Aug 2015 20:50:41 +0000"  >&lt;p&gt;James: I did not see error cases in the debug log? Will you attach another log? Thanks&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;[root@testnode lustre-release_new]# grep -r &quot;ll_prep_inode&quot; /work/LU-6381.log 
00000080:00000001:4.0:1438629890.366795:0:12535:0:(llite_lib.c:2252:ll_prep_inode()) Process entered
00000080:00000001:4.0:1438629890.366895:0:12535:0:(llite_lib.c:2319:ll_prep_inode()) Process leaving via out (rc=0 : 0 : 0x0)
00000080:00000001:4.0:1438629890.369895:0:12535:0:(llite_lib.c:2252:ll_prep_inode()) Process entered
00000080:00000001:4.0:1438629890.369977:0:12535:0:(llite_lib.c:2319:ll_prep_inode()) Process leaving via out (rc=0 : 0 : 0x0)
00000080:00000001:4.0:1438629892.079356:0:12597:0:(llite_lib.c:2252:ll_prep_inode()) Process entered
00000080:00000001:4.0:1438629892.079459:0:12597:0:(llite_lib.c:2319:ll_prep_inode()) Process leaving via out (rc=0 : 0 : 0x0)
00000080:00000001:4.0:1438629892.082521:0:12597:0:(llite_lib.c:2252:ll_prep_inode()) Process entered
00000080:00000001:4.0:1438629892.082605:0:12597:0:(llite_lib.c:2319:ll_prep_inode()) Process leaving via out (rc=0 : 0 : 0x0)
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                            <comment id="123893" author="simmonsja" created="Tue, 11 Aug 2015 21:02:02 +0000"  >&lt;p&gt;Somethings it doesn&apos;t print that message when it fails. Do you see anything useful in the log?&lt;/p&gt;</comment>
                            <comment id="123900" author="di.wang" created="Tue, 11 Aug 2015 21:28:15 +0000"  >&lt;p&gt;There are only successful cases in the log, so not very helpful&lt;/p&gt;</comment>
                            <comment id="123902" author="di.wang" created="Tue, 11 Aug 2015 21:29:22 +0000"  >&lt;p&gt;Could you please tell me how to reproduce the problem? &lt;/p&gt;</comment>
                            <comment id="123904" author="di.wang" created="Tue, 11 Aug 2015 21:36:10 +0000"  >&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;After the test failed any attempt to remove the files create by these test fail. When I attempt to remove the files I see the following errors in dmesg.
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;James: Could you please collect the client debug log (-1) when you tries to remove these files after failure? Thanks. &lt;/p&gt;</comment>
                            <comment id="124082" author="simmonsja" created="Thu, 13 Aug 2015 18:17:10 +0000"  >&lt;p&gt;WangDi here is another client dump. When enabling full debug the file deletion race becomes less common. I do see this in the log:&lt;/p&gt;

&lt;p&gt;00000080:00002000:1.0:1439485513.362411:0:32074:0:(dcache.c:181:ll_ddelete()) keeping dentry mdtest_tree.0 (ffff8803ed204e0&lt;br/&gt;
0, parent ffff8803ecd3c200, inode ffff8803ea2d2a40) hashed,&lt;br/&gt;
00000080:00000001:1.0:1439485513.362413:0:32074:0:(dcache.c:203:ll_ddelete()) Process leaving (rc=0 : 0 : 0)&lt;/p&gt;

&lt;p&gt;As for reproducing this you just need one client node. On the client node create a directory with the following.&lt;/p&gt;

&lt;p&gt;lfs setdirstripe -c 4 -i 5 dne2_4_mds_md_test&lt;br/&gt;
lfs setdirstripe -c 4 -i5 -D dne2_4_mds_md_test&lt;br/&gt;
lfs setstripe -c 56 dne2_4_mds_md_test&lt;/p&gt;

&lt;p&gt;So you end up with a directory striped across 56 OSTs and 4 MDTs starting at MDT 5. This is with one MDT per MDS server. The 56 OSTs are split evenly across 4 OSS servers. In total I have 16 MDS servers each with one MDT.&lt;br/&gt;
One of the example mdtest runs failing is:&lt;/p&gt;

&lt;p&gt;mpirun -n 1 mdtest -I 1000000 -i 5 -d /lustre/sultan/stf008/scratch/jsimmons/&lt;br/&gt;
dne2_4_mds_md_test/shared_1000k_1&lt;/p&gt;

&lt;p&gt;In this case it is running just one thread on one node. I split the file count for -l by the number of total client threads so the total is always about 1 million files.&lt;/p&gt;</comment>
                            <comment id="124083" author="simmonsja" created="Thu, 13 Aug 2015 18:20:08 +0000"  >&lt;p&gt;Recent test with striping across 16 MDS servers shows this problem with mdtest in every case. So this might be the best configuration for you to reproduce this error. It fails with even 10k per directory.&lt;/p&gt;</comment>
                            <comment id="124105" author="di.wang" created="Thu, 13 Aug 2015 21:40:07 +0000"  >&lt;p&gt;James: unfortunately, there are still not much useful information in the lctldump log. Hmm, I checked the code again to see what can cause&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;LustreError: 5430:0:(llite_lib.c:2286:ll_prep_inode()) new_inode -fatal: rc -2
&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;int ll_prep_inode(struct inode **inode, struct ptlrpc_request *req,
                  struct super_block *sb, struct lookup_intent *it)
{
............
 *inode = ll_iget(sb, cl_fid_build_ino(&amp;amp;md.body-&amp;gt;mbo_fid1,
                                             sbi-&amp;gt;ll_flags &amp;amp; LL_SBI_32BIT_API),
                                 &amp;amp;md);           
                if (IS_ERR(*inode)) {
#ifdef CONFIG_FS_POSIX_ACL              
                        if (md.posix_acl) {
                                posix_acl_release(md.posix_acl);
                                md.posix_acl = NULL;
                        }
#endif  
                        rc = IS_ERR(*inode) ? PTR_ERR(*inode) : -ENOMEM;
                        *inode = NULL;
                        CERROR(&quot;new_inode -fatal: rc %d\n&quot;, rc);
                        GOTO(out, rc);
                }
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Then in ll_iget(), there are only 3 places which can cause this ENOENT error.&lt;/p&gt;

&lt;p&gt;1. ll_iget() --&lt;del&gt;&amp;gt;ll_read_inode2()&lt;/del&gt;&amp;gt;ll_update_inode()--&lt;del&gt;&amp;gt;ll_update_lsm_md()&lt;/del&gt;-&lt;del&gt;&amp;gt;ll_init_lsm_md()&lt;/del&gt;--&amp;gt;ll_iget_anon_dir() , and you should see sth like &quot;failed get simple inode ....&quot; on client console. Did you see that on client console after failure happens? Hmm, this is caused by the failure in iget_locked(), seems unlikely. &lt;br/&gt;
2. ll_iget()----&amp;gt;cl_file_inode_init(), and then you should see sth like &quot;Failure to initialize cl object ....&quot; on client console, did you see that?&lt;br/&gt;
3. ll_iget()---&lt;del&gt;&amp;gt;ll_update_inode()&lt;/del&gt;&amp;gt;.....   then same as 1.&lt;/p&gt;

&lt;p&gt;So could you please post the client console log (dmesg output) when these failure happens? Thanks.&lt;/p&gt;</comment>
                            <comment id="124173" author="di.wang" created="Fri, 14 Aug 2015 17:54:01 +0000"  >&lt;p&gt;I am not sure I can find an env to do such test, but I can try. Thanks.&lt;/p&gt;</comment>
                            <comment id="124220" author="simmonsja" created="Sat, 15 Aug 2015 02:15:51 +0000"  >&lt;p&gt;I&apos;m not seeing those error &lt;img class=&quot;emoticon&quot; src=&quot;https://jira.whamcloud.com/images/icons/emoticons/sad.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="125319" author="di.wang" created="Thu, 27 Aug 2015 01:33:31 +0000"  >&lt;p&gt;I tried this on a cluster with 4 MDSs x 4 MDTs (16 MDTs),  2 OSS x 4 OSTs (8 OSTs). &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;[root@c01 lustre]# lfs setdirstripe -c 4 -i 5 test1
[root@c01 lustre]# lfs setdirstripe -c4 -i 5 -D test1
[root@c01 lustre]# lfs setstripe -c 8 test1
[root@c01 lustre]# ls
test1
[root@c01 lustre]# mpirun -n 1 mdtest -I 1000000 -i 5 -d /mnt/lustre/test1/shared_1000k
-- started at 08/26/2015 14:56:55 --

mdtest-1.8.3 was launched with 1 total task(s) on 1 nodes
Command line used: mdtest -I 1000000 -i 5 -d /mnt/lustre/test1/shared_1000k
Path: /mnt/lustre/test1
FS: 3.9 TiB   Used FS: 0.1%   Inodes: 58.5 Mi   Used Inodes: 0.0%

1 tasks, 1000000 files/directories
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;It has been more than 3 hours, and still running.  James: how long did it take in your run? Did I do sth wrong here?&lt;/p&gt;</comment>
                            <comment id="125323" author="simmonsja" created="Thu, 27 Aug 2015 01:42:05 +0000"  >&lt;p&gt;It really does take that long &lt;img class=&quot;emoticon&quot; src=&quot;https://jira.whamcloud.com/images/icons/emoticons/sad.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="125598" author="di.wang" created="Sat, 29 Aug 2015 00:18:06 +0000"  >&lt;p&gt;Just update, I tried this several times with build 34198, and  I can not reproduce the problem. My cluster has 4 MDSs x 4 MDTs (16 MDTs), 2 OSS x 4 OSTs (8 OSTs). &lt;/p&gt;

&lt;p&gt;James: could you please retry this on current master if this failure is still there?&lt;/p&gt;</comment>
                            <comment id="126982" author="simmonsja" created="Thu, 10 Sep 2015 19:32:16 +0000"  >&lt;p&gt;With the latest master and a few patches this problem still exist. The &quot;ll_prep_inode&quot; errors are gone now. I tried to debug it with lctl debug but turning on debug hides the race condition. Do you know what areas I should add old fashion printks to see what is causing the failure?&lt;/p&gt;</comment>
                            <comment id="126990" author="di.wang" created="Thu, 10 Sep 2015 20:56:59 +0000"  >&lt;p&gt;Hmm, It seems there might be two places in mdtest.c, which can trigger the problem.&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;#else
      if (rmdir(dir) == -1) {
        FAIL(&quot;Unable to remove directory&quot;);
      }
#endif
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;and &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;        if (rmdir(temp_path) == -1) {
          FAIL(&quot;Unable to remove directory&quot;);
        }
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;So could you please add some debug information here to print out the dir or temp_path when these rmdir fail happens.&lt;/p&gt;

&lt;p&gt;So if rmdir() fails, on the kernel side, that is probably caused by two reasons.&lt;/p&gt;

&lt;p&gt;1. path resolution failed for &quot;dir&quot; or &quot;temp_path&quot;, I am not sure there are good way to printk the error message, without changing the kernel. But let&apos;s see what are these directories are when the failure happens.&lt;/p&gt;

&lt;p&gt;2. rmdir fails in ll_rmdir(), for this failure, you can simply add a patch 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;--- a/lustre/llite/namei.c
+++ b/lustre/llite/namei.c
@@ -1198,7 +1198,10 @@ static int ll_rmdir(struct inode *dir, struct dentry *dchild)
         if (rc == 0) {
                 ll_update_times(request, dir);
                 ll_stats_ops_tally(ll_i2sbi(dir), LPROC_LL_RMDIR, 1);
-        }
+        } else {
+               CERROR(&quot;unlink fails :name=%.*s, dir=&quot;DFID&quot;(%p) rc: %d\n&quot;,
+                       name-&amp;gt;len, name-&amp;gt;name, PFID(ll_inode2fid(dir)), dir, rc);
+       }
 
         ptlrpc_req_finished(request);
         RETURN(rc);
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;TBH, I suspect the failure is caused by 1.  Sigh, I can not reproduce it locally. &lt;img class=&quot;emoticon&quot; src=&quot;https://jira.whamcloud.com/images/icons/emoticons/sad.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="127523" author="simmonsja" created="Wed, 16 Sep 2015 17:45:45 +0000"  >&lt;p&gt;Good news I can duplicate this problem on a non-Cray node. I&apos;m debugging it. Will let you know what I find.&lt;/p&gt;</comment>
                            <comment id="127564" author="simmonsja" created="Wed, 16 Sep 2015 21:41:35 +0000"  >&lt;p&gt;The ll_prep_inode errors came back so I back track to see what was causing the error. From my cheesy debugging I found this:&lt;/p&gt;

&lt;p&gt;[  251.338486] Lustre: looks like a bad stripe&lt;br/&gt;
[  251.342779] Lustre: lmv_revalidate_slaves failed&lt;br/&gt;
[  251.347499] Lustre: md_merge_attr failed to validate the lsm&lt;br/&gt;
[  251.353263] Lustre: ll_update_lsm_md failed when called from ll_update_inode&lt;br/&gt;
[  251.360412] Lustre: ll_update_inode return -2&lt;br/&gt;
[  251.364877] Lustre: ll_read_inode2 failed&lt;br/&gt;
[  251.369061] Lustre: Skipped 1 previous similar message&lt;br/&gt;
[  251.374321] LustreError: 18546:0:(llite_lib.c:2305:ll_prep_inode()) new_inode -fatal: rc -2&lt;/p&gt;

&lt;p&gt;So the problem is from lmv_revalidate_slaves. It&apos;s reporting back a ENOENT due to body-&amp;gt;mbo_nlink &amp;lt; 2 condition. The comment points to a race between close(unlink) and getattr.&lt;/p&gt;</comment>
                            <comment id="127571" author="di.wang" created="Wed, 16 Sep 2015 22:31:43 +0000"  >&lt;p&gt;James, thanks for updating, very useful information. Do you happen to know who calls ll_prep_inode() ? Thanks!&lt;/p&gt;</comment>
                            <comment id="127573" author="simmonsja" created="Wed, 16 Sep 2015 22:54:25 +0000"  >&lt;p&gt;Better yet I did a dump_stack at where the code fails. You have complete back traces. I attached the file to this ticket.&lt;/p&gt;</comment>
                            <comment id="127575" author="di.wang" created="Wed, 16 Sep 2015 23:12:11 +0000"  >&lt;p&gt;Could you please tell me how to reproduce the problem? still use mdtest with single thread on 1 node? thanks.&lt;/p&gt;</comment>
                            <comment id="127579" author="simmonsja" created="Wed, 16 Sep 2015 23:29:44 +0000"  >&lt;p&gt;Doesn&apos;t matter how many client nodes. I use 400 below but use whatever you want. What matters the number of files per directory. Remember this is with remote_dir=-1 and remote_dir_gid=-1. Try using 8 MDS servers but any number greater than 1 will do:&lt;/p&gt;

&lt;p&gt;lfs setdirstripe -c 8 /lustre/whatever/jsimmons/dne2_8_mds_md_test&lt;br/&gt;
lfs setdirstripe -c 8 -D /lustre/whatever/jsimmons/dne2_8_mds_md_test     (to make all directories under it the same)&lt;br/&gt;
mkdir /lustre/whatever/jsimmons/dne2_8_mds_md_test/shared_1000k_400&lt;br/&gt;
mpi_run -n 400 mdtest -I 2500 -i 5 -d /lustre/whatever/jsimmons/dne2_8_mds_md_test/shared_1000k_400&lt;/p&gt;

&lt;p&gt;When mdtest goes to delete the files mdtest will fail. At least it does for me.&lt;/p&gt;</comment>
                            <comment id="127697" author="di.wang" created="Thu, 17 Sep 2015 20:05:12 +0000"  >&lt;p&gt;Hmm, during slaves revalidation, it seems the striped directory has been locked with both LOOKUP and UPDATE locks. I do not understand why the master stripe nlink turns to 1 at that time. &lt;img class=&quot;emoticon&quot; src=&quot;https://jira.whamcloud.com/images/icons/emoticons/sad.png&quot; height=&quot;16&quot; width=&quot;16&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/p&gt;

&lt;p&gt;James: Could you please collect the debug log when the failure happens?  (-1) would be best, but if there is race, just collect the default one please. Thanks!&lt;/p&gt;</comment>
                            <comment id="127700" author="simmonsja" created="Thu, 17 Sep 2015 20:15:23 +0000"  >&lt;p&gt;On the MDS or the client?&lt;/p&gt;</comment>
                            <comment id="127702" author="di.wang" created="Thu, 17 Sep 2015 20:34:20 +0000"  >&lt;p&gt;Both would be best. If not, then only client would be ok. Thanks&lt;/p&gt;</comment>
                            <comment id="127758" author="di.wang" created="Fri, 18 Sep 2015 06:53:13 +0000"  >&lt;p&gt;Ok, I tried to reproduce it on Opensfs cluster with 8 MDTs (4 MDS) and 4 OSTs(2 OSS). 9 clients.  Just start the test, it has been an hour, still can not see this problem. I will check tomorrow morning to see how it goes?&lt;/p&gt;

&lt;p&gt;James: could you please tell me all of your patches(based on master)? Thanks.&lt;/p&gt;</comment>
                            <comment id="127788" author="simmonsja" created="Fri, 18 Sep 2015 16:02:05 +0000"  >&lt;p&gt;I did you one better. Grab my source rpm at &lt;a href=&quot;http://www.infradead.org/~jsimmons/lustre-2.7.59-1_g703195a.src.rpm&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://www.infradead.org/~jsimmons/lustre-2.7.59-1_g703195a.src.rpm&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="127800" author="di.wang" created="Fri, 18 Sep 2015 17:00:56 +0000"  >&lt;p&gt;James: thanks. And usually how soon did you met the failure? after a few minutes? a few hours after starting the test?&lt;/p&gt;</comment>
                            <comment id="127835" author="simmonsja" created="Fri, 18 Sep 2015 18:20:33 +0000"  >&lt;p&gt;The first run of mdtest takes a while before failure. Once it fails you can duplicate the failure with rm -rf the left over files from mdtest.&lt;/p&gt;

&lt;p&gt;I attached the logs for my latest test from the client node and the all the MDS servers I have. &lt;/p&gt;</comment>
                            <comment id="127913" author="di.wang" created="Sat, 19 Sep 2015 07:32:31 +0000"  >&lt;p&gt;Ah, It seems this check in lmv_revalidate_slaves is not correct&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;                    if (unlikely(body-&amp;gt;mbo_nlink &amp;lt; 2)) {
                                /* If this is bad stripe, most likely due
                                 * to the race between close(unlink) and
                                 * getattr, let&apos;s return -EONENT, so llite
                                 * will revalidate the dentry see
                                 * ll_inode_revalidate_fini() */
                                CDEBUG(D_INODE, &quot;%s: nlink %d &amp;lt; 2 bad stripe %d&quot;
                                       DFID &quot;:&quot; DFID&quot;\n&quot;,
                                       obd-&amp;gt;obd_name, body-&amp;gt;mbo_nlink, i,
                                       PFID(&amp;amp;lsm-&amp;gt;lsm_md_oinfo[i].lmo_fid),
                                       PFID(&amp;amp;lsm-&amp;gt;lsm_md_oinfo[0].lmo_fid));

                                if (it.d.lustre.it_lock_mode &amp;amp;&amp;amp; lockh) {
                                        ldlm_lock_decref_and_cancel(lockh,
                                                 it.d.lustre.it_lock_mode);
                                        it.d.lustre.it_lock_mode = 0;
                                }

                                GOTO(cleanup, rc = -ENOENT);
                        }
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Because &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;        /*
         * The DIR_NLINK feature allows directories to exceed LDISKFS_LINK_MAX
         * (65000) subdirectories by storing &quot;1&quot; in i_nlink if the link count
         * would otherwise overflow. Directory tranversal tools understand
         * that (st_nlink == 1) indicates that the filesystem dose not track
         * hard links count on the directory, and will not abort subdirectory
         * scanning early once (st_nlink - 2) subdirs have been found.
         *
         * This also has to properly handle the case of inodes with nlink == 0
         * in case they are being linked into the PENDING directory
         */
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;I will remove this.&lt;/p&gt;</comment>
                            <comment id="127914" author="gerrit" created="Sat, 19 Sep 2015 07:47:53 +0000"  >&lt;p&gt;wangdi (di.wang@intel.com) uploaded a new patch: &lt;a href=&quot;http://review.whamcloud.com/16490&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/16490&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-6984&quot; title=&quot;Failure to delete over a million files in a DNE2 directory.&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-6984&quot;&gt;&lt;del&gt;LU-6984&lt;/del&gt;&lt;/a&gt; lmv: remove nlink check in lmv_revalidate_slaves&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: 1&lt;br/&gt;
Commit: d676ea2ab1f55dfa8e04ed5fa074444315808329&lt;/p&gt;</comment>
                            <comment id="127935" author="simmonsja" created="Sun, 20 Sep 2015 15:37:44 +0000"  >&lt;p&gt;So far your fix seems to have resolved this issue. Tomorrow I will run the mdtest to see if everything works.&lt;/p&gt;</comment>
                            <comment id="129178" author="gerrit" created="Fri, 2 Oct 2015 19:20:11 +0000"  >&lt;p&gt;Oleg Drokin (oleg.drokin@intel.com) merged in patch &lt;a href=&quot;http://review.whamcloud.com/16490/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/16490/&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-6984&quot; title=&quot;Failure to delete over a million files in a DNE2 directory.&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-6984&quot;&gt;&lt;del&gt;LU-6984&lt;/del&gt;&lt;/a&gt; lmv: remove nlink check in lmv_revalidate_slaves&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: &lt;br/&gt;
Commit: 5725559786086f328f4c899936967eb6e5dce46e&lt;/p&gt;</comment>
                            <comment id="129230" author="simmonsja" created="Sat, 3 Oct 2015 00:33:47 +0000"  >&lt;p&gt;I have tested this patch extensively and it has resolved this issue. Now that it has landed we can close this ticket.&lt;/p&gt;</comment>
                            <comment id="129234" author="pjones" created="Sat, 3 Oct 2015 04:21:28 +0000"  >&lt;p&gt;Right you are James! &lt;img class=&quot;emoticon&quot; src=&quot;https://jira.whamcloud.com/images/icons/emoticons/smile.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>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Related</name>
                                            <outwardlinks description="is related to ">
                                        <issuelink>
            <issuekey id="31033">LU-6831</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is related to">
                                                        </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                            <attachment id="18603" name="LU-6381.log" size="209" author="simmonsja" created="Tue, 11 Aug 2015 14:45:07 +0000"/>
                            <attachment id="18917" name="LU-6984-backtrace.log" size="84666" author="simmonsja" created="Wed, 16 Sep 2015 22:54:25 +0000"/>
                            <attachment id="18613" name="lctldump.20150813" size="236" author="simmonsja" created="Thu, 13 Aug 2015 18:17:10 +0000"/>
                            <attachment id="18933" name="lu-6984-Sept-18-2015.tgz" size="243" author="simmonsja" created="Fri, 18 Sep 2015 18:20:33 +0000"/>
                    </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_10030" key="com.atlassian.jira.plugin.system.customfieldtypes:labels">
                        <customfieldname>Epic/Theme</customfieldname>
                        <customfieldvalues>
                                        <label>dne</label>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_10390" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hzxk7z:</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>