qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH RFC 11/36] 9pfs: local: post rename operation for ma


From: Greg Kurz
Subject: [Qemu-devel] [PATCH RFC 11/36] 9pfs: local: post rename operation for mapped-file security
Date: Mon, 30 Jan 2017 13:11:00 +0100
User-agent: StGit/0.17.1-20-gc0b1b-dirty

The rename operation is really the same for the passthrough and mapped
security models. This patch simply moves the mapped-file bits to a
separate function. This will make future modifications easier.

This doesn't fix any bug, it is just preparatory cleanup.

Signed-off-by: Greg Kurz <address@hidden>
---
 hw/9pfs/9p-local.c |   36 ++++++++++++++++++++++++------------
 1 file changed, 24 insertions(+), 12 deletions(-)

diff --git a/hw/9pfs/9p-local.c b/hw/9pfs/9p-local.c
index df453414c902..74953e4dbfe0 100644
--- a/hw/9pfs/9p-local.c
+++ b/hw/9pfs/9p-local.c
@@ -1187,6 +1187,29 @@ static int local_truncate(FsContext *ctx, V9fsPath 
*fs_path, off_t size)
     return ret;
 }
 
+static int local_post_rename_mapped_file(FsContext *ctx, const char *oldpath,
+                                         const char *newpath)
+{
+    int err;
+    char *buffer, *buffer1;
+
+    err = local_create_mapped_attr_dir(ctx, newpath);
+    if (err < 0) {
+        return err;
+    }
+    /* rename the .virtfs_metadata files */
+    buffer = local_mapped_attr_path(ctx, oldpath);
+    buffer1 = local_mapped_attr_path(ctx, newpath);
+    err = rename(buffer, buffer1);
+    g_free(buffer);
+    g_free(buffer1);
+    if (err < 0 && errno != ENOENT) {
+        return err;
+    }
+
+    return 0;
+}
+
 static int local_rename(FsContext *ctx, const char *oldpath,
                         const char *newpath)
 {
@@ -1202,19 +1225,8 @@ static int local_rename(FsContext *ctx, const char 
*oldpath,
     }
 
     if (ctx->export_flags & V9FS_SM_MAPPED_FILE) {
-        char *vbuffer, *vbuffer1;
-
-        err = local_create_mapped_attr_dir(ctx, newpath);
+        err = local_post_rename_mapped_file(ctx, oldpath, newpath);
         if (err < 0) {
-            goto out_err;
-        }
-        /* rename the .virtfs_metadata files */
-        vbuffer = local_mapped_attr_path(ctx, oldpath);
-        vbuffer1 = local_mapped_attr_path(ctx, newpath);
-        err = rename(vbuffer, vbuffer1);
-        g_free(vbuffer);
-        g_free(vbuffer1);
-        if (err < 0 && errno != ENOENT) {
             goto err_out;
         }
     }




reply via email to

[Prev in Thread] Current Thread [Next in Thread]