<div>xfsprogs: repair hang in find secondary sb on device removal<br> <br>xfs_repair does not handle read() error, while searching secondary<br>superblock.This problem is identified with a simple test case.<br> <br>Delete primary superblock of xfs partition with<br>
        #dd if=/dev/zero of=/dev/sda1 bs=512 count=1<br>        #sync<br>Run xfs_repair,<br>While its searching for secondary superblock, remove the storage.<br>xfs_repair will loop in never ending ............<br> <br>Signed-off-by: Ajeet Yadav &lt;<a href="mailto:ajeet.yadav.77@gmail.com">ajeet.yadav.77@gmail.com</a>&gt;<br>
 <br>diff -Nurp xfsprogs-3.0.5/repair/sb.c xfsprogs-3.0.5-dirty/repair/sb.c<br>--- xfsprogs-3.0.5/repair/sb.c  2011-01-28 20:23:02.000000000 +0900<br>+++ xfsprogs-3.0.5-dirty/repair/sb.c    2011-02-01 15:46:35.000000000 +0900<br>
@@ -122,7 +122,7 @@ find_secondary_sb(xfs_sb_t *rsb)<br>                        done = 1;<br>                }<br> <br>-               if (!done &amp;&amp; (bsize = read(x.dfd, sb, BSIZE)) == 0)  {<br>+               if (!done &amp;&amp; (bsize = read(x.dfd, sb, BSIZE)) &lt;= 0)  {<br>
                        done = 1;<br>                }</div>
<div> </div>