reduce: don't pass size when loading pmem file
libpmem only allows passing a size when CREATE flag is set. This requires some updates in the unit test stubs for pmem_map_file as well. While here, do some additional cleanup and add a g_volatile_pm_buf_len to track the size of the allocated volatile pm buffer. Signed-off-by: Jim Harris <james.r.harris@intel.com> Change-Id: Ib9fe58fd9946161dd20bb8391be2e9680705ab22 Reviewed-on: https://review.gerrithub.io/435945 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
This commit is contained in:
parent
4cfae03606
commit
1d75aad3ff
@ -547,8 +547,8 @@ _load_read_super_and_path_cpl(void *cb_arg, int ziperrno)
|
|||||||
|
|
||||||
memcpy(vol->pm_file.path, load_ctx->path, sizeof(vol->pm_file.path));
|
memcpy(vol->pm_file.path, load_ctx->path, sizeof(vol->pm_file.path));
|
||||||
vol->pm_file.size = spdk_reduce_get_pm_file_size(&vol->params);
|
vol->pm_file.size = spdk_reduce_get_pm_file_size(&vol->params);
|
||||||
vol->pm_file.pm_buf = pmem_map_file(vol->pm_file.path, vol->pm_file.size,
|
vol->pm_file.pm_buf = pmem_map_file(vol->pm_file.path, 0, 0, 0, &mapped_len,
|
||||||
0, 0, &mapped_len, &vol->pm_file.pm_is_pmem);
|
&vol->pm_file.pm_is_pmem);
|
||||||
if (vol->pm_file.pm_buf == NULL) {
|
if (vol->pm_file.pm_buf == NULL) {
|
||||||
SPDK_ERRLOG("could not pmem_map_file(%s): %s\n", vol->pm_file.path, strerror(errno));
|
SPDK_ERRLOG("could not pmem_map_file(%s): %s\n", vol->pm_file.path, strerror(errno));
|
||||||
rc = -errno;
|
rc = -errno;
|
||||||
|
@ -44,6 +44,7 @@ static int g_ziperrno;
|
|||||||
static char *g_volatile_pm_buf;
|
static char *g_volatile_pm_buf;
|
||||||
static size_t g_volatile_pm_buf_len;
|
static size_t g_volatile_pm_buf_len;
|
||||||
static char *g_persistent_pm_buf;
|
static char *g_persistent_pm_buf;
|
||||||
|
static size_t g_persistent_pm_buf_len;
|
||||||
static bool g_backing_dev_closed;
|
static bool g_backing_dev_closed;
|
||||||
static char *g_backing_dev_buf;
|
static char *g_backing_dev_buf;
|
||||||
static const char *g_path;
|
static const char *g_path;
|
||||||
@ -159,18 +160,20 @@ pmem_map_file(const char *path, size_t len, int flags, mode_t mode,
|
|||||||
size_t *mapped_lenp, int *is_pmemp)
|
size_t *mapped_lenp, int *is_pmemp)
|
||||||
{
|
{
|
||||||
CU_ASSERT(g_volatile_pm_buf == NULL);
|
CU_ASSERT(g_volatile_pm_buf == NULL);
|
||||||
g_volatile_pm_buf = calloc(1, len);
|
|
||||||
g_volatile_pm_buf_len = len;
|
|
||||||
g_path = path;
|
g_path = path;
|
||||||
SPDK_CU_ASSERT_FATAL(g_volatile_pm_buf != NULL);
|
|
||||||
*mapped_lenp = len;
|
|
||||||
*is_pmemp = 1;
|
*is_pmemp = 1;
|
||||||
|
|
||||||
if (g_persistent_pm_buf == NULL) {
|
if (g_persistent_pm_buf == NULL) {
|
||||||
g_persistent_pm_buf = calloc(1, len);
|
g_persistent_pm_buf = calloc(1, len);
|
||||||
|
g_persistent_pm_buf_len = len;
|
||||||
SPDK_CU_ASSERT_FATAL(g_persistent_pm_buf != NULL);
|
SPDK_CU_ASSERT_FATAL(g_persistent_pm_buf != NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
*mapped_lenp = g_persistent_pm_buf_len;
|
||||||
|
g_volatile_pm_buf = calloc(1, g_persistent_pm_buf_len);
|
||||||
|
SPDK_CU_ASSERT_FATAL(g_volatile_pm_buf != NULL);
|
||||||
|
g_volatile_pm_buf_len = g_persistent_pm_buf_len;
|
||||||
|
|
||||||
return g_volatile_pm_buf;
|
return g_volatile_pm_buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -181,6 +184,7 @@ pmem_unmap(void *addr, size_t len)
|
|||||||
CU_ASSERT(len == g_volatile_pm_buf_len);
|
CU_ASSERT(len == g_volatile_pm_buf_len);
|
||||||
free(g_volatile_pm_buf);
|
free(g_volatile_pm_buf);
|
||||||
g_volatile_pm_buf = NULL;
|
g_volatile_pm_buf = NULL;
|
||||||
|
g_volatile_pm_buf_len = 0;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -191,6 +195,7 @@ persistent_pm_buf_destroy(void)
|
|||||||
CU_ASSERT(g_persistent_pm_buf != NULL);
|
CU_ASSERT(g_persistent_pm_buf != NULL);
|
||||||
free(g_persistent_pm_buf);
|
free(g_persistent_pm_buf);
|
||||||
g_persistent_pm_buf = NULL;
|
g_persistent_pm_buf = NULL;
|
||||||
|
g_persistent_pm_buf_len = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
Loading…
Reference in New Issue
Block a user