summaryrefslogtreecommitdiff
path: root/util
diff options
context:
space:
mode:
authorLeah Rowe <leah@libreboot.org>2023-01-28 20:27:24 +0000
committerLeah Rowe <leah@libreboot.org>2023-01-28 20:30:34 +0000
commit3e150bf3032074ba4270131fd3e1fb5f0b1cc43e (patch)
tree3483f150183fb8c03658bffee50a5defc166c57d /util
parent7e3a73558e8d1a410e225a0b102db38891a4990e (diff)
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.
Diffstat (limited to 'util')
-rw-r--r--util/nvmutil/nvmutil.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/util/nvmutil/nvmutil.c b/util/nvmutil/nvmutil.c
index 517cbc7..abbf243 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);