]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
xfs_metadump: Zap multi fsb blocks
authorStefan Ring <stefanrin@gmail.com>
Fri, 11 Jan 2019 22:57:04 +0000 (16:57 -0600)
committerEric Sandeen <sandeen@redhat.com>
Fri, 11 Jan 2019 22:57:04 +0000 (16:57 -0600)
Using basically the same code as in process_single_fsb_objects.

Signed-off-by: Stefan Ring <stefanrin@gmail.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
db/metadump.c

index 22cdb9f45bafbe540a0eddd29086c8bfac27a8c5..ec94c3ab09d210cc9affd062ec604d76431339e7 100644 (file)
@@ -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();