mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-01 10:45:49 +00:00
xfs: pass the iunlink item to the xfs_iunlink_update_dinode trace point
So that decoding is only done when tracing is actually enabled and the call site look a lot neater. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Darrick J. Wong <djwong@kernel.org> Signed-off-by: Darrick J. Wong <djwong@kernel.org>
This commit is contained in:
parent
487092ceaa
commit
1209d360eb
@ -52,14 +52,14 @@ xfs_iunlink_log_dinode(
|
|||||||
struct xfs_trans *tp,
|
struct xfs_trans *tp,
|
||||||
struct xfs_iunlink_item *iup)
|
struct xfs_iunlink_item *iup)
|
||||||
{
|
{
|
||||||
struct xfs_mount *mp = tp->t_mountp;
|
|
||||||
struct xfs_inode *ip = iup->ip;
|
struct xfs_inode *ip = iup->ip;
|
||||||
struct xfs_dinode *dip;
|
struct xfs_dinode *dip;
|
||||||
struct xfs_buf *ibp;
|
struct xfs_buf *ibp;
|
||||||
|
xfs_agino_t old_ptr;
|
||||||
int offset;
|
int offset;
|
||||||
int error;
|
int error;
|
||||||
|
|
||||||
error = xfs_imap_to_bp(mp, tp, &ip->i_imap, &ibp);
|
error = xfs_imap_to_bp(tp->t_mountp, tp, &ip->i_imap, &ibp);
|
||||||
if (error)
|
if (error)
|
||||||
return error;
|
return error;
|
||||||
/*
|
/*
|
||||||
@ -73,22 +73,21 @@ xfs_iunlink_log_dinode(
|
|||||||
dip = xfs_buf_offset(ibp, ip->i_imap.im_boffset);
|
dip = xfs_buf_offset(ibp, ip->i_imap.im_boffset);
|
||||||
|
|
||||||
/* Make sure the old pointer isn't garbage. */
|
/* Make sure the old pointer isn't garbage. */
|
||||||
if (be32_to_cpu(dip->di_next_unlinked) != iup->old_agino) {
|
old_ptr = be32_to_cpu(dip->di_next_unlinked);
|
||||||
|
if (old_ptr != iup->old_agino) {
|
||||||
xfs_inode_verifier_error(ip, -EFSCORRUPTED, __func__, dip,
|
xfs_inode_verifier_error(ip, -EFSCORRUPTED, __func__, dip,
|
||||||
sizeof(*dip), __this_address);
|
sizeof(*dip), __this_address);
|
||||||
error = -EFSCORRUPTED;
|
error = -EFSCORRUPTED;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
trace_xfs_iunlink_update_dinode(mp, iup->pag->pag_agno,
|
trace_xfs_iunlink_update_dinode(iup, old_ptr);
|
||||||
XFS_INO_TO_AGINO(mp, ip->i_ino),
|
|
||||||
be32_to_cpu(dip->di_next_unlinked), iup->next_agino);
|
|
||||||
|
|
||||||
dip->di_next_unlinked = cpu_to_be32(iup->next_agino);
|
dip->di_next_unlinked = cpu_to_be32(iup->next_agino);
|
||||||
offset = ip->i_imap.im_boffset +
|
offset = ip->i_imap.im_boffset +
|
||||||
offsetof(struct xfs_dinode, di_next_unlinked);
|
offsetof(struct xfs_dinode, di_next_unlinked);
|
||||||
|
|
||||||
xfs_dinode_calc_crc(mp, dip);
|
xfs_dinode_calc_crc(tp->t_mountp, dip);
|
||||||
xfs_trans_inode_buf(tp, ibp);
|
xfs_trans_inode_buf(tp, ibp);
|
||||||
xfs_trans_log_buf(tp, ibp, offset, offset + sizeof(xfs_agino_t) - 1);
|
xfs_trans_log_buf(tp, ibp, offset, offset + sizeof(xfs_agino_t) - 1);
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -32,6 +32,7 @@
|
|||||||
#include "xfs_fsmap.h"
|
#include "xfs_fsmap.h"
|
||||||
#include "xfs_btree_staging.h"
|
#include "xfs_btree_staging.h"
|
||||||
#include "xfs_icache.h"
|
#include "xfs_icache.h"
|
||||||
|
#include "xfs_iunlink_item.h"
|
||||||
#include "xfs_ag.h"
|
#include "xfs_ag.h"
|
||||||
#include "xfs_ag_resv.h"
|
#include "xfs_ag_resv.h"
|
||||||
#include "xfs_error.h"
|
#include "xfs_error.h"
|
||||||
|
@ -74,6 +74,7 @@ struct xfs_refcount_irec;
|
|||||||
struct xfs_fsmap;
|
struct xfs_fsmap;
|
||||||
struct xfs_rmap_irec;
|
struct xfs_rmap_irec;
|
||||||
struct xfs_icreate_log;
|
struct xfs_icreate_log;
|
||||||
|
struct xfs_iunlink_item;
|
||||||
struct xfs_owner_info;
|
struct xfs_owner_info;
|
||||||
struct xfs_trans_res;
|
struct xfs_trans_res;
|
||||||
struct xfs_inobt_rec_incore;
|
struct xfs_inobt_rec_incore;
|
||||||
@ -4055,9 +4056,8 @@ TRACE_EVENT(xfs_iunlink_update_bucket,
|
|||||||
);
|
);
|
||||||
|
|
||||||
TRACE_EVENT(xfs_iunlink_update_dinode,
|
TRACE_EVENT(xfs_iunlink_update_dinode,
|
||||||
TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, xfs_agino_t agino,
|
TP_PROTO(const struct xfs_iunlink_item *iup, xfs_agino_t old_ptr),
|
||||||
xfs_agino_t old_ptr, xfs_agino_t new_ptr),
|
TP_ARGS(iup, old_ptr),
|
||||||
TP_ARGS(mp, agno, agino, old_ptr, new_ptr),
|
|
||||||
TP_STRUCT__entry(
|
TP_STRUCT__entry(
|
||||||
__field(dev_t, dev)
|
__field(dev_t, dev)
|
||||||
__field(xfs_agnumber_t, agno)
|
__field(xfs_agnumber_t, agno)
|
||||||
@ -4066,11 +4066,12 @@ TRACE_EVENT(xfs_iunlink_update_dinode,
|
|||||||
__field(xfs_agino_t, new_ptr)
|
__field(xfs_agino_t, new_ptr)
|
||||||
),
|
),
|
||||||
TP_fast_assign(
|
TP_fast_assign(
|
||||||
__entry->dev = mp->m_super->s_dev;
|
__entry->dev = iup->pag->pag_mount->m_super->s_dev;
|
||||||
__entry->agno = agno;
|
__entry->agno = iup->pag->pag_agno;
|
||||||
__entry->agino = agino;
|
__entry->agino =
|
||||||
|
XFS_INO_TO_AGINO(iup->ip->i_mount, iup->ip->i_ino);
|
||||||
__entry->old_ptr = old_ptr;
|
__entry->old_ptr = old_ptr;
|
||||||
__entry->new_ptr = new_ptr;
|
__entry->new_ptr = iup->next_agino;
|
||||||
),
|
),
|
||||||
TP_printk("dev %d:%d agno 0x%x agino 0x%x old 0x%x new 0x%x",
|
TP_printk("dev %d:%d agno 0x%x agino 0x%x old 0x%x new 0x%x",
|
||||||
MAJOR(__entry->dev), MINOR(__entry->dev),
|
MAJOR(__entry->dev), MINOR(__entry->dev),
|
||||||
|
Loading…
Reference in New Issue
Block a user