@@ -135,24 +135,34 @@ static int fill_cache_write(unsigned char *buf, size_t buf_size, bool once)
return 0;
}
-static int fill_cache(size_t buf_size, int memflush, int op, bool once)
+static unsigned char *alloc_buffer(size_t buf_size, int memflush)
{
unsigned char *buf;
- int ret;
buf = malloc_and_init_memory(buf_size);
if (!buf)
- return -1;
+ return NULL;
/* Flush the memory before using to avoid "cache hot pages" effect */
if (memflush)
mem_flush(buf, buf_size);
+ return buf;
+}
+
+static int fill_cache(size_t buf_size, int memflush, int op, bool once)
+{
+ unsigned char *buf;
+ int ret;
+
+ buf = alloc_buffer(buf_size, memflush);
+ if (!buf)
+ return -1;
+
if (op == 0)
ret = fill_cache_read(buf, buf_size, once);
else
ret = fill_cache_write(buf, buf_size, once);
-
free(buf);
if (ret) {
@@ -160,8 +170,7 @@ static int fill_cache(size_t buf_size, int memflush, int op, bool once)
return -1;
}
-
- return 0;
+ return ret;
}
int run_fill_buf(size_t span, int memflush, int op, bool once)