From 3e150bf3032074ba4270131fd3e1fb5f0b1cc43e Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sat, 28 Jan 2023 20:27:24 +0000 Subject: util/nvmutil: cmd_swap(): write sequentually the current code writes part 1 first, and part 0 next, on the disk, due to the way the swap works. with this change, swap still swaps the two parts of the file, on disk, but writes the new file sequentially. this change might speed up i/o on the file system, on HDDs. on SSDs, this change likely makes no difference at all. --- util/nvmutil/nvmutil.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'util/nvmutil/nvmutil.c') diff --git a/util/nvmutil/nvmutil.c b/util/nvmutil/nvmutil.c index 517cbc79..abbf2439 100644 --- a/util/nvmutil/nvmutil.c +++ b/util/nvmutil/nvmutil.c @@ -438,16 +438,21 @@ writeGbeFile(int *fd, const char *filename) nw = 128; for (p = 0; p < 2; p++) { + if (gbe[0] > gbe[1]) + p ^= 1; if (nvmPartModified[p]) { printf("Part %d modified\n", p); } else { fprintf (stderr, "Part %d NOT modified\n", p); - continue; + goto next_part; } if (pwrite((*fd), (uint8_t *) gbe[p], nw, p << 12) != nw) err(errno, "%s", filename); tw += nw; +next_part: + if (gbe[0] > gbe[1]) + p ^= 1; } if (close((*fd))) err(errno, "%s", filename); -- cgit v1.2.1