From patchwork Fri Oct 26 20:19:41 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefan Ring X-Patchwork-Id: 10657885 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id DDD3813B5 for ; Fri, 26 Oct 2018 20:20:19 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id CED362CA67 for ; Fri, 26 Oct 2018 20:20:19 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id C36742CA6B; Fri, 26 Oct 2018 20:20:19 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 0EC792CA6C for ; Fri, 26 Oct 2018 20:20:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727745AbeJ0E6j (ORCPT ); Sat, 27 Oct 2018 00:58:39 -0400 Received: from mail-wm1-f68.google.com ([209.85.128.68]:54549 "EHLO mail-wm1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725965AbeJ0E6i (ORCPT ); Sat, 27 Oct 2018 00:58:38 -0400 Received: by mail-wm1-f68.google.com with SMTP id r63-v6so2616539wma.4 for ; Fri, 26 Oct 2018 13:20:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references; bh=e3vGFZNPrXzmRoF8t4JUNha0Jbup0kOhGnMB6iV9zRU=; b=OSeQVXyOJDu26ndGGnQmJu4qm43okFCsMlSW9xjaPO1hTPItFTYQshpZmX1dwBhhHF TEveiDmF0JM6ihGFS/kiyNfGlT/BoU/j+Af9l9eIiKYe1dBNgodgVQsZPoSpuZ6wyL+A dO4AuB9keh7FnFRl9Em6ZNqlc2bl7ttFNCGxZhr+ooLkwDU/JJHVwjGmcQLOaS91UWJT ba+/ENiiSx8p7gNX7phRkXnl6x5C/4iDT+NAZ2oxUTtQnxBDwu2M38QPc7Ji+i0S0/H9 8LCRXEwlZI27k7BpIBF6RSZVy7XAJY2WtFbD6RgkzjTXTJNz+1YpX68ZSXZICJ8Ul9fT MFEw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=e3vGFZNPrXzmRoF8t4JUNha0Jbup0kOhGnMB6iV9zRU=; b=taMC/WwwR1GSTcnaMqVAmqemIGWSCyQ1IASOg9j/F2ewDTWtuMI1fHjt+uF/K/X902 aDztXccyEqW4ilt7PlXbAuhMwmXDkOA6NkBFP8Adjmh2F3BGMM8WFEa6nl44XGDvaRzf SARwQSxanaYVz8M22Ri9efKJF3yMIlJswEFFFZxBIfBHef758O4ej7ws7ff84KtuXRwm bipB/wzHa/nKBse79ifljeNhjZPo7jOuGcHmOGHdiL3KlTDN3mXztw6Z06ggMKaJITFV xRRxalnorua8lUvdyljt6RblzEdizcDjFNBVcLxiMw9f0GoIyDO/HUhEn4tSdQoqclvj jr4g== X-Gm-Message-State: AGRZ1gI1Sz3cGHk642+LfZGyyTMJLuQE1t7Fyeh1KOG0NtyHJOZDa/wo 4R6D+r8fkpuy2ffrgNg5zRzNjjfu X-Google-Smtp-Source: AJdET5cCTei+LAYF4TtWQ93UBhQl+thn5hxsgWkg1tGkxPParB44EW2LB1Evv5TOeO1BAK7gl97eNQ== X-Received: by 2002:a1c:8d83:: with SMTP id p125-v6mr6782885wmd.61.1540585211953; Fri, 26 Oct 2018 13:20:11 -0700 (PDT) Received: from dyn.cm.kabsi.at (h081217199198.dyn.cm.kabsi.at. [81.217.199.198]) by smtp.gmail.com with ESMTPSA id 193-v6sm7669219wmj.21.2018.10.26.13.20.10 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 26 Oct 2018 13:20:11 -0700 (PDT) From: Stefan Ring To: linux-xfs@vger.kernel.org Subject: [PATCH 3/5] xfs_metadump: Zap freeindex blocks in directory inodes Date: Fri, 26 Oct 2018 22:19:41 +0200 Message-Id: <20181026201943.24131-4-stefanrin@gmail.com> X-Mailer: git-send-email 2.14.5 In-Reply-To: <20181026201943.24131-1-stefanrin@gmail.com> References: <20181026201943.24131-1-stefanrin@gmail.com> Sender: linux-xfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP --- db/metadump.c | 45 ++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 40 insertions(+), 5 deletions(-) diff --git a/db/metadump.c b/db/metadump.c index c1bfc818..a4867783 100644 --- a/db/metadump.c +++ b/db/metadump.c @@ -1421,6 +1421,43 @@ process_sf_attr( memset(asfep, 0, XFS_DFORK_ASIZE(dip, mp) - ino_attr_size); } +static void +process_dir_free_block( + char *block) +{ + struct xfs_dir2_free *free; + struct xfs_dir3_icfree_hdr freehdr; + + if (!zero_stale_data) + return; + + free = (struct xfs_dir2_free *)block; + M_DIROPS(mp)->free_hdr_from_disk(&freehdr, free); + + switch (freehdr.magic) { + case XFS_DIR2_FREE_MAGIC: + case XFS_DIR3_FREE_MAGIC: { + __be16 *bests; + char *high; + int used; + + /* Zero out space from end of bests[] to end of block */ + bests = M_DIROPS(mp)->free_bests_p(free); + high = (char *)&bests[freehdr.nvalid]; + used = high - (char*)free; + memset(high, 0, mp->m_dir_geo->blksize - used); + iocur_top->need_crc = 1; + break; + } + default: + if (show_warnings) + print_warning("invalid magic in dir inode %llu " + "free block", + (unsigned long long)cur_ino); + break; + } +} + static void process_dir_leaf_block( char *block) @@ -1518,7 +1555,7 @@ process_dir_data_block( if (show_warnings) print_warning( "invalid magic in dir inode %llu block %ld", - (long long)cur_ino, (long)offset); + (unsigned long long)cur_ino, (long)offset); return; } @@ -1832,8 +1869,7 @@ process_single_fsb_objects( switch (btype) { case TYP_DIR2: if (o >= mp->m_dir_geo->freeblk) { - /* TODO, zap any stale data */ - break; + process_dir_free_block(dp); } else if (o >= mp->m_dir_geo->leafblk) { process_dir_leaf_block(dp); } else { @@ -1924,8 +1960,7 @@ process_multi_fsb_objects( dp = iocur_top->data; if (o >= mp->m_dir_geo->freeblk) { - /* TODO, zap any stale data */ - break; + process_dir_free_block(dp); } else if (o >= mp->m_dir_geo->leafblk) { process_dir_leaf_block(dp); } else {