io: fsync before closing a file channel
Make sure the data is flushed to disk before closing file channels. This is to ensure data is on disk and not lost in the event of a host crash. This is currently being implemented to affect the migration code when migrating to a file, but all QIOChannelFile users should benefit from the change. Reviewed-by: "Daniel P. Berrangé" <berrange@redhat.com> Acked-by: "Daniel P. Berrangé" <berrange@redhat.com> Signed-off-by: Fabiano Rosas <farosas@suse.de> Link: https://lore.kernel.org/r/20240229153017.2221-6-farosas@suse.de Signed-off-by: Peter Xu <peterx@redhat.com>
This commit is contained in:
parent
0478b030fa
commit
c05dfcb7f2
@ -242,6 +242,11 @@ static int qio_channel_file_close(QIOChannel *ioc,
|
|||||||
{
|
{
|
||||||
QIOChannelFile *fioc = QIO_CHANNEL_FILE(ioc);
|
QIOChannelFile *fioc = QIO_CHANNEL_FILE(ioc);
|
||||||
|
|
||||||
|
if (qemu_fdatasync(fioc->fd) < 0) {
|
||||||
|
error_setg_errno(errp, errno,
|
||||||
|
"Unable to synchronize file data with storage device");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
if (qemu_close(fioc->fd) < 0) {
|
if (qemu_close(fioc->fd) < 0) {
|
||||||
error_setg_errno(errp, errno,
|
error_setg_errno(errp, errno,
|
||||||
"Unable to close file");
|
"Unable to close file");
|
||||||
|
Loading…
Reference in New Issue
Block a user