From: Stefan Ring Date: Fri, 11 Jan 2019 22:57:04 +0000 (-0600) Subject: xfs_metadump: Zap multi fsb blocks X-Git-Tag: v4.20.0-rc1~13 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b04e7e9219931b47d384eb389c39e3a8a843f5b1;p=thirdparty%2Fxfsprogs-dev.git xfs_metadump: Zap multi fsb blocks Using basically the same code as in process_single_fsb_objects. Signed-off-by: Stefan Ring Reviewed-by: Eric Sandeen Signed-off-by: Eric Sandeen --- diff --git a/db/metadump.c b/db/metadump.c index 22cdb9f45..ec94c3ab0 100644 --- a/db/metadump.c +++ b/db/metadump.c @@ -1882,6 +1882,7 @@ process_multi_fsb_objects( typnm_t btype, xfs_fileoff_t last) { + char *dp; int ret = 0; switch (btype) { @@ -1922,15 +1923,21 @@ process_multi_fsb_objects( } - if ((!obfuscate && !zero_stale_data) || - o >= mp->m_dir_geo->leafblk) { - ret = write_buf(iocur_top); - goto out_pop; - } + if (!obfuscate && !zero_stale_data) + goto write; - process_dir_data_block(iocur_top->data, o, - last == mp->m_dir_geo->fsbcount); + dp = iocur_top->data; + if (o >= mp->m_dir_geo->freeblk) { + /* TODO, zap any stale data */ + goto write; + } else if (o >= mp->m_dir_geo->leafblk) { + process_dir_leaf_block(dp); + } else { + process_dir_data_block(dp, o, + last == mp->m_dir_geo->fsbcount); + } iocur_top->need_crc = 1; +write: ret = write_buf(iocur_top); out_pop: pop_cur();