summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--util/nvmutil/nvmutil.c42
-rw-r--r--util/nvmutil/nvmutil.h1
2 files changed, 26 insertions, 17 deletions
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
@@ -561,6 +561,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);