[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v4 21/29] util: use fcntl() for qemu_write_pidfile()
From: |
Marc-André Lureau |
Subject: |
[Qemu-devel] [PATCH v4 21/29] util: use fcntl() for qemu_write_pidfile() locking |
Date: |
Fri, 13 Jul 2018 15:09:08 +0200 |
According to Daniel Berrange, fcntl() locks have better portable
semantics than lockf().
Use an exclusive lock on the first byte with fcntl().
Signed-off-by: Marc-André Lureau <address@hidden>
---
util/oslib-posix.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/util/oslib-posix.c b/util/oslib-posix.c
index da1d4a3201..26b11490b9 100644
--- a/util/oslib-posix.c
+++ b/util/oslib-posix.c
@@ -92,6 +92,11 @@ bool qemu_write_pidfile(const char *pidfile, Error **errp)
{
int pidfd;
char pidstr[32];
+ struct flock lock = {
+ .l_type = F_WRLCK,
+ .l_whence = SEEK_SET,
+ .l_len = 1,
+ };
pidfd = qemu_open(pidfile, O_CREAT | O_WRONLY, S_IRUSR | S_IWUSR);
if (pidfd == -1) {
@@ -99,10 +104,11 @@ bool qemu_write_pidfile(const char *pidfile, Error **errp)
return false;
}
- if (lockf(pidfd, F_TLOCK, 0)) {
+ if (fcntl(pidfd, F_SETLK, &lock)) {
error_setg_errno(errp, errno, "Cannot lock pid file");
goto fail;
}
+
if (ftruncate(pidfd, 0)) {
error_setg_errno(errp, errno, "Failed to truncate pid file");
goto fail;
--
2.18.0.129.ge3331758f1
- [Qemu-devel] [PATCH v4 10/29] HACK: vhost-user-backend: allow to specify binary to execute, (continued)
- [Qemu-devel] [PATCH v4 10/29] HACK: vhost-user-backend: allow to specify binary to execute, Marc-André Lureau, 2018/07/13
- [Qemu-devel] [PATCH v4 11/29] vhost-user: split vhost_user_read(), Marc-André Lureau, 2018/07/13
- [Qemu-devel] [PATCH v4 12/29] vhost-user: add vhost_user_input_get_config(), Marc-André Lureau, 2018/07/13
- [Qemu-devel] [PATCH v4 13/29] libvhost-user: export vug_source_new(), Marc-André Lureau, 2018/07/13
- [Qemu-devel] [PATCH v4 14/29] contrib: add vhost-user-input, Marc-André Lureau, 2018/07/13
- [Qemu-devel] [PATCH v4 15/29] Add vhost-user-input-pci, Marc-André Lureau, 2018/07/13
- [Qemu-devel] [PATCH v4 16/29] vhost-user: add vhost_user_gpu_set_socket(), Marc-André Lureau, 2018/07/13
- [Qemu-devel] [PATCH v4 17/29] vhost-user: add vhost_user_gpu_get_num_capsets(), Marc-André Lureau, 2018/07/13
- [Qemu-devel] [PATCH v4 18/29] virtio: add virtio-gpu bswap helpers header, Marc-André Lureau, 2018/07/13
- [Qemu-devel] [PATCH v4 19/29] util: promote qemu_egl_rendernode_open() to libqemuutil, Marc-André Lureau, 2018/07/13
- [Qemu-devel] [PATCH v4 21/29] util: use fcntl() for qemu_write_pidfile() locking,
Marc-André Lureau <=
- [Qemu-devel] [PATCH v4 20/29] util: add qemu_write_pidfile(), Marc-André Lureau, 2018/07/13
- [Qemu-devel] [PATCH v4 23/29] virtio-gpu: remove unused qdev, Marc-André Lureau, 2018/07/13
- [Qemu-devel] [PATCH v4 25/29] virtio-gpu: block both 2d and 3d rendering, Marc-André Lureau, 2018/07/13
- [Qemu-devel] [PATCH v4 24/29] virtio-gpu: remove unused config_size, Marc-André Lureau, 2018/07/13
- [Qemu-devel] [PATCH v4 22/29] contrib: add vhost-user-gpu, Marc-André Lureau, 2018/07/13
- [Qemu-devel] [PATCH v4 26/29] virtio-gpu: remove useless 'waiting' field, Marc-André Lureau, 2018/07/13
- [Qemu-devel] [PATCH v4 28/29] virtio-gpu: split virtio-gpu-pci & virtio-vga, Marc-André Lureau, 2018/07/13
- [Qemu-devel] [PATCH v4 29/29] hw/display: add vhost-user-vga & gpu-pci, Marc-André Lureau, 2018/07/13
- [Qemu-devel] [PATCH v4 27/29] virtio-gpu: split virtio-gpu, introduce virtio-gpu-base, Marc-André Lureau, 2018/07/13