diff mbox series

[V2,20/23] mdrestore: Introduce mdrestore v1 operations

Message ID 20230606092806.1604491-21-chandan.babu@oracle.com (mailing list archive)
State Superseded, archived
Headers show
Series Metadump v2 | expand

Commit Message

Chandan Babu R June 6, 2023, 9:28 a.m. UTC
In order to indicate the version of metadump files that they can work with,
this commit renames read_header(), show_info() and restore() functions to
read_header_v1(), show_info_v1() and restore_v1() respectively.

Signed-off-by: Chandan Babu R <chandan.babu@oracle.com>
---
 mdrestore/xfs_mdrestore.c | 39 ++++++++++++++++++---------------------
 1 file changed, 18 insertions(+), 21 deletions(-)

Comments

Darrick J. Wong July 12, 2023, 5:57 p.m. UTC | #1
On Tue, Jun 06, 2023 at 02:58:03PM +0530, Chandan Babu R wrote:
> In order to indicate the version of metadump files that they can work with,
> this commit renames read_header(), show_info() and restore() functions to
> read_header_v1(), show_info_v1() and restore_v1() respectively.
> 
> Signed-off-by: Chandan Babu R <chandan.babu@oracle.com>

Reviewed-by: Darrick J. Wong <djwong@kernel.org>

--D

> ---
>  mdrestore/xfs_mdrestore.c | 39 ++++++++++++++++++---------------------
>  1 file changed, 18 insertions(+), 21 deletions(-)
> 
> diff --git a/mdrestore/xfs_mdrestore.c b/mdrestore/xfs_mdrestore.c
> index 5451a58b..b34eda2c 100644
> --- a/mdrestore/xfs_mdrestore.c
> +++ b/mdrestore/xfs_mdrestore.c
> @@ -86,7 +86,7 @@ open_device(
>  }
>  
>  static void
> -read_header(
> +read_header_v1(
>  	void			*header,
>  	FILE			*md_fp)
>  {
> @@ -100,7 +100,7 @@ read_header(
>  }
>  
>  static void
> -show_info(
> +show_info_v1(
>  	void			*header,
>  	const char		*md_file)
>  {
> @@ -117,24 +117,14 @@ show_info(
>  	}
>  }
>  
> -/*
> - * restore() -- do the actual work to restore the metadump
> - *
> - * @src_f: A FILE pointer to the source metadump
> - * @dst_fd: the file descriptor for the target file
> - * @is_target_file: designates whether the target is a regular file
> - * @mbp: pointer to metadump's first xfs_metablock, read and verified by the caller
> - *
> - * src_f should be positioned just past a read the previously validated metablock
> - */
>  static void
> -restore(
> +restore_v1(
>  	void			*header,
>  	FILE			*md_fp,
>  	int			ddev_fd,
> -	int			is_target_file)
> +	bool			is_target_file)
>  {
> -	struct xfs_metablock	*metablock;	/* header + index + blocks */
> +	struct xfs_metablock	*metablock;
>  	struct xfs_metablock	*mbp;
>  	__be64			*block_index;
>  	char			*block_buffer;
> @@ -259,6 +249,12 @@ restore(
>  	free(metablock);
>  }
>  
> +static struct mdrestore_ops mdrestore_ops_v1 = {
> +	.read_header	= read_header_v1,
> +	.show_info	= show_info_v1,
> +	.restore	= restore_v1,
> +};
> +
>  static void
>  usage(void)
>  {
> @@ -310,9 +306,9 @@ main(
>  
>  	/*
>  	 * open source and test if this really is a dump. The first metadump
> -	 * block will be passed to restore() which will continue to read the
> -	 * file from this point. This avoids rewind the stream, which causes
> -	 * restore to fail when source was being read from stdin.
> +	 * block will be passed to mdrestore_ops->restore() which will continue
> +	 * to read the file from this point. This avoids rewind the stream,
> +	 * which causes restore to fail when source was being read from stdin.
>   	 */
>  	if (strcmp(argv[optind], "-") == 0) {
>  		src_f = stdin;
> @@ -330,16 +326,17 @@ main(
>  	switch (be32_to_cpu(magic)) {
>  	case XFS_MD_MAGIC_V1:
>  		header = &mb;
> +		mdrestore.mdrops = &mdrestore_ops_v1;
>  		break;
>  	default:
>  		fatal("specified file is not a metadata dump\n");
>  		break;
>  	}
>  
> -	read_header(header, src_f);
> +	mdrestore.mdrops->read_header(header, src_f);
>  
>  	if (mdrestore.show_info) {
> -		show_info(header, argv[optind]);
> +		mdrestore.mdrops->show_info(header, argv[optind]);
>  
>  		if (argc - optind == 1)
>  			exit(0);
> @@ -350,7 +347,7 @@ main(
>  	/* check and open target */
>  	dst_fd = open_device(argv[optind], &is_target_file);
>  
> -	restore(header, src_f, dst_fd, is_target_file);
> +	mdrestore.mdrops->restore(header, src_f, dst_fd, is_target_file);
>  
>  	close(dst_fd);
>  	if (src_f != stdin)
> -- 
> 2.39.1
>
diff mbox series

Patch

diff --git a/mdrestore/xfs_mdrestore.c b/mdrestore/xfs_mdrestore.c
index 5451a58b..b34eda2c 100644
--- a/mdrestore/xfs_mdrestore.c
+++ b/mdrestore/xfs_mdrestore.c
@@ -86,7 +86,7 @@  open_device(
 }
 
 static void
-read_header(
+read_header_v1(
 	void			*header,
 	FILE			*md_fp)
 {
@@ -100,7 +100,7 @@  read_header(
 }
 
 static void
-show_info(
+show_info_v1(
 	void			*header,
 	const char		*md_file)
 {
@@ -117,24 +117,14 @@  show_info(
 	}
 }
 
-/*
- * restore() -- do the actual work to restore the metadump
- *
- * @src_f: A FILE pointer to the source metadump
- * @dst_fd: the file descriptor for the target file
- * @is_target_file: designates whether the target is a regular file
- * @mbp: pointer to metadump's first xfs_metablock, read and verified by the caller
- *
- * src_f should be positioned just past a read the previously validated metablock
- */
 static void
-restore(
+restore_v1(
 	void			*header,
 	FILE			*md_fp,
 	int			ddev_fd,
-	int			is_target_file)
+	bool			is_target_file)
 {
-	struct xfs_metablock	*metablock;	/* header + index + blocks */
+	struct xfs_metablock	*metablock;
 	struct xfs_metablock	*mbp;
 	__be64			*block_index;
 	char			*block_buffer;
@@ -259,6 +249,12 @@  restore(
 	free(metablock);
 }
 
+static struct mdrestore_ops mdrestore_ops_v1 = {
+	.read_header	= read_header_v1,
+	.show_info	= show_info_v1,
+	.restore	= restore_v1,
+};
+
 static void
 usage(void)
 {
@@ -310,9 +306,9 @@  main(
 
 	/*
 	 * open source and test if this really is a dump. The first metadump
-	 * block will be passed to restore() which will continue to read the
-	 * file from this point. This avoids rewind the stream, which causes
-	 * restore to fail when source was being read from stdin.
+	 * block will be passed to mdrestore_ops->restore() which will continue
+	 * to read the file from this point. This avoids rewind the stream,
+	 * which causes restore to fail when source was being read from stdin.
  	 */
 	if (strcmp(argv[optind], "-") == 0) {
 		src_f = stdin;
@@ -330,16 +326,17 @@  main(
 	switch (be32_to_cpu(magic)) {
 	case XFS_MD_MAGIC_V1:
 		header = &mb;
+		mdrestore.mdrops = &mdrestore_ops_v1;
 		break;
 	default:
 		fatal("specified file is not a metadata dump\n");
 		break;
 	}
 
-	read_header(header, src_f);
+	mdrestore.mdrops->read_header(header, src_f);
 
 	if (mdrestore.show_info) {
-		show_info(header, argv[optind]);
+		mdrestore.mdrops->show_info(header, argv[optind]);
 
 		if (argc - optind == 1)
 			exit(0);
@@ -350,7 +347,7 @@  main(
 	/* check and open target */
 	dst_fd = open_device(argv[optind], &is_target_file);
 
-	restore(header, src_f, dst_fd, is_target_file);
+	mdrestore.mdrops->restore(header, src_f, dst_fd, is_target_file);
 
 	close(dst_fd);
 	if (src_f != stdin)