Hi,
This patch series has been forgotten for a while but can still be
applied. Can anyone review it?
Regards,
Akihiko Odaki
On 2023/09/21 16:54, Akihiko Odaki wrote:
> qemu_get_runtime_dir() returns a dynamically allocated directory path
> that is appropriate for storing runtime files. It corresponds to "run"
> directory in Unix.
>
> With a tree-wide search, it was found that there are several cases
> where such a functionality is implemented so let's have one as a common
> utlity function.
>
> A notable feature of qemu_get_runtime_dir() is that it uses
> $XDG_RUNTIME_DIR if available. While the function is often called by
> executables which requires root privileges, it is still possible that
> they are called from a user without privilege to write the system
> runtime directory. In fact, I decided to write this patch when I ran
> virtiofsd in a Linux namespace created by a normal user and realized
> it tries to write the system runtime directory, not writable in this
> case. $XDG_RUNTIME_DIR should provide a writable directory in such
> cases.
>
> This function does not use qemu_get_local_state_dir() or its logic
> for Windows. Actually the implementation of qemu_get_local_state_dir()
> for Windows seems not right as it calls g_get_system_data_dirs(),
> which refers to $XDG_DATA_DIRS. In Unix terminology, it is basically
> "/usr/share", not "/var", which qemu_get_local_state_dir() is intended
> to provide. Instead, this function try to use the following in order:
> - $XDG_RUNTIME_DIR
> - LocalAppData folder
> - get_relocated_path(CONFIG_QEMU_LOCALSTATEDIR "/run")
>
> This function does not use g_get_user_runtime_dir() either as it
> falls back to g_get_user_cache_dir() when $XDG_DATA_DIRS is not
> available. In the case, we rather use:
> get_relocated_path(CONFIG_QEMU_LOCALSTATEDIR "/run")
>
> V2 -> V3:
> Rebase to the current master.
> Dropped patch "qga: Remove platform GUID definitions" since it is
> irrelevant.
>
> V1 -> V2:
> Rebased to the current master since Patchew complains.
>
> Akihiko Odaki (8):
> util: Introduce qemu_get_runtime_dir()
> ivshmem-server: Use qemu_get_runtime_dir()
> contrib/rdmacm-mux: Use qemu_get_runtime_dir()
> qga: Use qemu_get_runtime_dir()
> scsi: Use qemu_get_runtime_dir()
> module: Use qemu_get_runtime_dir()
> util: Remove qemu_get_local_state_dir()
> spice-app: Use qemu_get_runtime_dir()
>
> include/qemu/osdep.h | 10 +++++++---
> contrib/ivshmem-server/main.c | 20 ++++++++++++++++----
> contrib/rdmacm-mux/main.c | 22 ++++++++++++++--------
> qga/main.c | 9 ++++-----
> scsi/qemu-pr-helper.c | 6 +++---
> ui/spice-app.c | 4 ++--
> util/module.c | 3 ++-
> util/oslib-posix.c | 9 +++++++--
> util/oslib-win32.c | 24 ++++++++++++++++++++----
> contrib/rdmacm-mux/meson.build | 2 +-
> 10 files changed, 76 insertions(+), 33 deletions(-)
>