Patchwork [5/6] file_ram_alloc(): extract temporary-file creation code to separate function (v2)

login
register
mail settings
Submitter Eduardo Habkost
Date July 2, 2012, 6:06 p.m.
Message ID <1341252398-12268-6-git-send-email-ehabkost@redhat.com>
Download mbox | patch
Permalink /patch/168630/
State New
Headers show

Comments

Eduardo Habkost - July 2, 2012, 6:06 p.m.
Changes v1 -> v2:
 - Fix trailing space issue
 - Rebase against new code using g_strdup_printf()

Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
 exec.c |   29 ++++++++++++++++++++++-------
 1 file changed, 22 insertions(+), 7 deletions(-)

Patch

diff --git a/exec.c b/exec.c
index 1e98244..456ac73 100644
--- a/exec.c
+++ b/exec.c
@@ -2356,11 +2356,31 @@  static long gethugepagesize(const char *path)
     return fs.f_bsize;
 }
 
+/* Return FD to temporary file inside directory at 'path',
+ * truncated to size 'length'
+ */
+static int get_temp_fd(const char *path)
+{
+    int fd;
+    gchar *filename;
+
+    filename = g_strdup_printf("%s/qemu_back_mem.XXXXXX", path);
+    fd = mkstemp(filename);
+    if (fd < 0) {
+        perror("unable to create backing store for hugepages");
+        g_free(filename);
+        return -1;
+    }
+    unlink(filename);
+    g_free(filename);
+
+    return fd;
+}
+
 static void *file_ram_alloc(RAMBlock *block,
                             size_t length,
                             const char *path)
 {
-    gchar *filename;
     void *area;
     int fd;
 #ifdef MAP_POPULATE
@@ -2382,15 +2402,10 @@  static void *file_ram_alloc(RAMBlock *block,
         return NULL;
     }
 
-    filename = g_strdup_printf("%s/qemu_back_mem.XXXXXX", path);
-    fd = mkstemp(filename);
+    fd = get_temp_fd(path);
     if (fd < 0) {
-        perror("unable to create backing store for hugepages");
-        g_free(filename);
         return NULL;
     }
-    unlink(filename);
-    g_free(filename);
 
     length = (length + hpagesize - 1) & ~(hpagesize - 1);