[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 09/29] io: add and implement QIO_CHANNEL_FEATURE_SEEKABLE for
|
From: |
Fabiano Rosas |
|
Subject: |
[PATCH v2 09/29] io: add and implement QIO_CHANNEL_FEATURE_SEEKABLE for channel file |
|
Date: |
Mon, 23 Oct 2023 17:35:48 -0300 |
From: Nikolay Borisov <nborisov@suse.com>
Add a generic QIOChannel feature SEEKABLE which would be used by the
qemu_file* apis. For the time being this will be only implemented for
file channels.
Signed-off-by: Nikolay Borisov <nborisov@suse.com>
Signed-off-by: Fabiano Rosas <farosas@suse.de>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
---
include/io/channel.h | 1 +
io/channel-file.c | 8 ++++++++
2 files changed, 9 insertions(+)
diff --git a/include/io/channel.h b/include/io/channel.h
index 5f9dbaab65..fcb19fd672 100644
--- a/include/io/channel.h
+++ b/include/io/channel.h
@@ -44,6 +44,7 @@ enum QIOChannelFeature {
QIO_CHANNEL_FEATURE_LISTEN,
QIO_CHANNEL_FEATURE_WRITE_ZERO_COPY,
QIO_CHANNEL_FEATURE_READ_MSG_PEEK,
+ QIO_CHANNEL_FEATURE_SEEKABLE,
};
diff --git a/io/channel-file.c b/io/channel-file.c
index 4a12c61886..f91bf6db1c 100644
--- a/io/channel-file.c
+++ b/io/channel-file.c
@@ -36,6 +36,10 @@ qio_channel_file_new_fd(int fd)
ioc->fd = fd;
+ if (lseek(fd, 0, SEEK_CUR) != (off_t)-1) {
+ qio_channel_set_feature(QIO_CHANNEL(ioc),
QIO_CHANNEL_FEATURE_SEEKABLE);
+ }
+
trace_qio_channel_file_new_fd(ioc, fd);
return ioc;
@@ -60,6 +64,10 @@ qio_channel_file_new_path(const char *path,
return NULL;
}
+ if (lseek(ioc->fd, 0, SEEK_CUR) != (off_t)-1) {
+ qio_channel_set_feature(QIO_CHANNEL(ioc),
QIO_CHANNEL_FEATURE_SEEKABLE);
+ }
+
trace_qio_channel_file_new_path(ioc, path, flags, mode, ioc->fd);
return ioc;
--
2.35.3
- Re: [PATCH v2 06/29] migration: Add auto-pause capability, (continued)
- Re: [PATCH v2 06/29] migration: Add auto-pause capability, Daniel P . Berrangé, 2023/10/25
- Re: [PATCH v2 06/29] migration: Add auto-pause capability, Peter Xu, 2023/10/25
- Re: [PATCH v2 06/29] migration: Add auto-pause capability, Daniel P . Berrangé, 2023/10/25
- Re: [PATCH v2 06/29] migration: Add auto-pause capability, Peter Xu, 2023/10/25
- Re: [PATCH v2 06/29] migration: Add auto-pause capability, Daniel P . Berrangé, 2023/10/25
- Re: [PATCH v2 06/29] migration: Add auto-pause capability, Peter Xu, 2023/10/25
- Re: [PATCH v2 06/29] migration: Add auto-pause capability, Daniel P . Berrangé, 2023/10/25
- Re: [PATCH v2 06/29] migration: Add auto-pause capability, Peter Xu, 2023/10/25
[PATCH v2 07/29] migration: Run "file:" migration with a stopped VM, Fabiano Rosas, 2023/10/23
[PATCH v2 08/29] tests/qtest: File migration auto-pause tests, Fabiano Rosas, 2023/10/23
[PATCH v2 09/29] io: add and implement QIO_CHANNEL_FEATURE_SEEKABLE for channel file,
Fabiano Rosas <=
[PATCH v2 10/29] io: Add generic pwritev/preadv interface, Fabiano Rosas, 2023/10/23
[PATCH v2 11/29] io: implement io_pwritev/preadv for QIOChannelFile, Fabiano Rosas, 2023/10/23
[PATCH v2 12/29] migration/qemu-file: add utility methods for working with seekable channels, Fabiano Rosas, 2023/10/23
[PATCH v2 13/29] migration: fixed-ram: Add URI compatibility check, Fabiano Rosas, 2023/10/23
[PATCH v2 14/29] migration/ram: Introduce 'fixed-ram' migration capability, Fabiano Rosas, 2023/10/23