From 0db9cc321f11cb231ba609e53bcc790d3171e1d4 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Tue, 17 Mar 2026 17:29:07 +0000 Subject: util/nvmutil: split up copy_gbe Signed-off-by: Leah Rowe --- util/nvmutil/nvmutil.c | 42 +++++++++++++++++++++++++----------------- util/nvmutil/nvmutil.h | 1 + 2 files changed, 26 insertions(+), 17 deletions(-) (limited to 'util/nvmutil') diff --git a/util/nvmutil/nvmutil.c b/util/nvmutil/nvmutil.c index 002ec715..f6374a7a 100644 --- a/util/nvmutil/nvmutil.c +++ b/util/nvmutil/nvmutil.c @@ -560,6 +560,31 @@ xopen(int *fd_ptr, const char *path, int flags, struct stat *st) */ void copy_gbe(void) +{ + struct xfile *f = &nv->f; + + read_file(); + + /* + regular operations post-read operate only on the first + 8KB, because each GbE part is the first 4KB of each + half of the file. + + we no longer care about anything past 8KB, until we get + to writing, at which point we will flush the buffer + again + */ + + if (f->gbe_file_size == SIZE_8KB) + return; + + x_v_memcpy(f->buf + (unsigned long)GBE_PART_SIZE, + f->buf + (unsigned long)(f->gbe_file_size >> 1), + (unsigned long)GBE_PART_SIZE); +} + +void +read_file(void) { long _r; struct stat _st; @@ -614,23 +639,6 @@ copy_gbe(void) if (x_i_memcmp(f->buf, f->bufcmp, f->gbe_file_size) != 0) err(errno, "%s: %s: read contents differ (pre-test)", f->fname, f->tname); - - /* - regular operations post-read operate only on the first - 8KB, because each GbE part is the first 4KB of each - half of the file. - - we no longer care about anything past 8KB, until we get - to writing, at which point we will flush the buffer - again - */ - - if (f->gbe_file_size == SIZE_8KB) - return; - - x_v_memcpy(f->buf + (unsigned long)GBE_PART_SIZE, - f->buf + (unsigned long)(f->gbe_file_size >> 1), - (unsigned long)GBE_PART_SIZE); } void diff --git a/util/nvmutil/nvmutil.h b/util/nvmutil/nvmutil.h index b90a2e91..20e66dd9 100644 --- a/util/nvmutil/nvmutil.h +++ b/util/nvmutil/nvmutil.h @@ -321,6 +321,7 @@ void xopen(int *fd, const char *path, int flags, struct stat *st); * After this, we can run commands. */ void copy_gbe(void); +void read_file(void); void read_checksums(void); int good_checksum(unsigned long partnum); -- cgit v1.2.1