From: Dave Chinner <david@fromorbit.com>
To: xfs@oss.sgi.com
Subject: [PATCH 2/9] db: verify buffer on type change
Date: Tue, 15 Apr 2014 18:24:54 +1000 [thread overview]
Message-ID: <1397550301-31883-3-git-send-email-david@fromorbit.com> (raw)
In-Reply-To: <1397550301-31883-1-git-send-email-david@fromorbit.com>
From: Dave Chinner <dchinner@redhat.com>
Currently when the type command is run, we simply change the type
associated with the buffer, but don't verify it. This results in
unchecked CRCs being displayed. Hence when changing the type, run
the verifier associated with the type to determine if the buffer
contents is valid or not.
Signed-off-by: Dave Chinner <dchinner@redhat.com>
---
db/io.c | 25 +++++++++++++++++++++++++
db/io.h | 1 +
db/type.c | 9 +++++----
3 files changed, 31 insertions(+), 4 deletions(-)
diff --git a/db/io.c b/db/io.c
index 387f171..1a75394 100644
--- a/db/io.c
+++ b/db/io.c
@@ -552,6 +552,31 @@ set_cur(
ring_add();
}
+void
+set_iocur_type(
+ const typ_t *t)
+{
+ const struct xfs_buf_ops *ops = t ? t->bops : NULL;
+ struct xfs_buf *bp = iocur_top->bp;
+
+ iocur_top->typ = t;
+
+ /* verify the buffer if the type has one. */
+ if (!bp)
+ return;
+ if (!ops) {
+ bp->b_ops = NULL;
+ bp->b_flags |= LIBXFS_B_UNCHECKED;
+ return;
+ }
+ if (!(bp->b_flags & LIBXFS_B_UPTODATE))
+ return;
+ bp->b_error = 0;
+ bp->b_ops = ops;
+ bp->b_ops->verify_read(bp);
+ bp->b_flags &= ~LIBXFS_B_UNCHECKED;
+}
+
static void
stack_help(void)
{
diff --git a/db/io.h b/db/io.h
index 7875119..71082e6 100644
--- a/db/io.h
+++ b/db/io.h
@@ -62,6 +62,7 @@ extern void write_cur(void);
extern void set_cur(const struct typ *t, __int64_t d, int c, int ring_add,
bbmap_t *bbmap);
extern void ring_add(void);
+extern void set_iocur_type(const struct typ *t);
/*
* returns -1 for unchecked, 0 for bad and 1 for good
diff --git a/db/type.c b/db/type.c
index 04d0d56..b29f2a4 100644
--- a/db/type.c
+++ b/db/type.c
@@ -162,10 +162,11 @@ type_f(
if (tt == NULL) {
dbprintf(_("no such type %s\n"), argv[1]);
} else {
- if (iocur_top->typ == NULL) {
- dbprintf(_("no current object\n"));
- } else {
- iocur_top->typ = cur_typ = tt;
+ if (iocur_top->typ == NULL)
+ dbprintf(_("no current object\n"));
+ else {
+ cur_typ = tt;
+ set_iocur_type(tt);
}
}
}
--
1.9.0
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
next prev parent reply other threads:[~2014-04-15 8:25 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-04-15 8:24 [PATCH 0/9] xfs_db, xfs_repair: improve CRC error detection Dave Chinner
2014-04-15 8:24 ` [PATCH 1/9] db: don't claim unchecked CRCs are correct Dave Chinner
2014-04-21 7:00 ` Christoph Hellwig
2014-04-21 23:13 ` Dave Chinner
2014-04-15 8:24 ` Dave Chinner [this message]
2014-04-21 7:02 ` [PATCH 2/9] db: verify buffer on type change Christoph Hellwig
2014-04-21 23:14 ` Dave Chinner
2014-04-15 8:24 ` [PATCH 3/9] repair: ensure prefetched buffers have CRCs validated Dave Chinner
2014-04-15 19:40 ` Brian Foster
2014-04-15 21:46 ` Dave Chinner
2014-04-15 22:06 ` Brian Foster
2014-04-16 0:41 ` Dave Chinner
2014-04-15 8:24 ` [PATCH 4/9] repair: detect and correct CRC errors in directory blocks Dave Chinner
2014-04-21 7:08 ` Christoph Hellwig
2014-04-15 8:24 ` [PATCH 5/9] repair: detect CRC errors in AG headers Dave Chinner
2014-04-15 19:40 ` Brian Foster
2014-04-15 21:52 ` Dave Chinner
2014-04-21 7:11 ` Christoph Hellwig
2014-04-21 23:35 ` Dave Chinner
2014-04-22 6:47 ` Christoph Hellwig
2014-04-22 9:10 ` Dave Chinner
2014-04-22 9:41 ` Christoph Hellwig
2014-04-15 8:24 ` [PATCH 6/9] repair: report AG btree verifier errors Dave Chinner
2014-04-15 19:40 ` Brian Foster
2014-04-15 21:53 ` Dave Chinner
2014-04-15 8:24 ` [PATCH 7/9] repair: remove more dirv1 leftovers Dave Chinner
2014-04-16 13:23 ` Brian Foster
2014-04-21 7:14 ` Christoph Hellwig
2014-04-21 7:13 ` Christoph Hellwig
2014-04-15 8:25 ` [PATCH 8/9] repair: handle remote sylmlink CRC errors Dave Chinner
2014-04-16 13:23 ` Brian Foster
2014-04-15 8:25 ` [PATCH 9/9] repair: detect and handle attribute tree " Dave Chinner
2014-04-16 13:25 ` Brian Foster
2014-04-21 23:27 ` Dave Chinner
-- strict thread matches above, loose matches on Subject: below --
2014-04-24 5:01 [PATCH 0/9 V2] xfs_db, xfs_repair: improve CRC error detection Dave Chinner
2014-04-24 5:01 ` [PATCH 2/9] db: verify buffer on type change Dave Chinner
2014-04-25 5:41 ` Christoph Hellwig
2014-04-28 21:04 [PATCH 0/9 v3] xfs_db, xfs_repair: improve CRC error detection Dave Chinner
2014-04-28 21:04 ` [PATCH 2/9] db: verify buffer on type change Dave Chinner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1397550301-31883-3-git-send-email-david@fromorbit.com \
--to=david@fromorbit.com \
--cc=xfs@oss.sgi.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).