Currently, if the user switch source and target parameters position, xfs_mdrestore truncates the dumpfile before abort the execution. This patch checks the target parameter and if XFS_MD_MAGIC is found, it aborts execution and leave dump file intact. Signed-off-by: Marco A Benatto <marco.antonio.780@xxxxxxxxx> --- mdrestore/xfs_mdrestore.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/mdrestore/xfs_mdrestore.c b/mdrestore/xfs_mdrestore.c index c49c13a..b4bf7b4 100644 --- a/mdrestore/xfs_mdrestore.c +++ b/mdrestore/xfs_mdrestore.c @@ -205,7 +205,7 @@ main( int argc, char **argv) { - FILE *src_f; + FILE *src_f, *dst_f; int dst_fd; int c; int open_flags; @@ -277,6 +277,7 @@ main( optind++; + /* check and open target */ open_flags = O_RDWR; is_target_file = 0; @@ -285,6 +286,19 @@ main( open_flags |= O_CREAT; is_target_file = 1; } else if (S_ISREG(statbuf.st_mode)) { + xfs_metablock_t mb; + + dst_f = fopen(argv[optind], "rb"); + if (dst_f == NULL) + fatal("cannot open target\n"); + + if (fread(&mb, sizeof(mb), 1, dst_f) == 1) { + if (be32_to_cpu(mb.mb_magic) == XFS_MD_MAGIC) + fatal("target file is a xfs_metadump. switched arguments?\n"); + } + + fclose(dst_f); + open_flags |= O_TRUNC; is_target_file = 1; } else { -- 1.8.3.1 -- To unsubscribe from this list: send the line "unsubscribe linux-xfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html