]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
metadump: Introduce struct metadump_ops
authorChandan Babu R <chandan.babu@oracle.com>
Mon, 6 Nov 2023 13:10:40 +0000 (18:40 +0530)
committerCarlos Maiolino <cem@kernel.org>
Tue, 21 Nov 2023 13:09:36 +0000 (14:09 +0100)
We will need two sets of functions to implement two versions of metadump. This
commit adds the definition for 'struct metadump_ops' to hold pointers to
version specific metadump functions.

Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>
Signed-off-by: Chandan Babu R <chandan.babu@oracle.com>
Signed-off-by: Carlos Maiolino <cem@kernel.org>
db/metadump.c

index 24f0b41fda5ea97ad01589ce72ebcbbf2bbfabb4..a2ec6ab569abf1ab0b38945d1e44c654ce360f85 100644 (file)
@@ -41,6 +41,30 @@ static const cmdinfo_t       metadump_cmd =
                N_("[-a] [-e] [-g] [-m max_extent] [-w] [-o] filename"),
                N_("dump metadata to a file"), metadump_help };
 
+struct metadump_ops {
+       /*
+        * Initialize Metadump. This may perform actions such as
+        * 1. Allocating memory for structures required for dumping the
+        *    metadata.
+        * 2. Writing a header to the beginning of the metadump file.
+        */
+       int (*init)(void);
+       /*
+        * Write metadata to the metadump file along with the required ancillary
+        * data. @off and @len are in units of 512 byte blocks.
+        */
+       int (*write)(enum typnm type, const char *data, xfs_daddr_t off,
+                       int len);
+       /*
+        * Flush any in-memory remanents of metadata to the metadump file.
+        */
+       int (*finish_dump)(void);
+       /*
+        * Free resources allocated during metadump process.
+        */
+       void (*release)(void);
+};
+
 static struct metadump {
        int                     version;
        bool                    show_progress;
@@ -55,6 +79,7 @@ static struct metadump {
        xfs_ino_t               cur_ino;
        /* Metadump file */
        FILE                    *outf;
+       struct metadump_ops     *mdops;
        /* header + index + buffers */
        struct xfs_metablock    *metablock;
        __be64                  *block_index;