mirror of
https://github.com/torvalds/linux.git
synced 2026-05-24 15:12:13 +02:00
xfs: add a realtime flag to the bmap update log redo items
Extend the bmap update (BUI) log items with a new realtime flag that indicates that the updates apply against a realtime file's data fork. We'll wire up the actual code later. Signed-off-by: Darrick J. Wong <djwong@kernel.org> Reviewed-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
parent
2b6a5ec268
commit
7302cda7f8
|
|
@ -838,10 +838,12 @@ struct xfs_cud_log_format {
|
|||
|
||||
#define XFS_BMAP_EXTENT_ATTR_FORK (1U << 31)
|
||||
#define XFS_BMAP_EXTENT_UNWRITTEN (1U << 30)
|
||||
#define XFS_BMAP_EXTENT_REALTIME (1U << 29)
|
||||
|
||||
#define XFS_BMAP_EXTENT_FLAGS (XFS_BMAP_EXTENT_TYPE_MASK | \
|
||||
XFS_BMAP_EXTENT_ATTR_FORK | \
|
||||
XFS_BMAP_EXTENT_UNWRITTEN)
|
||||
XFS_BMAP_EXTENT_UNWRITTEN | \
|
||||
XFS_BMAP_EXTENT_REALTIME)
|
||||
|
||||
/*
|
||||
* This is the structure used to lay out an bui log item in the
|
||||
|
|
|
|||
|
|
@ -275,6 +275,8 @@ xfs_bmap_update_log_item(
|
|||
map->me_flags |= XFS_BMAP_EXTENT_UNWRITTEN;
|
||||
if (bi->bi_whichfork == XFS_ATTR_FORK)
|
||||
map->me_flags |= XFS_BMAP_EXTENT_ATTR_FORK;
|
||||
if (xfs_ifork_is_realtime(bi->bi_owner, bi->bi_whichfork))
|
||||
map->me_flags |= XFS_BMAP_EXTENT_REALTIME;
|
||||
}
|
||||
|
||||
static struct xfs_log_item *
|
||||
|
|
@ -324,6 +326,9 @@ xfs_bmap_update_get_group(
|
|||
{
|
||||
xfs_agnumber_t agno;
|
||||
|
||||
if (xfs_ifork_is_realtime(bi->bi_owner, bi->bi_whichfork))
|
||||
return;
|
||||
|
||||
agno = XFS_FSB_TO_AGNO(mp, bi->bi_bmap.br_startblock);
|
||||
|
||||
/*
|
||||
|
|
@ -353,6 +358,9 @@ static inline void
|
|||
xfs_bmap_update_put_group(
|
||||
struct xfs_bmap_intent *bi)
|
||||
{
|
||||
if (xfs_ifork_is_realtime(bi->bi_owner, bi->bi_whichfork))
|
||||
return;
|
||||
|
||||
xfs_perag_intent_put(bi->bi_pag);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2955,9 +2955,11 @@ DECLARE_EVENT_CLASS(xfs_bmap_deferred_class,
|
|||
TP_ARGS(bi),
|
||||
TP_STRUCT__entry(
|
||||
__field(dev_t, dev)
|
||||
__field(dev_t, opdev)
|
||||
__field(xfs_agnumber_t, agno)
|
||||
__field(xfs_ino_t, ino)
|
||||
__field(xfs_agblock_t, agbno)
|
||||
__field(xfs_fsblock_t, rtbno)
|
||||
__field(int, whichfork)
|
||||
__field(xfs_fileoff_t, l_loff)
|
||||
__field(xfs_filblks_t, l_len)
|
||||
|
|
@ -2968,23 +2970,34 @@ DECLARE_EVENT_CLASS(xfs_bmap_deferred_class,
|
|||
struct xfs_inode *ip = bi->bi_owner;
|
||||
|
||||
__entry->dev = ip->i_mount->m_super->s_dev;
|
||||
__entry->agno = XFS_FSB_TO_AGNO(ip->i_mount,
|
||||
bi->bi_bmap.br_startblock);
|
||||
if (xfs_ifork_is_realtime(ip, bi->bi_whichfork)) {
|
||||
__entry->agno = 0;
|
||||
__entry->agbno = 0;
|
||||
__entry->rtbno = bi->bi_bmap.br_startblock;
|
||||
__entry->opdev = ip->i_mount->m_rtdev_targp->bt_dev;
|
||||
} else {
|
||||
__entry->agno = XFS_FSB_TO_AGNO(ip->i_mount,
|
||||
bi->bi_bmap.br_startblock);
|
||||
__entry->agbno = XFS_FSB_TO_AGBNO(ip->i_mount,
|
||||
bi->bi_bmap.br_startblock);
|
||||
__entry->rtbno = 0;
|
||||
__entry->opdev = __entry->dev;
|
||||
}
|
||||
__entry->ino = ip->i_ino;
|
||||
__entry->agbno = XFS_FSB_TO_AGBNO(ip->i_mount,
|
||||
bi->bi_bmap.br_startblock);
|
||||
__entry->whichfork = bi->bi_whichfork;
|
||||
__entry->l_loff = bi->bi_bmap.br_startoff;
|
||||
__entry->l_len = bi->bi_bmap.br_blockcount;
|
||||
__entry->l_state = bi->bi_bmap.br_state;
|
||||
__entry->op = bi->bi_type;
|
||||
),
|
||||
TP_printk("dev %d:%d op %s ino 0x%llx agno 0x%x agbno 0x%x %s fileoff 0x%llx fsbcount 0x%llx state %d",
|
||||
TP_printk("dev %d:%d op %s opdev %d:%d ino 0x%llx agno 0x%x agbno 0x%x rtbno 0x%llx %s fileoff 0x%llx fsbcount 0x%llx state %d",
|
||||
MAJOR(__entry->dev), MINOR(__entry->dev),
|
||||
__print_symbolic(__entry->op, XFS_BMAP_INTENT_STRINGS),
|
||||
MAJOR(__entry->opdev), MINOR(__entry->opdev),
|
||||
__entry->ino,
|
||||
__entry->agno,
|
||||
__entry->agbno,
|
||||
__entry->rtbno,
|
||||
__print_symbolic(__entry->whichfork, XFS_WHICHFORK_STRINGS),
|
||||
__entry->l_loff,
|
||||
__entry->l_len,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user