@ -92,7 +92,7 @@ xlog_get_bp(
int nbblks )
{
if ( ! xlog_buf_bbcount_valid ( log , nbblks ) ) {
xlog_warn ( " XFS: Invalid block length (0x%x) given for buffer" ,
xfs_warn ( log - > l_mp , " Invalid block length (0x%x) for buffer " ,
nbblks ) ;
XFS_ERROR_REPORT ( __func__ , XFS_ERRLEVEL_HIGH , log - > l_mp ) ;
return NULL ;
@ -160,7 +160,7 @@ xlog_bread_noalign(
int error ;
if ( ! xlog_buf_bbcount_valid ( log , nbblks ) ) {
xlog_warn ( " XFS: Invalid block length (0x%x) given for buffer" ,
xfs_warn ( log - > l_mp , " Invalid block length (0x%x) for buffer " ,
nbblks ) ;
XFS_ERROR_REPORT ( __func__ , XFS_ERRLEVEL_HIGH , log - > l_mp ) ;
return EFSCORRUPTED ;
@ -219,7 +219,7 @@ xlog_bwrite(
int error ;
if ( ! xlog_buf_bbcount_valid ( log , nbblks ) ) {
xlog_warn ( " XFS: Invalid block length (0x%x) given for buffer" ,
xfs_warn ( log - > l_mp , " Invalid block length (0x%x) for buffer " ,
nbblks ) ;
XFS_ERROR_REPORT ( __func__ , XFS_ERRLEVEL_HIGH , log - > l_mp ) ;
return EFSCORRUPTED ;
@ -254,9 +254,9 @@ xlog_header_check_dump(
xfs_mount_t * mp ,
xlog_rec_header_t * head )
{
cmn_err ( CE_DEBUG , " %s: SB : uuid = %pU, fmt = %d \n " ,
xfs_debug ( mp , " %s: SB : uuid = %pU, fmt = %d \n " ,
__func__ , & mp - > m_sb . sb_uuid , XLOG_FMT ) ;
cmn_err ( CE_DEBUG , " log : uuid = %pU, fmt = %d \n " ,
xfs_debug ( mp , " log : uuid = %pU, fmt = %d \n " ,
& head - > h_fs_uuid , be32_to_cpu ( head - > h_fmt ) ) ;
}
# else
@ -279,15 +279,15 @@ xlog_header_check_recover(
* a dirty log created in IRIX .
*/
if ( unlikely ( be32_to_cpu ( head - > h_fmt ) ! = XLOG_FMT ) ) {
xlog_warn (
" XFS: dirty log written in incompatible format - can't recover" ) ;
xfs_warn ( mp ,
" dirty log written in incompatible format - can't recover " ) ;
xlog_header_check_dump ( mp , head ) ;
XFS_ERROR_REPORT ( " xlog_header_check_recover(1) " ,
XFS_ERRLEVEL_HIGH , mp ) ;
return XFS_ERROR ( EFSCORRUPTED ) ;
} else if ( unlikely ( ! uuid_equal ( & mp - > m_sb . sb_uuid , & head - > h_fs_uuid ) ) ) {
xlog_warn (
" XFS: dirty log entry has mismatched uuid - can't recover" ) ;
xfs_warn ( mp ,
" dirty log entry has mismatched uuid - can't recover " ) ;
xlog_header_check_dump ( mp , head ) ;
XFS_ERROR_REPORT ( " xlog_header_check_recover(2) " ,
XFS_ERRLEVEL_HIGH , mp ) ;
@ -312,9 +312,9 @@ xlog_header_check_mount(
* h_fs_uuid is nil , we assume this log was last mounted
* by IRIX and continue .
*/
xlog_warn ( " XFS: nil uuid in log - IRIX style log" ) ;
xfs_warn ( mp , " nil uuid in log - IRIX style log " ) ;
} else if ( unlikely ( ! uuid_equal ( & mp - > m_sb . sb_uuid , & head - > h_fs_uuid ) ) ) {
xlog_warn ( " XFS: log has mismatched uuid - can't recover" ) ;
xfs_warn ( mp , " log has mismatched uuid - can't recover " ) ;
xlog_header_check_dump ( mp , head ) ;
XFS_ERROR_REPORT ( " xlog_header_check_mount " ,
XFS_ERRLEVEL_HIGH , mp ) ;
@ -490,8 +490,8 @@ xlog_find_verify_log_record(
for ( i = ( * last_blk ) - 1 ; i > = 0 ; i - - ) {
if ( i < start_blk ) {
/* valid log record not found */
xlog_warn (
" XFS: Log inconsistent (didn't find previous header)" ) ;
xfs_warn ( log - > l_mp ,
" Log inconsistent (didn't find previous header) " ) ;
ASSERT ( 0 ) ;
error = XFS_ERROR ( EIO ) ;
goto out ;
@ -591,12 +591,12 @@ xlog_find_head(
* mkfs etc write a dummy unmount record to a fresh
* log so we can store the uuid in there
*/
xlog_warn ( " XFS: totally zeroed log" ) ;
xfs_warn ( log - > l_mp , " totally zeroed log " ) ;
}
return 0 ;
} else if ( error ) {
xlog_warn ( " XFS: empty log check failed" ) ;
xfs_warn ( log - > l_mp , " empty log check failed " ) ;
return error ;
}
@ -819,7 +819,7 @@ validate_head:
xlog_put_bp ( bp ) ;
if ( error )
xlog_warn ( " XFS: failed to find log head" ) ;
xfs_warn ( log - > l_mp , " failed to find log head " ) ;
return error ;
}
@ -912,7 +912,7 @@ xlog_find_tail(
}
}
if ( ! found ) {
xlog_warn ( " XFS: xlog_find_tail : couldn't find sync record " ) ;
xfs_warn ( log - > l_mp , " %s : couldn't find sync record " , __func__ ) ;
ASSERT ( 0 ) ;
return XFS_ERROR ( EIO ) ;
}
@ -1028,7 +1028,7 @@ done:
xlog_put_bp ( bp ) ;
if ( error )
xlog_warn ( " XFS: failed to locate log tail" ) ;
xfs_warn ( log - > l_mp , " failed to locate log tail " ) ;
return error ;
}
@ -1092,7 +1092,8 @@ xlog_find_zeroed(
* the first block must be 1. If it ' s not , maybe we ' re
* not looking at a log . . . Bail out .
*/
xlog_warn ( " XFS: Log inconsistent or not a log (last==0, first!=1) " ) ;
xfs_warn ( log - > l_mp ,
" Log inconsistent or not a log (last==0, first!=1) " ) ;
return XFS_ERROR ( EINVAL ) ;
}
@ -1506,8 +1507,8 @@ xlog_recover_add_to_trans(
if ( list_empty ( & trans - > r_itemq ) ) {
/* we need to catch log corruptions here */
if ( * ( uint * ) dp ! = XFS_TRANS_HEADER_MAGIC ) {
xlog_warn ( " XFS: xlog_recover_add_to_trans: "
" bad header magic number " ) ;
xfs_warn ( log - > l_mp , " %s: bad header magic number " ,
__func__ ) ;
ASSERT ( 0 ) ;
return XFS_ERROR ( EIO ) ;
}
@ -1534,8 +1535,8 @@ xlog_recover_add_to_trans(
if ( item - > ri_total = = 0 ) { /* first region to be added */
if ( in_f - > ilf_size = = 0 | |
in_f - > ilf_size > XLOG_MAX_REGIONS_IN_ITEM ) {
xlog_warn (
" XFS: bad number of regions (%d) in inode log format" ,
xfs_warn ( log - > l_mp ,
" bad number of regions (%d) in inode log format " ,
in_f - > ilf_size ) ;
ASSERT ( 0 ) ;
return XFS_ERROR ( EIO ) ;
@ -1592,8 +1593,9 @@ xlog_recover_reorder_trans(
list_move_tail ( & item - > ri_list , & trans - > r_itemq ) ;
break ;
default :
xlog_warn (
" XFS: xlog_recover_reorder_trans: unrecognized type of log operation " ) ;
xfs_warn ( log - > l_mp ,
" %s: unrecognized type of log operation " ,
__func__ ) ;
ASSERT ( 0 ) ;
return XFS_ERROR ( EIO ) ;
}
@ -1803,8 +1805,9 @@ xlog_recover_do_inode_buffer(
logged_nextp = item - > ri_buf [ item_index ] . i_addr +
next_unlinked_offset - reg_buf_offset ;
if ( unlikely ( * logged_nextp = = 0 ) ) {
xfs_fs_cmn_err ( CE_ALERT , mp ,
" bad inode buffer log record (ptr = 0x%p, bp = 0x%p). XFS trying to replay bad (0) inode di_next_unlinked field " ,
xfs_alert ( mp ,
" Bad inode buffer log record (ptr = 0x%p, bp = 0x%p). "
" Trying to replay bad (0) inode di_next_unlinked field. " ,
item , bp ) ;
XFS_ERROR_REPORT ( " xlog_recover_do_inode_buf " ,
XFS_ERRLEVEL_LOW , mp ) ;
@ -1863,17 +1866,17 @@ xlog_recover_do_reg_buffer(
if ( buf_f - > blf_flags &
( XFS_BLF_UDQUOT_BUF | XFS_BLF_PDQUOT_BUF | XFS_BLF_GDQUOT_BUF ) ) {
if ( item - > ri_buf [ i ] . i_addr = = NULL ) {
cmn_err ( CE_ALERT ,
xfs_alert ( mp ,
" XFS: NULL dquot in %s. " , __func__ ) ;
goto next ;
}
if ( item - > ri_buf [ i ] . i_len < sizeof ( xfs_disk_dquot_t ) ) {
cmn_err ( CE_ALERT ,
xfs_alert ( mp ,
" XFS: dquot too small (%d) in %s. " ,
item - > ri_buf [ i ] . i_len , __func__ ) ;
goto next ;
}
error = xfs_qm_dqcheck ( item - > ri_buf [ i ] . i_addr ,
error = xfs_qm_dqcheck ( mp , item - > ri_buf [ i ] . i_addr ,
- 1 , 0 , XFS_QMOPT_DOWARN ,
" dquot_buf_recover " ) ;
if ( error )
@ -1898,6 +1901,7 @@ xlog_recover_do_reg_buffer(
*/
int
xfs_qm_dqcheck (
struct xfs_mount * mp ,
xfs_disk_dquot_t * ddq ,
xfs_dqid_t id ,
uint type , /* used only when IO_dorepair is true */
@ -1924,14 +1928,14 @@ xfs_qm_dqcheck(
*/
if ( be16_to_cpu ( ddq - > d_magic ) ! = XFS_DQUOT_MAGIC ) {
if ( flags & XFS_QMOPT_DOWARN )
cmn_err ( CE_ALERT ,
xfs_alert ( mp ,
" %s : XFS dquot ID 0x%x, magic 0x%x != 0x%x " ,
str , id , be16_to_cpu ( ddq - > d_magic ) , XFS_DQUOT_MAGIC ) ;
errs + + ;
}
if ( ddq - > d_version ! = XFS_DQUOT_VERSION ) {
if ( flags & XFS_QMOPT_DOWARN )
cmn_err ( CE_ALERT ,
xfs_alert ( mp ,
" %s : XFS dquot ID 0x%x, version 0x%x != 0x%x " ,
str , id , ddq - > d_version , XFS_DQUOT_VERSION ) ;
errs + + ;
@ -1941,7 +1945,7 @@ xfs_qm_dqcheck(
ddq - > d_flags ! = XFS_DQ_PROJ & &
ddq - > d_flags ! = XFS_DQ_GROUP ) {
if ( flags & XFS_QMOPT_DOWARN )
cmn_err ( CE_ALERT ,
xfs_alert ( mp ,
" %s : XFS dquot ID 0x%x, unknown flags 0x%x " ,
str , id , ddq - > d_flags ) ;
errs + + ;
@ -1949,7 +1953,7 @@ xfs_qm_dqcheck(
if ( id ! = - 1 & & id ! = be32_to_cpu ( ddq - > d_id ) ) {
if ( flags & XFS_QMOPT_DOWARN )
cmn_err ( CE_ALERT ,
xfs_alert ( mp ,
" %s : ondisk-dquot 0x%p, ID mismatch: "
" 0x%x expected, found id 0x%x " ,
str , ddq , id , be32_to_cpu ( ddq - > d_id ) ) ;
@ -1962,9 +1966,8 @@ xfs_qm_dqcheck(
be64_to_cpu ( ddq - > d_blk_softlimit ) ) {
if ( ! ddq - > d_btimer ) {
if ( flags & XFS_QMOPT_DOWARN )
cmn_err ( CE_ALERT ,
" %s : Dquot ID 0x%x (0x%p) "
" BLK TIMER NOT STARTED " ,
xfs_alert ( mp ,
" %s : Dquot ID 0x%x (0x%p) BLK TIMER NOT STARTED " ,
str , ( int ) be32_to_cpu ( ddq - > d_id ) , ddq ) ;
errs + + ;
}
@ -1974,9 +1977,8 @@ xfs_qm_dqcheck(
be64_to_cpu ( ddq - > d_ino_softlimit ) ) {
if ( ! ddq - > d_itimer ) {
if ( flags & XFS_QMOPT_DOWARN )
cmn_err ( CE_ALERT ,
" %s : Dquot ID 0x%x (0x%p) "
" INODE TIMER NOT STARTED " ,
xfs_alert ( mp ,
" %s : Dquot ID 0x%x (0x%p) INODE TIMER NOT STARTED " ,
str , ( int ) be32_to_cpu ( ddq - > d_id ) , ddq ) ;
errs + + ;
}
@ -1986,9 +1988,8 @@ xfs_qm_dqcheck(
be64_to_cpu ( ddq - > d_rtb_softlimit ) ) {
if ( ! ddq - > d_rtbtimer ) {
if ( flags & XFS_QMOPT_DOWARN )
cmn_err ( CE_ALERT ,
" %s : Dquot ID 0x%x (0x%p) "
" RTBLK TIMER NOT STARTED " ,
xfs_alert ( mp ,
" %s : Dquot ID 0x%x (0x%p) RTBLK TIMER NOT STARTED " ,
str , ( int ) be32_to_cpu ( ddq - > d_id ) , ddq ) ;
errs + + ;
}
@ -1999,7 +2000,7 @@ xfs_qm_dqcheck(
return errs ;
if ( flags & XFS_QMOPT_DOWARN )
cmn_err ( CE_NOTE , " Re-initializing dquot ID 0x%x " , id ) ;
xfs_notice ( mp , " Re-initializing dquot ID 0x%x " , id ) ;
/*
* Typically , a repair is only requested by quotacheck .
@ -2218,9 +2219,9 @@ xlog_recover_inode_pass2(
*/
if ( unlikely ( be16_to_cpu ( dip - > di_magic ) ! = XFS_DINODE_MAGIC ) ) {
xfs_buf_relse ( bp ) ;
xfs_fs_cmn_err ( CE_ALERT , mp ,
" xfs_inode_recover: Bad inode magic number, dino ptr = 0x%p, dino bp = 0x%p, ino = %Ld" ,
dip , bp , in_f - > ilf_ino ) ;
xfs_alert ( mp ,
" %s: Bad inode magic number, dip = 0x%p, dino bp = 0x%p, ino = %Ld" ,
__func__ , dip , bp , in_f - > ilf_ino ) ;
XFS_ERROR_REPORT ( " xlog_recover_inode_pass2(1) " ,
XFS_ERRLEVEL_LOW , mp ) ;
error = EFSCORRUPTED ;
@ -2229,9 +2230,9 @@ xlog_recover_inode_pass2(
dicp = item - > ri_buf [ 1 ] . i_addr ;
if ( unlikely ( dicp - > di_magic ! = XFS_DINODE_MAGIC ) ) {
xfs_buf_relse ( bp ) ;
xfs_fs_cmn_err ( CE_ALERT , mp ,
" xfs_inode_recover : Bad inode log record, rec ptr 0x%p, ino %Ld" ,
item , in_f - > ilf_ino ) ;
xfs_alert ( mp ,
" %s : Bad inode log record, rec ptr 0x%p, ino %Ld" ,
__func__ , item , in_f - > ilf_ino ) ;
XFS_ERROR_REPORT ( " xlog_recover_inode_pass2(2) " ,
XFS_ERRLEVEL_LOW , mp ) ;
error = EFSCORRUPTED ;
@ -2263,9 +2264,10 @@ xlog_recover_inode_pass2(
XFS_CORRUPTION_ERROR ( " xlog_recover_inode_pass2(3) " ,
XFS_ERRLEVEL_LOW , mp , dicp ) ;
xfs_buf_relse ( bp ) ;
xfs_fs_cmn_err ( CE_ALERT , mp ,
" xfs_inode_recover: Bad regular inode log record, rec ptr 0x%p, ino ptr = 0x%p, ino bp = 0x%p, ino %Ld " ,
item , dip , bp , in_f - > ilf_ino ) ;
xfs_alert ( mp ,
" %s: Bad regular inode log record, rec ptr 0x%p, "
" ino ptr = 0x%p, ino bp = 0x%p, ino %Ld " ,
__func__ , item , dip , bp , in_f - > ilf_ino ) ;
error = EFSCORRUPTED ;
goto error ;
}
@ -2276,9 +2278,10 @@ xlog_recover_inode_pass2(
XFS_CORRUPTION_ERROR ( " xlog_recover_inode_pass2(4) " ,
XFS_ERRLEVEL_LOW , mp , dicp ) ;
xfs_buf_relse ( bp ) ;
xfs_fs_cmn_err ( CE_ALERT , mp ,
" xfs_inode_recover: Bad dir inode log record, rec ptr 0x%p, ino ptr = 0x%p, ino bp = 0x%p, ino %Ld " ,
item , dip , bp , in_f - > ilf_ino ) ;
xfs_alert ( mp ,
" %s: Bad dir inode log record, rec ptr 0x%p, "
" ino ptr = 0x%p, ino bp = 0x%p, ino %Ld " ,
__func__ , item , dip , bp , in_f - > ilf_ino ) ;
error = EFSCORRUPTED ;
goto error ;
}
@ -2287,9 +2290,10 @@ xlog_recover_inode_pass2(
XFS_CORRUPTION_ERROR ( " xlog_recover_inode_pass2(5) " ,
XFS_ERRLEVEL_LOW , mp , dicp ) ;
xfs_buf_relse ( bp ) ;
xfs_fs_cmn_err ( CE_ALERT , mp ,
" xfs_inode_recover: Bad inode log record, rec ptr 0x%p, dino ptr 0x%p, dino bp 0x%p, ino %Ld, total extents = %d, nblocks = %Ld " ,
item , dip , bp , in_f - > ilf_ino ,
xfs_alert ( mp ,
" %s: Bad inode log record, rec ptr 0x%p, dino ptr 0x%p, "
" dino bp 0x%p, ino %Ld, total extents = %d, nblocks = %Ld " ,
__func__ , item , dip , bp , in_f - > ilf_ino ,
dicp - > di_nextents + dicp - > di_anextents ,
dicp - > di_nblocks ) ;
error = EFSCORRUPTED ;
@ -2299,8 +2303,9 @@ xlog_recover_inode_pass2(
XFS_CORRUPTION_ERROR ( " xlog_recover_inode_pass2(6) " ,
XFS_ERRLEVEL_LOW , mp , dicp ) ;
xfs_buf_relse ( bp ) ;
xfs_fs_cmn_err ( CE_ALERT , mp ,
" xfs_inode_recover: Bad inode log rec ptr 0x%p, dino ptr 0x%p, dino bp 0x%p, ino %Ld, forkoff 0x%x " ,
xfs_alert ( mp ,
" %s: Bad inode log record, rec ptr 0x%p, dino ptr 0x%p, "
" dino bp 0x%p, ino %Ld, forkoff 0x%x " , __func__ ,
item , dip , bp , in_f - > ilf_ino , dicp - > di_forkoff ) ;
error = EFSCORRUPTED ;
goto error ;
@ -2309,9 +2314,9 @@ xlog_recover_inode_pass2(
XFS_CORRUPTION_ERROR ( " xlog_recover_inode_pass2(7) " ,
XFS_ERRLEVEL_LOW , mp , dicp ) ;
xfs_buf_relse ( bp ) ;
xfs_fs_cmn_err ( CE_ALERT , mp ,
" xfs_inode_recover : Bad inode log record length %d, rec ptr 0x%p" ,
item - > ri_buf [ 1 ] . i_len , item ) ;
xfs_alert ( mp ,
" %s : Bad inode log record length %d, rec ptr 0x%p" ,
__func__ , item - > ri_buf [ 1 ] . i_len , item ) ;
error = EFSCORRUPTED ;
goto error ;
}
@ -2398,7 +2403,7 @@ xlog_recover_inode_pass2(
break ;
default :
xlog_warn ( " XFS: xlog_recover_inode_pass2: Invalid flag " ) ;
xfs_warn ( log - > l_mp , " %s: Invalid flag " , __func__ ) ;
ASSERT ( 0 ) ;
xfs_buf_relse ( bp ) ;
error = EIO ;
@ -2467,13 +2472,11 @@ xlog_recover_dquot_pass2(
recddq = item - > ri_buf [ 1 ] . i_addr ;
if ( recddq = = NULL ) {
cmn_err ( CE_ALERT ,
" XFS: NULL dquot in %s. " , __func__ ) ;
xfs_alert ( log - > l_mp , " NULL dquot in %s. " , __func__ ) ;
return XFS_ERROR ( EIO ) ;
}
if ( item - > ri_buf [ 1 ] . i_len < sizeof ( xfs_disk_dquot_t ) ) {
cmn_err ( CE_ALERT ,
" XFS: dquot too small (%d) in %s. " ,
xfs_alert ( log - > l_mp , " dquot too small (%d) in %s. " ,
item - > ri_buf [ 1 ] . i_len , __func__ ) ;
return XFS_ERROR ( EIO ) ;
}
@ -2498,12 +2501,10 @@ xlog_recover_dquot_pass2(
*/
dq_f = item - > ri_buf [ 0 ] . i_addr ;
ASSERT ( dq_f ) ;
if ( ( error = xfs_qm_dqcheck ( recddq ,
dq_f - > qlf_id ,
0 , XFS_QMOPT_DOWARN ,
" xlog_recover_dquot_pass2 (log copy) " ) ) ) {
error = xfs_qm_dqcheck ( mp , recddq , dq_f - > qlf_id , 0 , XFS_QMOPT_DOWARN ,
" xlog_recover_dquot_pass2 (log copy) " ) ;
if ( error )
return XFS_ERROR ( EIO ) ;
}
ASSERT ( dq_f - > qlf_len = = 1 ) ;
error = xfs_read_buf ( mp , mp - > m_ddev_targp ,
@ -2523,8 +2524,9 @@ xlog_recover_dquot_pass2(
* was among a chunk of dquots created earlier , and we did some
* minimal initialization then .
*/
if ( xfs_qm_dqcheck ( ddq , dq_f - > qlf_id , 0 , XFS_QMOPT_DOWARN ,
" xlog_recover_dquot_pass2 " ) ) {
error = xfs_qm_dqcheck ( mp , ddq , dq_f - > qlf_id , 0 , XFS_QMOPT_DOWARN ,
" xlog_recover_dquot_pass2 " ) ;
if ( error ) {
xfs_buf_relse ( bp ) ;
return XFS_ERROR ( EIO ) ;
}
@ -2676,9 +2678,8 @@ xlog_recover_commit_pass1(
/* nothing to do in pass 1 */
return 0 ;
default :
xlog_warn (
" XFS: invalid item type (%d) xlog_recover_commit_pass1 " ,
ITEM_TYPE ( item ) ) ;
xfs_warn ( log - > l_mp , " %s: invalid item type (%d) " ,
__func__ , ITEM_TYPE ( item ) ) ;
ASSERT ( 0 ) ;
return XFS_ERROR ( EIO ) ;
}
@ -2707,9 +2708,8 @@ xlog_recover_commit_pass2(
/* nothing to do in pass2 */
return 0 ;
default :
xlog_warn (
" XFS: invalid item type (%d) xlog_recover_commit_pass2 " ,
ITEM_TYPE ( item ) ) ;
xfs_warn ( log - > l_mp , " %s: invalid item type (%d) " ,
__func__ , ITEM_TYPE ( item ) ) ;
ASSERT ( 0 ) ;
return XFS_ERROR ( EIO ) ;
}
@ -2751,10 +2751,11 @@ xlog_recover_commit_trans(
STATIC int
xlog_recover_unmount_trans (
struct log * log ,
xlog_recover_t * trans )
{
/* Do nothing now */
xlog_warn ( " XFS: xlog_recover_unmount_trans: Unmount LR " ) ;
xfs_warn ( log - > l_mp , " %s: Unmount LR " , __func__ ) ;
return 0 ;
}
@ -2797,8 +2798,8 @@ xlog_recover_process_data(
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 " ) ;
xfs_warn ( log - > l_mp , " %s: bad clientid 0x%x " ,
__func__ , ohead - > oh_clientid ) ;
ASSERT ( 0 ) ;
return ( XFS_ERROR ( EIO ) ) ;
}
@ -2811,8 +2812,8 @@ xlog_recover_process_data(
be64_to_cpu ( rhead - > h_lsn ) ) ;
} else {
if ( dp + be32_to_cpu ( ohead - > oh_len ) > lp ) {
xlog_warn (
" XFS: xlog_recover_process_data: bad length " ) ;
xfs_warn ( log - > l_mp , " %s: bad length 0x%x " ,
__func__ , be32_to_cpu ( ohead - > oh_len ) ) ;
WARN_ON ( 1 ) ;
return ( XFS_ERROR ( EIO ) ) ;
}
@ -2825,7 +2826,7 @@ xlog_recover_process_data(
trans , pass ) ;
break ;
case XLOG_UNMOUNT_TRANS :
error = xlog_recover_unmount_trans ( trans ) ;
error = xlog_recover_unmount_trans ( log , trans ) ;
break ;
case XLOG_WAS_CONT_TRANS :
error = xlog_recover_add_to_cont_trans ( log ,
@ -2833,8 +2834,8 @@ xlog_recover_process_data(
be32_to_cpu ( ohead - > oh_len ) ) ;
break ;
case XLOG_START_TRANS :
xlog_warn (
" XFS: xlog_recover_process_data: bad transaction " ) ;
xfs_warn ( log - > l_mp , " %s: bad transaction " ,
__func__ ) ;
ASSERT ( 0 ) ;
error = XFS_ERROR ( EIO ) ;
break ;
@ -2844,8 +2845,8 @@ xlog_recover_process_data(
dp , be32_to_cpu ( ohead - > oh_len ) ) ;
break ;
default :
xlog_warn (
" XFS: xlog_recover_process_data: bad flag " ) ;
xfs_warn ( log - > l_mp , " %s: bad flag 0x%x " ,
__func__ , flags ) ;
ASSERT ( 0 ) ;
error = XFS_ERROR ( EIO ) ;
break ;
@ -3030,8 +3031,7 @@ xlog_recover_clear_agi_bucket(
out_abort :
xfs_trans_cancel ( tp , XFS_TRANS_ABORT ) ;
out_error :
xfs_fs_cmn_err ( CE_WARN , mp , " xlog_recover_clear_agi_bucket: "
" failed to clear agi %d. Continuing. " , agno ) ;
xfs_warn ( mp , " %s: failed to clear agi %d. Continuing. " , __func__ , agno ) ;
return ;
}
@ -3282,7 +3282,7 @@ xlog_valid_rec_header(
if ( unlikely (
( ! rhead - > h_version | |
( be32_to_cpu ( rhead - > h_version ) & ( ~ XLOG_VERSION_OKBITS ) ) ) ) ) {
xlog_warn ( " XFS: %s: unrecognised log version (%d)." ,
xfs_warn ( log - > l_mp , " %s: unrecognised log version (%d). " ,
__func__ , be32_to_cpu ( rhead - > h_version ) ) ;
return XFS_ERROR ( EIO ) ;
}
@ -3740,10 +3740,9 @@ xlog_recover(
return error ;
}
cmn_err ( CE_NOTE ,
" Starting XFS recovery on filesystem: %s (logdev: %s) " ,
log - > l_mp - > m_fsname , log - > l_mp - > m_logname ?
log - > l_mp - > m_logname : " internal " ) ;
xfs_notice ( log - > l_mp , " Starting recovery (logdev: %s) " ,
log - > l_mp - > m_logname ? log - > l_mp - > m_logname
: " internal " ) ;
error = xlog_do_recover ( log , head_blk , tail_blk ) ;
log - > l_flags | = XLOG_RECOVERY_NEEDED ;
@ -3776,9 +3775,7 @@ xlog_recover_finish(
int error ;
error = xlog_recover_process_efis ( log ) ;
if ( error ) {
cmn_err ( CE_ALERT ,
" Failed to recover EFIs on filesystem: %s " ,
log - > l_mp - > m_fsname ) ;
xfs_alert ( log - > l_mp , " Failed to recover EFIs " ) ;
return error ;
}
/*
@ -3793,15 +3790,12 @@ xlog_recover_finish(
xlog_recover_check_summary ( log ) ;
cmn_err ( CE_NOTE ,
" Ending XFS recovery on filesystem: %s (logdev: %s) " ,
log - > l_mp - > m_fsname , log - > l_mp - > m_logname ?
log - > l_mp - > m_logname : " internal " ) ;
xfs_notice ( log - > l_mp , " Ending recovery (logdev: %s) " ,
log - > l_mp - > m_logname ? log - > l_mp - > m_logname
: " internal " ) ;
log - > l_flags & = ~ XLOG_RECOVERY_NEEDED ;
} else {
cmn_err ( CE_DEBUG ,
" Ending clean XFS mount for filesystem: %s \n " ,
log - > l_mp - > m_fsname ) ;
xfs_info ( log - > l_mp , " Ending clean mount " ) ;
}
return 0 ;
}
@ -3834,10 +3828,8 @@ xlog_recover_check_summary(
for ( agno = 0 ; agno < mp - > m_sb . sb_agcount ; agno + + ) {
error = xfs_read_agf ( mp , NULL , agno , 0 , & agfbp ) ;
if ( error ) {
xfs_fs_cmn_err ( CE_ALERT , mp ,
" xlog_recover_check_summary(agf) "
" agf read failed agno %d error %d " ,
agno , error ) ;
xfs_alert ( mp , " %s agf read failed agno %d error %d " ,
__func__ , agno , error ) ;
} else {
agfp = XFS_BUF_TO_AGF ( agfbp ) ;
freeblks + = be32_to_cpu ( agfp - > agf_freeblks ) +
@ -3846,7 +3838,10 @@ xlog_recover_check_summary(
}
error = xfs_read_agi ( mp , NULL , agno , & agibp ) ;
if ( ! error ) {
if ( error ) {
xfs_alert ( mp , " %s agi read failed agno %d error %d " ,
__func__ , agno , error ) ;
} else {
struct xfs_agi * agi = XFS_BUF_TO_AGI ( agibp ) ;
itotal + = be32_to_cpu ( agi - > agi_count ) ;