<div class="gmail_quote">
<div>Dear member,</div>
<div>If I remove USB flash storage from PC/ARM/MIPS target (i.e without umount) while copying file to XFS partition and connect it to MIPS target I always get</div>
<div>XFS: xlog_recover_process_data: bad clientid<br>XFS: log mount/recovery failed: error 5<br>XFS: log mount failed</div>
<div>This problem does not occur, if I connect the same USB flash to PC/ARM target.</div>
<div>I have tested this on 2.6.30 - 2.6.34 (It everywhere when concerend with MIPS)</div>
<div> </div>
<div>I had two workaround to avoid this problem on MIPS, but I wish to know the exact reason of this problme on MIPS.</div>
<div>I am really tired and giving up, so finally thought of taking your help, your guidence can help me.</div>
<div> </div>
<div>1. __flush_cache_all() at the begining of each iteration of while loop in function xlog_recover_process_data(). </div>
<div> </div>
<div> while ((dp < lp) && num_logops) {</div>
<div>+ __flush_cache_all() ;<br> ASSERT(dp + sizeof(xlog_op_header_t) <= lp);<br> ohead = (xlog_op_header_t *)dp;<br> dp += sizeof(xlog_op_header_t);<br> if (ohead->oh_clientid != XFS_TRANSACTION &&<br>
ohead->oh_clientid != XFS_LOG) {<br> xlog_warn(<br> "XFS: xlog_recover_process_data: bad clientid")</div>
<div> </div>
<div>OR</div>
<div> </div>
<div>2. Provide new buffer in each call to xlog_bread in function xlog_do_recovery_pass().</div>
<div> </div>
<div> if (error)<br> goto bread_err2;</div>
<div> /* blocks in data section */<br> bblks = (int)BTOBB(be32_to_cpu(rhead->h_len));</div>
<div>+ xlog_put_bp(dbp);<br>+ dbp = xlog_get_bp(log, BTOBB(h_size));<br> error = xlog_bread(log, blk_no + hblks, bblks, dbp,<br> &offset);<br> if (error)<br>
goto bread_err2; </div>
<div> </div>
<div>WIth Regards</div>
<div>Ajeet Yadav</div><font color="#888888">
<div> </div></font></div><br>