<br><br><div class="gmail_quote">On Fri, Sep 21, 2012 at 10:07 AM, Eric Sandeen <span dir="ltr">&lt;<a href="mailto:sandeen@sandeen.net" target="_blank">sandeen@sandeen.net</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div class="im">On 9/21/12 10:51 AM, Anand Tiwari wrote:<br>
&gt;<br>
&gt;<br>
&gt; On Thu, Sep 20, 2012 at 11:00 PM, Eric Sandeen &lt;<a href="mailto:sandeen@sandeen.net">sandeen@sandeen.net</a><br>
</div><div><div class="h5">&gt; &lt;mailto:<a href="mailto:sandeen@sandeen.net">sandeen@sandeen.net</a>&gt;&gt; wrote:<br>
&gt;<br>
&gt; On 9/20/12 7:40 PM, Anand Tiwari wrote:<br>
&gt;&gt; Hi All,<br>
&gt;&gt;<br>
&gt;&gt; I have been looking into an issue with xfs_repair with realtime sub<br>
&gt;&gt; volume. some times while running xfs_repair I see following errors<br>
&gt;&gt;<br>
&gt;&gt; ---------------------------- data fork in rt inode 134 claims used<br>
&gt;&gt; rt block 19607 bad data fork in inode 134 would have cleared inode<br>
&gt;&gt; 134 data fork in rt inode 135 claims used rt block 29607 bad data<br>
&gt;&gt; fork in inode 135 would have cleared inode 135 - agno = 1 - agno =<br>
&gt;&gt; 2 - agno = 3 - process newly discovered inodes... Phase 4 - check<br>
&gt;&gt; for duplicate blocks... - setting up duplicate extent list... -<br>
&gt;&gt; check for inodes claiming duplicate blocks... - agno = 0 - agno =<br>
&gt;&gt; 1 - agno = 2 - agno = 3 entry &quot;test-011&quot; in shortform directory 128<br>
&gt;&gt; references free inode 134 would have junked entry &quot;test-011&quot; in<br>
&gt;&gt; directory inode 128 entry &quot;test-0&quot; in shortform directory 128<br>
&gt;&gt; references free inode 135 would have junked entry &quot;test-0&quot; in<br>
&gt;&gt; directory inode 128 data fork in rt ino 134 claims dup rt<br>
&gt;&gt; extent,off - 0, start - 7942144, count 2097000 bad data fork in<br>
&gt;&gt; inode 134 would have cleared inode 134 data fork in rt ino 135<br>
&gt;&gt; claims dup rt extent,off - 0, start - 13062144, count 2097000 bad<br>
&gt;&gt; data fork in inode 135 would have cleared inode 135 No modify flag<br>
&gt;&gt; set, skipping phase 5 ------------------------<br>
&gt;&gt;<br>
&gt;&gt; Here is the bmap for both inodes.<br>
&gt;&gt;<br>
&gt;&gt; xfs_db&gt; inode 135 xfs_db&gt; bmap data offset 0 startblock 13062144<br>
&gt;&gt; (12/479232) count 2097000 flag 0 data offset 2097000 startblock<br>
&gt;&gt; 15159144 (14/479080) count 2097000 flag 0 data offset 4194000<br>
&gt;&gt; startblock 17256144 (16/478928) count 2097000 flag 0 data offset<br>
&gt;&gt; 6291000 startblock 19353144 (18/478776) count 2097000 flag 0 data<br>
&gt;&gt; offset 8388000 startblock 21450144 (20/478624) count 2097000 flag<br>
&gt;&gt; 0 data offset 10485000 startblock 23547144 (22/478472) count<br>
&gt;&gt; 2097000 flag 0 data offset 12582000 startblock 25644144 (24/478320)<br>
&gt;&gt; count 2097000 flag 0 data offset 14679000 startblock 27741144<br>
&gt;&gt; (26/478168) count 2097000 flag 0 data offset 16776000 startblock<br>
&gt;&gt; 29838144 (28/478016) count 2097000 flag 0 data offset 18873000<br>
&gt;&gt; startblock 31935144 (30/477864) count 1607000 flag 0 xfs_db&gt; inode<br>
&gt;&gt; 134 xfs_db&gt; bmap data offset 0 startblock 7942144 (7/602112) count<br>
&gt;&gt; 2097000 flag 0 data offset 2097000 startblock 10039144 (9/601960)<br>
&gt;&gt; count 2097000 flag 0 data offset 4194000 startblock 12136144<br>
&gt;&gt; (11/601808) count 926000 flag 0<br>
&gt;<br>
&gt; It&#39;s been a while since I thought about realtime, but -<br>
&gt;<br>
&gt; That all seems fine, I don&#39;t see anything overlapping there, they<br>
&gt; are all perfectly adjacent, though of interesting size.<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt; by looking into xfs_repair code, it looks like repair does not<br>
&gt;&gt; handle a case where we have more than one extent in a real-time<br>
&gt;&gt; extent. following is code from repair/dinode.c: process_rt_rec<br>
&gt;<br>
&gt; &quot;more than one extent in a real-time extent?&quot;  I&#39;m not sure what that<br>
&gt; means.<br>
&gt;<br>
&gt; Every extent above is length 2097000 blocks, and they are adjacent.<br>
&gt; But you say your realtime extent size is 512 blocks ... which doesn&#39;t<br>
&gt; go into 2097000 evenly.   So that&#39;s odd, at least.<br>
&gt;<br>
&gt;<br>
&gt; well, lets look at first extent<br>
&gt;&gt; data offset 0 startblock 13062144 (12/479232) count 2097000 flag 0<br>
&gt;&gt; data offset 2097000 startblock 15159144 (14/479080) count 2097000<br>
&gt;&gt; flag 0<br>
&gt; startblock is aligned and rtext is 25512,  since the blockcount is<br>
&gt; not multiple of 512, last realtime extent ( 25512 + 4095) is<br>
&gt; partially used, 360 blks second extent start from realtime extent<br>
&gt; 29607 (ie 25512 + 4095).  so, yes, extents are not overlapping, but<br>
&gt; 29607 realtime extent is shared by two extents. Now once xfs_repair<br>
&gt; detects this case in phase 2, it bails out and clears that inode. I<br>
&gt; think  search for duplicate extent is done in phase 4, but inode is<br>
&gt; marked already.<br>
<br>
</div></div>... ok I realize I was misunderstanding some things about the realtime<br>
volume.  (It&#39;s been a very long time since I thought about it).  Still,<br>
I&#39;d like to look at the metadump image if possible.<br>
<br>
Thanks,<br>
-Eric<br>
</blockquote></div><br><br>metadump attached<br>