From: Peter Feiner <pe...@gridcentric.ca> Adds ramblocks' names to their backing files when using -mem-path. Eases introspection and debugging.
Signed-off-by: Peter Feiner <pe...@gridcentric.ca> --- The commit should probably be called "exec: add ramblocks' names to -mem-path files" since the paths aren't deterministic. v1 -> v2: Just add ramblock name to mkstemp template. v2 -> v3: Safely handle ramblocks with "/" in their names exec.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/exec.c b/exec.c index 46a2830..f84e095 100644 --- a/exec.c +++ b/exec.c @@ -844,6 +844,8 @@ static void *file_ram_alloc(RAMBlock *block, const char *path) { char *filename; + char *sanitized_name; + char *c; void *area; int fd; #ifdef MAP_POPULATE @@ -865,7 +867,16 @@ static void *file_ram_alloc(RAMBlock *block, return NULL; } - filename = g_strdup_printf("%s/qemu_back_mem.XXXXXX", path); + /* Make name safe to use with mkstemp by replacing '/' with '_'. */ + sanitized_name = g_strdup(block->mr->name); + for (c = sanitized_name; *c != '\0'; c++) { + if (*c == '/') + *c = '_'; + } + + filename = g_strdup_printf("%s/qemu_back_mem.%s.XXXXXX", path, + sanitized_name); + g_free(sanitized_name); fd = mkstemp(filename); if (fd < 0) { -- 1.7.10.4