http://oss.sgi.com/bugzilla/show_bug.cgi?id=901
Summary: XFS: bad clientid on recovery on MIPS (VIPT cache)
Product: XFS
Version: Current
Platform: Other
OS/Version: Linux
Status: NEW
Severity: major
Priority: P1
Component: XFS kernel code
AssignedTo: xfs-masters@xxxxxxxxxxx
ReportedBy: ajeet.yadav.77@xxxxxxxxx
Estimated Hours: 0.0
Classification: Unclassified
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
--
Configure bugmail: http://oss.sgi.com/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.
|