Move file-posix's helper to add a flag (or a set of flags) to an FD's existing set of flags into osdep.c for other places to use.
Suggested-by: Eric Blake <ebl...@redhat.com> Signed-off-by: Hanna Czenczek <hre...@redhat.com> --- include/qemu/osdep.h | 1 + block/file-posix.c | 17 +---------------- util/osdep.c | 18 ++++++++++++++++++ 3 files changed, 20 insertions(+), 16 deletions(-) diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h index 96fe51bc39..49b729edc1 100644 --- a/include/qemu/osdep.h +++ b/include/qemu/osdep.h @@ -774,6 +774,7 @@ static inline void qemu_reset_optind(void) } int qemu_fdatasync(int fd); +int qemu_fcntl_addfl(int fd, int flag); /** * qemu_close_all_open_fd: diff --git a/block/file-posix.c b/block/file-posix.c index 9b5f08ccb2..045e94d54d 100644 --- a/block/file-posix.c +++ b/block/file-posix.c @@ -1047,21 +1047,6 @@ static int raw_handle_perm_lock(BlockDriverState *bs, return ret; } -/* Sets a specific flag */ -static int fcntl_setfl(int fd, int flag) -{ - int flags; - - flags = fcntl(fd, F_GETFL); - if (flags == -1) { - return -errno; - } - if (fcntl(fd, F_SETFL, flags | flag) == -1) { - return -errno; - } - return 0; -} - static int raw_reconfigure_getfd(BlockDriverState *bs, int flags, int *open_flags, uint64_t perm, Error **errp) { @@ -1100,7 +1085,7 @@ static int raw_reconfigure_getfd(BlockDriverState *bs, int flags, /* dup the original fd */ fd = qemu_dup(s->fd); if (fd >= 0) { - ret = fcntl_setfl(fd, *open_flags); + ret = qemu_fcntl_addfl(fd, *open_flags); if (ret) { qemu_close(fd); fd = -1; diff --git a/util/osdep.c b/util/osdep.c index 770369831b..ce5c6a7f59 100644 --- a/util/osdep.c +++ b/util/osdep.c @@ -613,3 +613,21 @@ int qemu_fdatasync(int fd) return fsync(fd); #endif } + +/** + * Set the given flag(s) (fcntl GETFL/SETFL) on the given FD, while retaining + * other flags. + */ +int qemu_fcntl_addfl(int fd, int flag) +{ + int flags; + + flags = fcntl(fd, F_GETFL); + if (flags == -1) { + return -errno; + } + if (fcntl(fd, F_SETFL, flags | flag) == -1) { + return -errno; + } + return 0; +} -- 2.49.0