io: add and implement QIO_CHANNEL_FEATURE_SEEKABLE for channel file
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>
This commit is contained in:
committed by
Fabiano Rosas
parent
11fc708273
commit
694d818a8c
@@ -44,6 +44,7 @@ enum QIOChannelFeature {
|
|||||||
QIO_CHANNEL_FEATURE_LISTEN,
|
QIO_CHANNEL_FEATURE_LISTEN,
|
||||||
QIO_CHANNEL_FEATURE_WRITE_ZERO_COPY,
|
QIO_CHANNEL_FEATURE_WRITE_ZERO_COPY,
|
||||||
QIO_CHANNEL_FEATURE_READ_MSG_PEEK,
|
QIO_CHANNEL_FEATURE_READ_MSG_PEEK,
|
||||||
|
QIO_CHANNEL_FEATURE_SEEKABLE,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -36,6 +36,10 @@ qio_channel_file_new_fd(int fd)
|
|||||||
|
|
||||||
ioc->fd = 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);
|
trace_qio_channel_file_new_fd(ioc, fd);
|
||||||
|
|
||||||
return ioc;
|
return ioc;
|
||||||
@@ -60,6 +64,10 @@ qio_channel_file_new_path(const char *path,
|
|||||||
return NULL;
|
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);
|
trace_qio_channel_file_new_path(ioc, path, flags, mode, ioc->fd);
|
||||||
|
|
||||||
return ioc;
|
return ioc;
|
||||||
|
|||||||
Reference in New Issue
Block a user