[PATCH 2/8] xfs_db: report the realtime device when associated with each io cursor

Darrick J. Wong
2024-10-29T15:48:13Z

From: Darrick J. Wong <djwong@kernel.org>

When db is reporting on an io cursor and the cursor points to the
realtime device, print that fact.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
---
db/block.c | 2 ++
db/io.c | 11 +++++++++++
db/io.h | 1 +
3 files changed, 14 insertions(+)

diff --git a/db/block.c b/db/block.c
index 22930e5a287e8f..bd25cdbe193f4f 100644
--- a/db/block.c
+++ b/db/block.c
@@ -133,6 +133,8 @@ daddr_f(
dbprintf(_("datadev daddr is %lld\n"), daddr);
else if (iocur_is_extlogdev(iocur_top))
dbprintf(_("logdev daddr is %lld\n"), daddr);
+ else if (iocur_is_rtdev(iocur_top))
+ dbprintf(_("rtdev daddr is %lld\n"), daddr);
else
dbprintf(_("current daddr is %lld\n"), daddr);

diff --git a/db/io.c b/db/io.c
index 26b8e78c2ebda8..3841c0dcb86ead 100644
--- a/db/io.c
+++ b/db/io.c
@@ -159,6 +159,15 @@ iocur_is_extlogdev(const struct iocur *ioc)
return bp->b_target == bp->b_mount->m_logdev_targp;
}

+bool
+iocur_is_rtdev(const struct iocur *ioc)
+{
+ if (!ioc->bp)
+ return false;
+
+ return ioc->bp->b_target == ioc->bp->b_mount->m_rtdev_targp;
+}
+
void
print_iocur(
char *tag,
@@ -171,6 +180,8 @@ print_iocur(
block_unit = "fsbno";
else if (iocur_is_extlogdev(ioc))
block_unit = "logbno";
+ else if (iocur_is_rtdev(ioc))
+ block_unit = "rtbno";

dbprintf("%s\n", tag);
dbprintf(_("\tbyte offset %lld, length %d\n"), ioc->off, ioc->len);
diff --git a/db/io.h b/db/io.h
index cece66a1cf825a..653724e90bd270 100644
--- a/db/io.h
+++ b/db/io.h
@@ -60,6 +60,7 @@ extern void xfs_verify_recalc_crc(struct xfs_buf *bp);

bool iocur_is_ddev(const struct iocur *ioc);
bool iocur_is_extlogdev(const struct iocur *ioc);
+bool iocur_is_rtdev(const struct iocur *ioc);

/*
* returns -1 for unchecked, 0 for bad and 1 for good