linux-xfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] xfs_db: update sector size when type is set
@ 2017-06-22 19:33 Bill O'Donnell
  2017-06-22 19:47 ` Darrick J. Wong
                   ` (2 more replies)
  0 siblings, 3 replies; 14+ messages in thread
From: Bill O'Donnell @ 2017-06-22 19:33 UTC (permalink / raw)
  To: linux-xfs; +Cc: sandeen

xfs_db doesn't take sector size into account when setting type.
This can result in an errant crc. For example, with a sector size
of 4096:

xfs_db> agi 0
xfs_db> p crc
crc = 0xab85043e (correct)
xfs_db> daddr
current daddr is 16
xfs_db> daddr 42
xfs_db> daddr 16
xfs_db> type agi
Metadata CRC error detected at xfs_agi block 0x10/0x200
xfs_db> p crc
crc = 0xab85043e (bad)

When xfs_db sets the new daddr in daddr_f, it does so with one
BBSIZE sector (512). Changing the type doesn't change the size
of the current buffer in iocur_top, so the checksum is calculated
on the wrong length for the type (when the actual sector size > BBSIZE (512).

For types with fields, reread the buffer to pick up the correct size for
the new type when it gets set. Facilitate the reread by setting the cursor
with set_cur().

Signed-off-by: Bill O'Donnell <billodo@redhat.com>
---
 db/io.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/db/io.c b/db/io.c
index 9918a51..7e6d330 100644
--- a/db/io.c
+++ b/db/io.c
@@ -616,6 +616,12 @@ set_iocur_type(
 {
 	struct xfs_buf	*bp = iocur_top->bp;
 
+	if (t->fields)
+		set_cur(t,
+			iocur_top->bb,
+			fsize(t->fields, iocur_top->data,
+			      0, 0) / mp->m_sb.sb_blocksize,
+			DB_RING_IGN, NULL);
 	iocur_top->typ = t;
 
 	/* verify the buffer if the type has one. */
-- 
2.9.4


^ permalink raw reply related	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2017-06-26 15:25 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-06-22 19:33 [PATCH] xfs_db: update sector size when type is set Bill O'Donnell
2017-06-22 19:47 ` Darrick J. Wong
2017-06-22 20:16   ` Eric Sandeen
2017-06-22 20:31     ` Bill O'Donnell
2017-06-22 20:34       ` Bill O'Donnell
2017-06-22 20:23   ` Bill O'Donnell
2017-06-22 20:39     ` Darrick J. Wong
2017-06-22 20:46       ` Bill O'Donnell
2017-06-22 23:45 ` [PATCH v2] " Bill O'Donnell
2017-06-23 10:16   ` Carlos Maiolino
2017-06-23 10:26     ` Bill O'Donnell
2017-06-23 10:34 ` [PATCH v3] " Bill O'Donnell
2017-06-23 11:03   ` Carlos Maiolino
2017-06-26 15:25   ` Darrick J. Wong

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).