From patchwork Mon Mar 4 18:54:25 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Feiner X-Patchwork-Id: 224783 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 352962C02B8 for ; Tue, 5 Mar 2013 06:13:05 +1100 (EST) Received: from localhost ([::1]:47711 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UCaop-0004as-B0 for incoming@patchwork.ozlabs.org; Mon, 04 Mar 2013 14:13:03 -0500 Received: from eggs.gnu.org ([208.118.235.92]:45326) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UCaoV-0004TZ-4U for qemu-devel@nongnu.org; Mon, 04 Mar 2013 14:12:48 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UCaoQ-0007Qs-Dl for qemu-devel@nongnu.org; Mon, 04 Mar 2013 14:12:43 -0500 Received: from mail-ie0-x234.google.com ([2607:f8b0:4001:c03::234]:55916) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UCaWl-0001Gj-N8 for qemu-devel@nongnu.org; Mon, 04 Mar 2013 13:54:23 -0500 Received: by mail-ie0-f180.google.com with SMTP id bn7so6684783ieb.11 for ; Mon, 04 Mar 2013 10:54:22 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=x-received:from:to:cc:subject:date:message-id:x-mailer :x-gm-message-state; bh=JqkGYY7wQ0P4O/RtKZxmtFvF+bCKDB8e21hiP/JEiQo=; b=Hqxe+6GRuRCg+br9pMEvqXi5g2DkV9wPdpaDHMXsitA3Z0GEUFKg4ItqMhS5+tLbKQ 8269WYkUUjr0giNsRtQAjbTGGEL5t7QzzyqIh9/TO5WJiqi3xA/Bbg2FGuKtOZmJMB/u LdHet3ktFZAsidWFgZOKhIq1VkAfSTLnxG6UrnmMph9sivG+iQ6wIZKyZAo8THpgaliv wawCjSo3dalfRRZHWs1GQPU8TGFd7BCEeW8FzZ18epLS4wNFbohykpOAjFAXTVgHSpSm Bj/psWFb+YIbTPmwp91tQ+WHHmmghYswZOE2EIRtnL7Q7X7tcy5itgmRLNeR+U0360px V18A== X-Received: by 10.50.193.129 with SMTP id ho1mr3309222igc.94.1362423262590; Mon, 04 Mar 2013 10:54:22 -0800 (PST) Received: from jam.gridcentric.ca ([206.223.182.18]) by mx.google.com with ESMTPS id xc3sm10558102igb.10.2013.03.04.10.54.21 (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Mon, 04 Mar 2013 10:54:21 -0800 (PST) From: peter@gridcentric.ca To: qemu-devel@nongnu.org, aliguori@us.ibm.com, afaerber@suse.de Date: Mon, 4 Mar 2013 13:54:25 -0500 Message-Id: <1362423265-15855-1-git-send-email-peter@gridcentric.ca> X-Mailer: git-send-email 1.7.10.4 X-Gm-Message-State: ALoCoQk3Kc93A7gj59jRO734m0o8h89HUxAgbP1Atwi6pSc36jGW6NPyXJilzqR281Wf2yBMci9n X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2607:f8b0:4001:c03::234 Cc: andreslc@gridcentric.ca, peter@gridcentric.ca Subject: [Qemu-devel] [PATCH v3] exec: make -mem-path filenames deterministic X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org From: Peter Feiner Adds ramblocks' names to their backing files when using -mem-path. Eases introspection and debugging. Signed-off-by: Peter Feiner --- 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) {