XFS: bad clientid on recovery on MIPS (VIPT cache)

Ajeet Yadav ajeet.yadav.77 at gmail.com
Thu Oct 21 07:11:43 CDT 2010


Dear member,
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
XFS: xlog_recover_process_data: bad clientid
XFS: log mount/recovery failed: error 5
XFS: log mount failed
This problem does not occur, if I connect the same USB flash to PC/ARM
target.
I have tested this on 2.6.30 - 2.6.34 (It everywhere when concerend with
MIPS)

I had two workaround to avoid this problem on MIPS, but I wish to know the
exact reason of this problme on MIPS.
I am really tired and giving up, so finally thought of taking your help,
your guidence can help me.

1. __flush_cache_all() at the begining of each iteration of while loop in
function xlog_recover_process_data().

     while ((dp < lp) && num_logops) {
+       __flush_cache_all() ;
         ASSERT(dp + sizeof(xlog_op_header_t) <= lp);
         ohead = (xlog_op_header_t *)dp;
         dp += sizeof(xlog_op_header_t);
         if (ohead->oh_clientid != XFS_TRANSACTION &&
             ohead->oh_clientid != XFS_LOG) {
             xlog_warn(
             "XFS: xlog_recover_process_data: bad clientid")

OR

2. Provide new buffer in each call to xlog_bread in function
xlog_do_recovery_pass().

          if (error)
              goto bread_err2;
          /* blocks in data section */
          bblks = (int)BTOBB(be32_to_cpu(rhead->h_len));
+        xlog_put_bp(dbp);
+        dbp = xlog_get_bp(log, BTOBB(h_size));
          error = xlog_bread(log, blk_no + hblks, bblks, dbp,
                                     &offset);
          if (error)
              goto bread_err2;

WIth Regards
Ajeet Yadav
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://oss.sgi.com/pipermail/xfs/attachments/20101021/8df86f69/attachment.htm>


More information about the xfs mailing list