diff options
Diffstat (limited to 'fs/xfs/xfs_log.c')
-rw-r--r-- | fs/xfs/xfs_log.c | 162 |
1 files changed, 86 insertions, 76 deletions
diff --git a/fs/xfs/xfs_log.c b/fs/xfs/xfs_log.c index ae6fef1ff563..b612ce4520ae 100644 --- a/fs/xfs/xfs_log.c +++ b/fs/xfs/xfs_log.c | |||
@@ -374,11 +374,10 @@ xfs_log_mount( | |||
374 | int error; | 374 | int error; |
375 | 375 | ||
376 | if (!(mp->m_flags & XFS_MOUNT_NORECOVERY)) | 376 | if (!(mp->m_flags & XFS_MOUNT_NORECOVERY)) |
377 | cmn_err(CE_NOTE, "XFS mounting filesystem %s", mp->m_fsname); | 377 | xfs_notice(mp, "Mounting Filesystem"); |
378 | else { | 378 | else { |
379 | cmn_err(CE_NOTE, | 379 | xfs_notice(mp, |
380 | "Mounting filesystem \"%s\" in no-recovery mode. Filesystem will be inconsistent.", | 380 | "Mounting filesystem in no-recovery mode. Filesystem will be inconsistent."); |
381 | mp->m_fsname); | ||
382 | ASSERT(mp->m_flags & XFS_MOUNT_RDONLY); | 381 | ASSERT(mp->m_flags & XFS_MOUNT_RDONLY); |
383 | } | 382 | } |
384 | 383 | ||
@@ -393,7 +392,7 @@ xfs_log_mount( | |||
393 | */ | 392 | */ |
394 | error = xfs_trans_ail_init(mp); | 393 | error = xfs_trans_ail_init(mp); |
395 | if (error) { | 394 | if (error) { |
396 | cmn_err(CE_WARN, "XFS: AIL initialisation failed: error %d", error); | 395 | xfs_warn(mp, "AIL initialisation failed: error %d", error); |
397 | goto out_free_log; | 396 | goto out_free_log; |
398 | } | 397 | } |
399 | mp->m_log->l_ailp = mp->m_ail; | 398 | mp->m_log->l_ailp = mp->m_ail; |
@@ -413,7 +412,8 @@ xfs_log_mount( | |||
413 | if (readonly) | 412 | if (readonly) |
414 | mp->m_flags |= XFS_MOUNT_RDONLY; | 413 | mp->m_flags |= XFS_MOUNT_RDONLY; |
415 | if (error) { | 414 | if (error) { |
416 | cmn_err(CE_WARN, "XFS: log mount/recovery failed: error %d", error); | 415 | xfs_warn(mp, "log mount/recovery failed: error %d", |
416 | error); | ||
417 | goto out_destroy_ail; | 417 | goto out_destroy_ail; |
418 | } | 418 | } |
419 | } | 419 | } |
@@ -542,10 +542,8 @@ xfs_log_unmount_write(xfs_mount_t *mp) | |||
542 | */ | 542 | */ |
543 | } | 543 | } |
544 | 544 | ||
545 | if (error) { | 545 | if (error) |
546 | xfs_fs_cmn_err(CE_ALERT, mp, | 546 | xfs_alert(mp, "%s: unmount record failed", __func__); |
547 | "xfs_log_unmount: unmount record failed"); | ||
548 | } | ||
549 | 547 | ||
550 | 548 | ||
551 | spin_lock(&log->l_icloglock); | 549 | spin_lock(&log->l_icloglock); |
@@ -763,7 +761,7 @@ xfs_log_need_covered(xfs_mount_t *mp) | |||
763 | break; | 761 | break; |
764 | case XLOG_STATE_COVER_NEED: | 762 | case XLOG_STATE_COVER_NEED: |
765 | case XLOG_STATE_COVER_NEED2: | 763 | case XLOG_STATE_COVER_NEED2: |
766 | if (!xfs_trans_ail_tail(log->l_ailp) && | 764 | if (!xfs_ail_min_lsn(log->l_ailp) && |
767 | xlog_iclogs_empty(log)) { | 765 | xlog_iclogs_empty(log)) { |
768 | if (log->l_covered_state == XLOG_STATE_COVER_NEED) | 766 | if (log->l_covered_state == XLOG_STATE_COVER_NEED) |
769 | log->l_covered_state = XLOG_STATE_COVER_DONE; | 767 | log->l_covered_state = XLOG_STATE_COVER_DONE; |
@@ -803,7 +801,7 @@ xlog_assign_tail_lsn( | |||
803 | xfs_lsn_t tail_lsn; | 801 | xfs_lsn_t tail_lsn; |
804 | struct log *log = mp->m_log; | 802 | struct log *log = mp->m_log; |
805 | 803 | ||
806 | tail_lsn = xfs_trans_ail_tail(mp->m_ail); | 804 | tail_lsn = xfs_ail_min_lsn(mp->m_ail); |
807 | if (!tail_lsn) | 805 | if (!tail_lsn) |
808 | tail_lsn = atomic64_read(&log->l_last_sync_lsn); | 806 | tail_lsn = atomic64_read(&log->l_last_sync_lsn); |
809 | 807 | ||
@@ -852,7 +850,7 @@ xlog_space_left( | |||
852 | * In this case we just want to return the size of the | 850 | * In this case we just want to return the size of the |
853 | * log as the amount of space left. | 851 | * log as the amount of space left. |
854 | */ | 852 | */ |
855 | xfs_fs_cmn_err(CE_ALERT, log->l_mp, | 853 | xfs_alert(log->l_mp, |
856 | "xlog_space_left: head behind tail\n" | 854 | "xlog_space_left: head behind tail\n" |
857 | " tail_cycle = %d, tail_bytes = %d\n" | 855 | " tail_cycle = %d, tail_bytes = %d\n" |
858 | " GH cycle = %d, GH bytes = %d", | 856 | " GH cycle = %d, GH bytes = %d", |
@@ -1001,7 +999,7 @@ xlog_alloc_log(xfs_mount_t *mp, | |||
1001 | 999 | ||
1002 | log = kmem_zalloc(sizeof(xlog_t), KM_MAYFAIL); | 1000 | log = kmem_zalloc(sizeof(xlog_t), KM_MAYFAIL); |
1003 | if (!log) { | 1001 | if (!log) { |
1004 | xlog_warn("XFS: Log allocation failed: No memory!"); | 1002 | xfs_warn(mp, "Log allocation failed: No memory!"); |
1005 | goto out; | 1003 | goto out; |
1006 | } | 1004 | } |
1007 | 1005 | ||
@@ -1029,24 +1027,24 @@ xlog_alloc_log(xfs_mount_t *mp, | |||
1029 | if (xfs_sb_version_hassector(&mp->m_sb)) { | 1027 | if (xfs_sb_version_hassector(&mp->m_sb)) { |
1030 | log2_size = mp->m_sb.sb_logsectlog; | 1028 | log2_size = mp->m_sb.sb_logsectlog; |
1031 | if (log2_size < BBSHIFT) { | 1029 | if (log2_size < BBSHIFT) { |
1032 | xlog_warn("XFS: Log sector size too small " | 1030 | xfs_warn(mp, "Log sector size too small (0x%x < 0x%x)", |
1033 | "(0x%x < 0x%x)", log2_size, BBSHIFT); | 1031 | log2_size, BBSHIFT); |
1034 | goto out_free_log; | 1032 | goto out_free_log; |
1035 | } | 1033 | } |
1036 | 1034 | ||
1037 | log2_size -= BBSHIFT; | 1035 | log2_size -= BBSHIFT; |
1038 | if (log2_size > mp->m_sectbb_log) { | 1036 | if (log2_size > mp->m_sectbb_log) { |
1039 | xlog_warn("XFS: Log sector size too large " | 1037 | xfs_warn(mp, "Log sector size too large (0x%x > 0x%x)", |
1040 | "(0x%x > 0x%x)", log2_size, mp->m_sectbb_log); | 1038 | log2_size, mp->m_sectbb_log); |
1041 | goto out_free_log; | 1039 | goto out_free_log; |
1042 | } | 1040 | } |
1043 | 1041 | ||
1044 | /* for larger sector sizes, must have v2 or external log */ | 1042 | /* for larger sector sizes, must have v2 or external log */ |
1045 | if (log2_size && log->l_logBBstart > 0 && | 1043 | if (log2_size && log->l_logBBstart > 0 && |
1046 | !xfs_sb_version_haslogv2(&mp->m_sb)) { | 1044 | !xfs_sb_version_haslogv2(&mp->m_sb)) { |
1047 | 1045 | xfs_warn(mp, | |
1048 | xlog_warn("XFS: log sector size (0x%x) invalid " | 1046 | "log sector size (0x%x) invalid for configuration.", |
1049 | "for configuration.", log2_size); | 1047 | log2_size); |
1050 | goto out_free_log; | 1048 | goto out_free_log; |
1051 | } | 1049 | } |
1052 | } | 1050 | } |
@@ -1241,7 +1239,7 @@ xlog_grant_push_ail( | |||
1241 | * the filesystem is shutting down. | 1239 | * the filesystem is shutting down. |
1242 | */ | 1240 | */ |
1243 | if (!XLOG_FORCED_SHUTDOWN(log)) | 1241 | if (!XLOG_FORCED_SHUTDOWN(log)) |
1244 | xfs_trans_ail_push(log->l_ailp, threshold_lsn); | 1242 | xfs_ail_push(log->l_ailp, threshold_lsn); |
1245 | } | 1243 | } |
1246 | 1244 | ||
1247 | /* | 1245 | /* |
@@ -1563,38 +1561,36 @@ xlog_print_tic_res( | |||
1563 | "SWAPEXT" | 1561 | "SWAPEXT" |
1564 | }; | 1562 | }; |
1565 | 1563 | ||
1566 | xfs_fs_cmn_err(CE_WARN, mp, | 1564 | xfs_warn(mp, |
1567 | "xfs_log_write: reservation summary:\n" | 1565 | "xfs_log_write: reservation summary:\n" |
1568 | " trans type = %s (%u)\n" | 1566 | " trans type = %s (%u)\n" |
1569 | " unit res = %d bytes\n" | 1567 | " unit res = %d bytes\n" |
1570 | " current res = %d bytes\n" | 1568 | " current res = %d bytes\n" |
1571 | " total reg = %u bytes (o/flow = %u bytes)\n" | 1569 | " total reg = %u bytes (o/flow = %u bytes)\n" |
1572 | " ophdrs = %u (ophdr space = %u bytes)\n" | 1570 | " ophdrs = %u (ophdr space = %u bytes)\n" |
1573 | " ophdr + reg = %u bytes\n" | 1571 | " ophdr + reg = %u bytes\n" |
1574 | " num regions = %u\n", | 1572 | " num regions = %u\n", |
1575 | ((ticket->t_trans_type <= 0 || | 1573 | ((ticket->t_trans_type <= 0 || |
1576 | ticket->t_trans_type > XFS_TRANS_TYPE_MAX) ? | 1574 | ticket->t_trans_type > XFS_TRANS_TYPE_MAX) ? |
1577 | "bad-trans-type" : trans_type_str[ticket->t_trans_type-1]), | 1575 | "bad-trans-type" : trans_type_str[ticket->t_trans_type-1]), |
1578 | ticket->t_trans_type, | 1576 | ticket->t_trans_type, |
1579 | ticket->t_unit_res, | 1577 | ticket->t_unit_res, |
1580 | ticket->t_curr_res, | 1578 | ticket->t_curr_res, |
1581 | ticket->t_res_arr_sum, ticket->t_res_o_flow, | 1579 | ticket->t_res_arr_sum, ticket->t_res_o_flow, |
1582 | ticket->t_res_num_ophdrs, ophdr_spc, | 1580 | ticket->t_res_num_ophdrs, ophdr_spc, |
1583 | ticket->t_res_arr_sum + | 1581 | ticket->t_res_arr_sum + |
1584 | ticket->t_res_o_flow + ophdr_spc, | 1582 | ticket->t_res_o_flow + ophdr_spc, |
1585 | ticket->t_res_num); | 1583 | ticket->t_res_num); |
1586 | 1584 | ||
1587 | for (i = 0; i < ticket->t_res_num; i++) { | 1585 | for (i = 0; i < ticket->t_res_num; i++) { |
1588 | uint r_type = ticket->t_res_arr[i].r_type; | 1586 | uint r_type = ticket->t_res_arr[i].r_type; |
1589 | cmn_err(CE_WARN, | 1587 | xfs_warn(mp, "region[%u]: %s - %u bytes\n", i, |
1590 | "region[%u]: %s - %u bytes\n", | ||
1591 | i, | ||
1592 | ((r_type <= 0 || r_type > XLOG_REG_TYPE_MAX) ? | 1588 | ((r_type <= 0 || r_type > XLOG_REG_TYPE_MAX) ? |
1593 | "bad-rtype" : res_type_str[r_type-1]), | 1589 | "bad-rtype" : res_type_str[r_type-1]), |
1594 | ticket->t_res_arr[i].r_len); | 1590 | ticket->t_res_arr[i].r_len); |
1595 | } | 1591 | } |
1596 | 1592 | ||
1597 | xfs_cmn_err(XFS_PTAG_LOGRES, CE_ALERT, mp, | 1593 | xfs_alert_tag(mp, XFS_PTAG_LOGRES, |
1598 | "xfs_log_write: reservation ran out. Need to up reservation"); | 1594 | "xfs_log_write: reservation ran out. Need to up reservation"); |
1599 | xfs_force_shutdown(mp, SHUTDOWN_CORRUPT_INCORE); | 1595 | xfs_force_shutdown(mp, SHUTDOWN_CORRUPT_INCORE); |
1600 | } | 1596 | } |
@@ -1682,7 +1678,7 @@ xlog_write_setup_ophdr( | |||
1682 | case XFS_LOG: | 1678 | case XFS_LOG: |
1683 | break; | 1679 | break; |
1684 | default: | 1680 | default: |
1685 | xfs_fs_cmn_err(CE_WARN, log->l_mp, | 1681 | xfs_warn(log->l_mp, |
1686 | "Bad XFS transaction clientid 0x%x in ticket 0x%p", | 1682 | "Bad XFS transaction clientid 0x%x in ticket 0x%p", |
1687 | ophdr->oh_clientid, ticket); | 1683 | ophdr->oh_clientid, ticket); |
1688 | return NULL; | 1684 | return NULL; |
@@ -2264,7 +2260,7 @@ xlog_state_do_callback( | |||
2264 | if (repeats > 5000) { | 2260 | if (repeats > 5000) { |
2265 | flushcnt += repeats; | 2261 | flushcnt += repeats; |
2266 | repeats = 0; | 2262 | repeats = 0; |
2267 | xfs_fs_cmn_err(CE_WARN, log->l_mp, | 2263 | xfs_warn(log->l_mp, |
2268 | "%s: possible infinite loop (%d iterations)", | 2264 | "%s: possible infinite loop (%d iterations)", |
2269 | __func__, flushcnt); | 2265 | __func__, flushcnt); |
2270 | } | 2266 | } |
@@ -3052,10 +3048,8 @@ xfs_log_force( | |||
3052 | int error; | 3048 | int error; |
3053 | 3049 | ||
3054 | error = _xfs_log_force(mp, flags, NULL); | 3050 | error = _xfs_log_force(mp, flags, NULL); |
3055 | if (error) { | 3051 | if (error) |
3056 | xfs_fs_cmn_err(CE_WARN, mp, "xfs_log_force: " | 3052 | xfs_warn(mp, "%s: error %d returned.", __func__, error); |
3057 | "error %d returned.", error); | ||
3058 | } | ||
3059 | } | 3053 | } |
3060 | 3054 | ||
3061 | /* | 3055 | /* |
@@ -3204,10 +3198,8 @@ xfs_log_force_lsn( | |||
3204 | int error; | 3198 | int error; |
3205 | 3199 | ||
3206 | error = _xfs_log_force_lsn(mp, lsn, flags, NULL); | 3200 | error = _xfs_log_force_lsn(mp, lsn, flags, NULL); |
3207 | if (error) { | 3201 | if (error) |
3208 | xfs_fs_cmn_err(CE_WARN, mp, "xfs_log_force: " | 3202 | xfs_warn(mp, "%s: error %d returned.", __func__, error); |
3209 | "error %d returned.", error); | ||
3210 | } | ||
3211 | } | 3203 | } |
3212 | 3204 | ||
3213 | /* | 3205 | /* |
@@ -3412,9 +3404,20 @@ xlog_verify_dest_ptr( | |||
3412 | } | 3404 | } |
3413 | 3405 | ||
3414 | if (!good_ptr) | 3406 | if (!good_ptr) |
3415 | xlog_panic("xlog_verify_dest_ptr: invalid ptr"); | 3407 | xfs_emerg(log->l_mp, "%s: invalid ptr", __func__); |
3416 | } | 3408 | } |
3417 | 3409 | ||
3410 | /* | ||
3411 | * Check to make sure the grant write head didn't just over lap the tail. If | ||
3412 | * the cycles are the same, we can't be overlapping. Otherwise, make sure that | ||
3413 | * the cycles differ by exactly one and check the byte count. | ||
3414 | * | ||
3415 | * This check is run unlocked, so can give false positives. Rather than assert | ||
3416 | * on failures, use a warn-once flag and a panic tag to allow the admin to | ||
3417 | * determine if they want to panic the machine when such an error occurs. For | ||
3418 | * debug kernels this will have the same effect as using an assert but, unlinke | ||
3419 | * an assert, it can be turned off at runtime. | ||
3420 | */ | ||
3418 | STATIC void | 3421 | STATIC void |
3419 | xlog_verify_grant_tail( | 3422 | xlog_verify_grant_tail( |
3420 | struct log *log) | 3423 | struct log *log) |
@@ -3422,17 +3425,22 @@ xlog_verify_grant_tail( | |||
3422 | int tail_cycle, tail_blocks; | 3425 | int tail_cycle, tail_blocks; |
3423 | int cycle, space; | 3426 | int cycle, space; |
3424 | 3427 | ||
3425 | /* | ||
3426 | * Check to make sure the grant write head didn't just over lap the | ||
3427 | * tail. If the cycles are the same, we can't be overlapping. | ||
3428 | * Otherwise, make sure that the cycles differ by exactly one and | ||
3429 | * check the byte count. | ||
3430 | */ | ||
3431 | xlog_crack_grant_head(&log->l_grant_write_head, &cycle, &space); | 3428 | xlog_crack_grant_head(&log->l_grant_write_head, &cycle, &space); |
3432 | xlog_crack_atomic_lsn(&log->l_tail_lsn, &tail_cycle, &tail_blocks); | 3429 | xlog_crack_atomic_lsn(&log->l_tail_lsn, &tail_cycle, &tail_blocks); |
3433 | if (tail_cycle != cycle) { | 3430 | if (tail_cycle != cycle) { |
3434 | ASSERT(cycle - 1 == tail_cycle); | 3431 | if (cycle - 1 != tail_cycle && |
3435 | ASSERT(space <= BBTOB(tail_blocks)); | 3432 | !(log->l_flags & XLOG_TAIL_WARN)) { |
3433 | xfs_alert_tag(log->l_mp, XFS_PTAG_LOGRES, | ||
3434 | "%s: cycle - 1 != tail_cycle", __func__); | ||
3435 | log->l_flags |= XLOG_TAIL_WARN; | ||
3436 | } | ||
3437 | |||
3438 | if (space > BBTOB(tail_blocks) && | ||
3439 | !(log->l_flags & XLOG_TAIL_WARN)) { | ||
3440 | xfs_alert_tag(log->l_mp, XFS_PTAG_LOGRES, | ||
3441 | "%s: space > BBTOB(tail_blocks)", __func__); | ||
3442 | log->l_flags |= XLOG_TAIL_WARN; | ||
3443 | } | ||
3436 | } | 3444 | } |
3437 | } | 3445 | } |
3438 | 3446 | ||
@@ -3448,16 +3456,16 @@ xlog_verify_tail_lsn(xlog_t *log, | |||
3448 | blocks = | 3456 | blocks = |
3449 | log->l_logBBsize - (log->l_prev_block - BLOCK_LSN(tail_lsn)); | 3457 | log->l_logBBsize - (log->l_prev_block - BLOCK_LSN(tail_lsn)); |
3450 | if (blocks < BTOBB(iclog->ic_offset)+BTOBB(log->l_iclog_hsize)) | 3458 | if (blocks < BTOBB(iclog->ic_offset)+BTOBB(log->l_iclog_hsize)) |
3451 | xlog_panic("xlog_verify_tail_lsn: ran out of log space"); | 3459 | xfs_emerg(log->l_mp, "%s: ran out of log space", __func__); |
3452 | } else { | 3460 | } else { |
3453 | ASSERT(CYCLE_LSN(tail_lsn)+1 == log->l_prev_cycle); | 3461 | ASSERT(CYCLE_LSN(tail_lsn)+1 == log->l_prev_cycle); |
3454 | 3462 | ||
3455 | if (BLOCK_LSN(tail_lsn) == log->l_prev_block) | 3463 | if (BLOCK_LSN(tail_lsn) == log->l_prev_block) |
3456 | xlog_panic("xlog_verify_tail_lsn: tail wrapped"); | 3464 | xfs_emerg(log->l_mp, "%s: tail wrapped", __func__); |
3457 | 3465 | ||
3458 | blocks = BLOCK_LSN(tail_lsn) - log->l_prev_block; | 3466 | blocks = BLOCK_LSN(tail_lsn) - log->l_prev_block; |
3459 | if (blocks < BTOBB(iclog->ic_offset) + 1) | 3467 | if (blocks < BTOBB(iclog->ic_offset) + 1) |
3460 | xlog_panic("xlog_verify_tail_lsn: ran out of log space"); | 3468 | xfs_emerg(log->l_mp, "%s: ran out of log space", __func__); |
3461 | } | 3469 | } |
3462 | } /* xlog_verify_tail_lsn */ | 3470 | } /* xlog_verify_tail_lsn */ |
3463 | 3471 | ||
@@ -3497,22 +3505,23 @@ xlog_verify_iclog(xlog_t *log, | |||
3497 | icptr = log->l_iclog; | 3505 | icptr = log->l_iclog; |
3498 | for (i=0; i < log->l_iclog_bufs; i++) { | 3506 | for (i=0; i < log->l_iclog_bufs; i++) { |
3499 | if (icptr == NULL) | 3507 | if (icptr == NULL) |
3500 | xlog_panic("xlog_verify_iclog: invalid ptr"); | 3508 | xfs_emerg(log->l_mp, "%s: invalid ptr", __func__); |
3501 | icptr = icptr->ic_next; | 3509 | icptr = icptr->ic_next; |
3502 | } | 3510 | } |
3503 | if (icptr != log->l_iclog) | 3511 | if (icptr != log->l_iclog) |
3504 | xlog_panic("xlog_verify_iclog: corrupt iclog ring"); | 3512 | xfs_emerg(log->l_mp, "%s: corrupt iclog ring", __func__); |
3505 | spin_unlock(&log->l_icloglock); | 3513 | spin_unlock(&log->l_icloglock); |
3506 | 3514 | ||
3507 | /* check log magic numbers */ | 3515 | /* check log magic numbers */ |
3508 | if (be32_to_cpu(iclog->ic_header.h_magicno) != XLOG_HEADER_MAGIC_NUM) | 3516 | if (be32_to_cpu(iclog->ic_header.h_magicno) != XLOG_HEADER_MAGIC_NUM) |
3509 | xlog_panic("xlog_verify_iclog: invalid magic num"); | 3517 | xfs_emerg(log->l_mp, "%s: invalid magic num", __func__); |
3510 | 3518 | ||
3511 | ptr = (xfs_caddr_t) &iclog->ic_header; | 3519 | ptr = (xfs_caddr_t) &iclog->ic_header; |
3512 | for (ptr += BBSIZE; ptr < ((xfs_caddr_t)&iclog->ic_header) + count; | 3520 | for (ptr += BBSIZE; ptr < ((xfs_caddr_t)&iclog->ic_header) + count; |
3513 | ptr += BBSIZE) { | 3521 | ptr += BBSIZE) { |
3514 | if (be32_to_cpu(*(__be32 *)ptr) == XLOG_HEADER_MAGIC_NUM) | 3522 | if (be32_to_cpu(*(__be32 *)ptr) == XLOG_HEADER_MAGIC_NUM) |
3515 | xlog_panic("xlog_verify_iclog: unexpected magic num"); | 3523 | xfs_emerg(log->l_mp, "%s: unexpected magic num", |
3524 | __func__); | ||
3516 | } | 3525 | } |
3517 | 3526 | ||
3518 | /* check fields */ | 3527 | /* check fields */ |
@@ -3542,9 +3551,10 @@ xlog_verify_iclog(xlog_t *log, | |||
3542 | } | 3551 | } |
3543 | } | 3552 | } |
3544 | if (clientid != XFS_TRANSACTION && clientid != XFS_LOG) | 3553 | if (clientid != XFS_TRANSACTION && clientid != XFS_LOG) |
3545 | cmn_err(CE_WARN, "xlog_verify_iclog: " | 3554 | xfs_warn(log->l_mp, |
3546 | "invalid clientid %d op 0x%p offset 0x%lx", | 3555 | "%s: invalid clientid %d op 0x%p offset 0x%lx", |
3547 | clientid, ophead, (unsigned long)field_offset); | 3556 | __func__, clientid, ophead, |
3557 | (unsigned long)field_offset); | ||
3548 | 3558 | ||
3549 | /* check length */ | 3559 | /* check length */ |
3550 | field_offset = (__psint_t) | 3560 | field_offset = (__psint_t) |