Message ID | 20230921075425.16738-1-akihiko.odaki@daynix.com |
---|---|
Headers | show |
Series | util: Introduce qemu_get_runtime_dir() | expand |
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(-) >