From: hal@deer-run.com
To: linux-xfs@vger.kernel.org
Subject: [PATCH] xfs_db: add -R option
Date: Fri, 4 May 2018 09:02:44 -0500 [thread overview]
Message-ID: <20180504140244.GA32161@deer-run.com> (raw)
From: Hal Pomeranz <hal@deer-run.com>
-R is similar to -r, but allows for blockget on a mounted file system
or "dirty" file system image with pending log entries. This makes
xfs_db more useful for forensics where we are often dealing with these
types of images. Flushing log entries to disk by mounting/unmounting
the file system would allow us to use blockget, but would make changes
to the file system state which are not desirable in forensics
contexts.
Signed-off-by: Hal Pomeranz <hal@deer-run.com>
---
db/init.c | 7 +++++--
db/init.h | 1 +
db/sb.c | 2 +-
man/man8/xfs_db.8 | 8 ++++++++
4 files changed, 15 insertions(+), 3 deletions(-)
diff --git a/db/init.c b/db/init.c
index 29fc344..96a0e78 100644
--- a/db/init.c
+++ b/db/init.c
@@ -36,6 +36,7 @@ int blkbb;
int exitcode;
int expert_mode;
int force;
+int ignore_dirty;
struct xfs_mount xmount;
struct xfs_mount *mp;
struct xlog xlog;
@@ -46,7 +47,7 @@ static void
usage(void)
{
fprintf(stderr, _(
- "Usage: %s [-ifFrxV] [-p prog] [-l logdev] [-c cmd]... device\n"
+ "Usage: %s [-ifFrRxV] [-p prog] [-l logdev] [-c cmd]... device\n"
), progname);
exit(1);
}
@@ -66,7 +67,7 @@ init(
textdomain(PACKAGE);
progname = basename(argv[0]);
- while ((c = getopt(argc, argv, "c:fFip:rxVl:")) != EOF) {
+ while ((c = getopt(argc, argv, "c:fFip:rRxVl:")) != EOF) {
switch (c) {
case 'c':
cmdline = xrealloc(cmdline, (ncmdline+1)*sizeof(char*));
@@ -84,6 +85,8 @@ init(
case 'p':
progname = optarg;
break;
+ case 'R':
+ ignore_dirty = 1;
case 'r':
x.isreadonly = LIBXFS_ISREADONLY;
break;
diff --git a/db/init.h b/db/init.h
index b09389e..f6bfda9 100644
--- a/db/init.h
+++ b/db/init.h
@@ -20,6 +20,7 @@ extern char *fsdevice;
extern int blkbb;
extern int exitcode;
extern int expert_mode;
+extern int ignore_dirty;
extern xfs_mount_t *mp;
extern libxfs_init_t x;
extern xfs_agnumber_t cur_agno;
diff --git a/db/sb.c b/db/sb.c
index c7fbfd6..4c04d79 100644
--- a/db/sb.c
+++ b/db/sb.c
@@ -251,7 +251,7 @@ sb_logcheck(void)
if (dirty == -1) {
dbprintf(_("ERROR: cannot find log head/tail, run xfs_repair\n"));
return 0;
- } else if (dirty == 1) {
+ } else if (dirty == 1 && ignore_dirty == 0) {
dbprintf(_(
"ERROR: The filesystem has valuable metadata changes in a log which needs to\n"
"be replayed. Mount the filesystem to replay the log, and unmount it before\n"
diff --git a/man/man8/xfs_db.8 b/man/man8/xfs_db.8
index 524b1ef..89be1aa 100644
--- a/man/man8/xfs_db.8
+++ b/man/man8/xfs_db.8
@@ -90,6 +90,14 @@ It is only necessary to omit this flag if a command that changes data
.RB ( write ", " blocktrash ", " crc )
is to be used.
.TP
+.B -R
+Like
+.B -r
+but allows the
+.B blockget
+command even if the file system is "dirty" (unreconciled transactions
+in the log).
+.TP
.B \-x
Specifies expert mode.
This enables the
--
1.8.3.1
next reply other threads:[~2018-05-04 14:32 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-05-04 14:02 hal [this message]
2018-05-04 15:32 ` [PATCH] xfs_db: add -R option Darrick J. Wong
2018-05-07 11:35 ` hal
2018-05-07 12:56 ` hal
2018-05-08 1:21 ` Darrick J. Wong
2018-05-08 13:55 ` Eric Sandeen
2018-05-08 16:13 ` hal
2018-05-08 16:27 ` Eric Sandeen
2018-05-08 16:43 ` hal
2018-05-08 16:58 ` Darrick J. Wong
2018-05-09 0:14 ` 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=20180504140244.GA32161@deer-run.com \
--to=hal@deer-run.com \
--cc=linux-xfs@vger.kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.