<div dir="ltr"><div>Terrific. Thank you Eric, Brian, and xfs experts. You have helped us a lot.<br></div>I'll test the path.<br></div><div class="gmail_extra"><br><br><div class="gmail_quote">2013/4/23 Eric Sandeen <span dir="ltr"><<a href="mailto:sandeen@sandeen.net" target="_blank">sandeen@sandeen.net</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On 4/22/13 7:08 PM, Dave Chinner wrote:<br>
> On Mon, Apr 22, 2013 at 02:59:54PM -0500, Eric Sandeen wrote:<br>
>> On 4/15/13 6:14 PM, Brian Foster wrote:<br>
>>> Hi,<br>
>>><br>
>>> Thanks for the data in the previous thread:<br>
>>><br>
>>> <a href="http://oss.sgi.com/archives/xfs/2013-04/msg00327.html" target="_blank">http://oss.sgi.com/archives/xfs/2013-04/msg00327.html</a><br>
>>><br>
>>> I'm spinning off a new thread specifically for this because the original<br>
>>> thread is already too large and scattered to track. As Eric stated,<br>
>>> please try to keep data contained in as few messages as possible.<br>
>>><br>
>><br>
>> Well, it's always simple in the end.  It just took a lot of debugging<br>
>> to figure out what was happening - we do appreciate your help with that!<br>
>><br>
>> We were able to create a local reproducer, and it looks like<br>
>> this patch fixes things:<br>
>><br>
>> commit aae8a97d3ec30788790d1720b71d76fd8eb44b73<br>
>> Author: Aneesh Kumar K.V <<a href="mailto:aneesh.kumar@linux.vnet.ibm.com">aneesh.kumar@linux.vnet.ibm.com</a>><br>
>> Date:   Sat Jan 29 18:43:27 2011 +0530<br>
>><br>
>>     fs: Don't allow to create hardlink for deleted file<br>
><br>
> Good find Eric - great work on the reproducer script.<br>
><br>
> FWIW, can you confirm that a debug kernel assert fails<br>
> with a non-zero link count in xfs_bumplink() with your test case?<br>
><br>
> int<br>
> xfs_bumplink(<br>
>         xfs_trans_t *tp,<br>
>         xfs_inode_t *ip)<br>
> {<br>
>         xfs_trans_ichgtime(tp, ip, XFS_ICHGTIME_CHG);<br>
><br>
>>>>>>   ASSERT(ip->i_d.di_nlink > 0);<br>
<br>
</div></div>Yep, it does, I put a printk in there when I was testing<br>
and it fired.<br>
<br>
Guess we should have tested a debug xfs right off the bat ;)<br>
<div class="im"><br>
>         ip->i_d.di_nlink++;<br>
>         inc_nlink(VFS_I(ip));<br>
><br>
> If it does, we should consider this a in-memory corruption case and<br>
> return and trigger a shutdown here....<br>
<br>
</div>I suppose that makes sense, it'd be a much less cryptic failure for<br>
something that will fail soon anyway.<br>
<br>
-Eric<br>
<br>
> Cheers,<br>
><br>
> Dave.<br>
><br>
<br>
</blockquote></div><br><br clear="all"><br>-- <br>·ûÓÀÌÎ
</div>