all lists on lists.proxmox.com
 help / color / mirror / Atom feed
* [pve-devel] [PATCH v2 qemu] fix #4710: vma create: don't use O_DIRECT for tmpfs
@ 2023-11-07 14:28 Fiona Ebner
  2023-11-07 15:37 ` [pve-devel] applied: " Thomas Lamprecht
  0 siblings, 1 reply; 2+ messages in thread
From: Fiona Ebner @ 2023-11-07 14:28 UTC (permalink / raw)
  To: pve-devel

The implementation of the helper is_path_tmpfs() is similar to the
existing qemu_fd_getfs() function in util/mmap-alloc.c, which
unfortunately only takes an existing fd.

Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
---

Changes in v2:
    * rebase on current master (just context changes)

 ...VE-Backup-add-vma-backup-format-code.patch | 37 ++++++++++++++++---
 1 file changed, 31 insertions(+), 6 deletions(-)

diff --git a/debian/patches/pve/0027-PVE-Backup-add-vma-backup-format-code.patch b/debian/patches/pve/0027-PVE-Backup-add-vma-backup-format-code.patch
index f42a06f..1620a56 100644
--- a/debian/patches/pve/0027-PVE-Backup-add-vma-backup-format-code.patch
+++ b/debian/patches/pve/0027-PVE-Backup-add-vma-backup-format-code.patch
@@ -16,10 +16,10 @@ Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
  block/meson.build |   2 +
  meson.build       |   5 +
  vma-reader.c      | 867 ++++++++++++++++++++++++++++++++++++++++++++
- vma-writer.c      | 793 ++++++++++++++++++++++++++++++++++++++++
+ vma-writer.c      | 818 +++++++++++++++++++++++++++++++++++++++++
  vma.c             | 900 ++++++++++++++++++++++++++++++++++++++++++++++
  vma.h             | 150 ++++++++
- 6 files changed, 2717 insertions(+)
+ 6 files changed, 2742 insertions(+)
  create mode 100644 vma-reader.c
  create mode 100644 vma-writer.c
  create mode 100644 vma.c
@@ -936,10 +936,10 @@ index 0000000000..81a891c6b1
 +
 diff --git a/vma-writer.c b/vma-writer.c
 new file mode 100644
-index 0000000000..6b7af81cae
+index 0000000000..126b296647
 --- /dev/null
 +++ b/vma-writer.c
-@@ -0,0 +1,793 @@
+@@ -0,0 +1,818 @@
 +/*
 + * VMA: Virtual Machine Archive
 + *
@@ -955,6 +955,8 @@ index 0000000000..6b7af81cae
 +
 +#include "qemu/osdep.h"
 +#include <glib.h>
++#include <linux/magic.h>
++#include <sys/vfs.h>
 +#include <uuid/uuid.h>
 +
 +#include "vma.h"
@@ -963,6 +965,7 @@ index 0000000000..6b7af81cae
 +#include "qemu/main-loop.h"
 +#include "qemu/coroutine.h"
 +#include "qemu/cutils.h"
++#include "qemu/error-report.h"
 +#include "qemu/memalign.h"
 +
 +#define DEBUG_VMA 0
@@ -1198,6 +1201,23 @@ index 0000000000..6b7af81cae
 +    return (done == bytes) ? bytes : -1;
 +}
 +
++static bool is_path_tmpfs(const char *path) {
++    struct statfs fs;
++    int ret;
++
++    do {
++        ret = statfs(path, &fs);
++    } while (ret != 0 && errno == EINTR);
++
++    if (ret != 0) {
++        warn_report("statfs call for %s failed, assuming not tmpfs - %s\n",
++                    path, strerror(errno));
++        return false;
++    }
++
++    return fs.f_type == TMPFS_MAGIC;
++}
++
 +VmaWriter *vma_writer_create(const char *filename, uuid_t uuid, Error **errp)
 +{
 +    const char *p;
@@ -1247,8 +1267,13 @@ index 0000000000..6b7af81cae
 +            }
 +            /* try to use O_NONBLOCK */
 +            fcntl(vmaw->fd, F_SETFL, fcntl(vmaw->fd, F_GETFL)|O_NONBLOCK);
-+        } else  {
-+            oflags = O_NONBLOCK|O_DIRECT|O_WRONLY|O_EXCL;
++        } else {
++            gchar *dirname = g_path_get_dirname(filename);
++            oflags = O_NONBLOCK|O_WRONLY|O_EXCL;
++            if (!is_path_tmpfs(dirname)) {
++                oflags |= O_DIRECT;
++            }
++            g_free(dirname);
 +            vmaw->fd = qemu_create(filename, oflags, 0644, errp);
 +        }
 +
-- 
2.39.2





^ permalink raw reply	[flat|nested] 2+ messages in thread

* [pve-devel] applied: [PATCH v2 qemu] fix #4710: vma create: don't use O_DIRECT for tmpfs
  2023-11-07 14:28 [pve-devel] [PATCH v2 qemu] fix #4710: vma create: don't use O_DIRECT for tmpfs Fiona Ebner
@ 2023-11-07 15:37 ` Thomas Lamprecht
  0 siblings, 0 replies; 2+ messages in thread
From: Thomas Lamprecht @ 2023-11-07 15:37 UTC (permalink / raw)
  To: Proxmox VE development discussion, Fiona Ebner

Am 07/11/2023 um 15:28 schrieb Fiona Ebner:
> The implementation of the helper is_path_tmpfs() is similar to the
> existing qemu_fd_getfs() function in util/mmap-alloc.c, which
> unfortunately only takes an existing fd.
> 
> Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
> ---
> 
> Changes in v2:
>     * rebase on current master (just context changes)
> 
>  ...VE-Backup-add-vma-backup-format-code.patch | 37 ++++++++++++++++---
>  1 file changed, 31 insertions(+), 6 deletions(-)
> 
>

applied, thanks!




^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2023-11-07 15:38 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-11-07 14:28 [pve-devel] [PATCH v2 qemu] fix #4710: vma create: don't use O_DIRECT for tmpfs Fiona Ebner
2023-11-07 15:37 ` [pve-devel] applied: " Thomas Lamprecht

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal