From ec693e1c88c60d65546d8a0505f28251778dcb3f Mon Sep 17 00:00:00 2001 From: Eric Sandeen Date: Fri, 5 Jun 2015 12:15:05 +1000 Subject: [PATCH] metadump: zero out clean log When doing an xfs_metadump, if the log is clean, zero it out for 2 reasons: * It'll make the image more compressible * It'll eliminate an un-obfuscated metadata source If the log isn't clean, and the user expected obfuscation, warn that metadata in the log will not be obfuscated. Signed-off-by: Eric Sandeen Reviewed-by: Dave Chinner Signed-off-by: Dave Chinner --- db/metadump.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/db/metadump.c b/db/metadump.c index bea4e0001..eb5e9da9e 100644 --- a/db/metadump.c +++ b/db/metadump.c @@ -17,6 +17,7 @@ */ #include +#include #include "bmap.h" #include "command.h" #include "metadump.h" @@ -2169,6 +2170,8 @@ copy_sb_inodes(void) static int copy_log(void) { + int dirty; + if (show_progress) print_progress("Copying log"); @@ -2180,6 +2183,31 @@ copy_log(void) print_warning("cannot read log"); return !stop_on_read_error; } + + dirty = xlog_is_dirty(mp, &x, 0); + + switch (dirty) { + case 0: + /* clear out a clean log */ + if (show_progress) + print_progress("Zeroing clean log"); + memset(iocur_top->data, 0, + mp->m_sb.sb_logblocks * mp->m_sb.sb_blocksize); + break; + case 1: + /* keep the dirty log */ + if (obfuscate) + print_warning( +_("Filesystem log is dirty; image will contain unobfuscated metadata in log.")); + break; + case -1: + /* log detection error */ + if (obfuscate) + print_warning( +_("Could not discern log; image will contain unobfuscated metadata in log.")); + break; + } + return !write_buf(iocur_top); } -- 2.47.2