From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4A289C7EE24 for ; Tue, 6 Jun 2023 12:10:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237452AbjFFMKv (ORCPT ); Tue, 6 Jun 2023 08:10:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47466 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237398AbjFFMKr (ORCPT ); Tue, 6 Jun 2023 08:10:47 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AFD83198A for ; Tue, 6 Jun 2023 05:10:23 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 2C35663175 for ; Tue, 6 Jun 2023 12:10:23 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 316DBC433EF; Tue, 6 Jun 2023 12:10:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1686053422; bh=1sjs1V7b6i8xgoZf8nB1Dp4ABIWmamVhPXzfHb9V52E=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=N6f0dqOM7ggxpvKFvf0xXyZ8nVY10c/I2btP+RttxnDoG8eQzLc2kWSFk4l/HO3B+ 6m3TNJK64WhzgyTKpB69FS27aTNbdHDExzCoeiweNpQeMbMldCkyx2hdigMqtrLtuW C22vLWtkZAqKy0V9dZHQbQdw/4NfuUzvsTypDfEh431VONwQcfGxfmief4d3iH/Si+ 5fgemOctGrzqnHKWUU/gcWYJ8qGyVNBlz8uYzaNq9ofqg8vPC3xezCl3WoVrAPmwUn o7gqoHMpDczLK267xH9dMzGrkkScO3YTCgxci3mp1EukdRCMr4h8ZQC1w8+gzibv1U VJ5iYNh/ZNl8w== Date: Tue, 6 Jun 2023 14:10:17 +0200 From: Carlos Maiolino To: Chandan Babu R Cc: linux-xfs@vger.kernel.org, djwong@kernel.org Subject: Re: [PATCH V2 00/23] Metadump v2 Message-ID: <20230606121017.zvq6d2f4vdroh66q@andromeda> References: <2ExBvYxYPnyiGvOJzODNvNXx_bfn5RWAck_7UcV7OvxkF6fgAy6UZtI6d2-FdmxoIeBLPPX0vwW9uaJxBa5Rmg==@protonmail.internalid> <20230606092806.1604491-1-chandan.babu@oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20230606092806.1604491-1-chandan.babu@oracle.com> Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org On Tue, Jun 06, 2023 at 02:57:43PM +0530, Chandan Babu R wrote: > Hi all, > > This patch series extends metadump/mdrestore tools to be able to dump > and restore contents of an external log device. It also adds the > ability to copy larger blocks (e.g. 4096 bytes instead of 512 bytes) > into the metadump file. These objectives are accomplished by > introducing a new metadump file format. > > I have tested the patchset by extending metadump/mdrestore tests in > fstests to cover the newly introduced metadump v2 format. The tests > can be found at > https://github.com/chandanr/xfstests/commits/metadump-v2. > > The patch series can also be obtained from > https://github.com/chandanr/xfsprogs-dev/commits/metadump-v2. There is already a V2 on the list, why is this also tagged as V2? -- Carlos > > Changelog: > V1 -> V2: > 1. Introduce the new incompat flag XFS_MD2_INCOMPAT_EXTERNALLOG to > indicate that the metadump file contains data obtained from an > external log. > 2. Interpret bits 54 and 55 of xfs_meta_extent.xme_addr as a counter > such that 00 maps to the data device and 01 maps to the log > device. > 3. Define the new function set_log_cur() to read from > internal/external log device. This allows us to continue using > TYP_LOG to read from both internal and external log. > 4. In order to support reading metadump from a pipe, mdrestore now > reads the first four bytes of the header to determine the > metadump version rather than reading the entire header in a > single call to fread(). > 5. Add an ASCII diagram to describe metadump v2's ondisk layout in > xfs_metadump.h. > 6. Update metadump's man page to indicate that metadump in v2 format > is generated by default if the filesystem has an external log and > the metadump version to use is not explicitly mentioned on the > command line. > 7. Remove '_metadump' suffix from function pointer names in "struct > metadump_ops". > 8. Use xfs_daddr_t type for declaring variables containing disk > offset value. > 9. Use bool type rather than int for variables holding a boolean > value. > 11. Remove unnecessary whitespace. > > > > > Chandan Babu R (23): > metadump: Use boolean values true/false instead of 1/0 > mdrestore: Fix logic used to check if target device is large enough > metadump: Declare boolean variables with bool type > metadump: Define and use struct metadump > metadump: Add initialization and release functions > metadump: Postpone invocation of init_metadump() > metadump: Introduce struct metadump_ops > metadump: Introduce metadump v1 operations > metadump: Rename XFS_MD_MAGIC to XFS_MD_MAGIC_V1 > metadump: Define metadump v2 ondisk format structures and macros > metadump: Define metadump ops for v2 format > xfs_db: Add support to read from external log device > metadump: Add support for passing version option > mdrestore: Declare boolean variables with bool type > mdrestore: Define and use struct mdrestore > mdrestore: Detect metadump v1 magic before reading the header > mdrestore: Add open_device(), read_header() and show_info() functions > mdrestore: Introduce struct mdrestore_ops > mdrestore: Replace metadump header pointer argument with generic > pointer type > mdrestore: Introduce mdrestore v1 operations > mdrestore: Extract target device size verification into a function > mdrestore: Define mdrestore ops for v2 format > mdrestore: Add support for passing log device as an argument > > db/io.c | 57 ++- > db/io.h | 2 + > db/metadump.c | 749 +++++++++++++++++++++++--------------- > db/xfs_metadump.sh | 3 +- > include/xfs_metadump.h | 60 ++- > man/man8/xfs_mdrestore.8 | 8 + > man/man8/xfs_metadump.8 | 14 + > mdrestore/xfs_mdrestore.c | 497 +++++++++++++++++++------ > 8 files changed, 985 insertions(+), 405 deletions(-) > > -- > 2.39.1 >