qemu/migration
Fabiano Rosas d7a4a38a03 migration: Fix file migration with fdset
When the "file:" migration support was added we missed the special
case in the qemu_open_old implementation that allows for a particular
file name format to be used to refer to a set of file descriptors that
have been previously provided to QEMU via the add-fd QMP command.

When using this fdset feature, we should not truncate the migration
file because being given an fd means that the management layer is in
control of the file and will likely already have some data written to
it. This is further indicated by the presence of the 'offset'
argument, which indicates the start of the region where QEMU is
allowed to write.

Fix the issue by replacing the O_TRUNC flag on open by an ftruncate
call, which will take the offset into consideration.

Fixes: 385f510df5 ("migration: file URI offset")
Suggested-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Prasad Pandit <pjp@fedoraproject.org>
Reviewed-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Fabiano Rosas <farosas@suse.de>
(cherry picked from commit 6d3279655a)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
2024-06-22 07:03:13 +03:00
..
block-dirty-bitmap.c Replace "iothread lock" with "BQL" in comments 2024-01-08 10:45:43 -05:00
block.c migration: Skip only empty block devices 2024-03-13 07:33:41 -04:00
block.h
channel-block.c io: follow coroutine AioContext in qio_channel_yield() 2023-09-07 20:32:11 -05:00
channel-block.h
channel.c migration: Fix migration_channel_read_peek() error path 2024-01-04 09:52:42 +08:00
channel.h
colo-failover.c
colo.c migration/colo: Fix bdrv_graph_rdlock_main_loop: Assertion `!qemu_in_coroutine()' failed. 2024-04-25 22:17:37 +03:00
dirtyrate.c system/cpus: rename qemu_mutex_lock_iothread() to bql_lock() 2024-01-08 10:45:43 -05:00
dirtyrate.h migration/calc-dirty-rate: millisecond-granularity period 2023-10-10 08:03:50 +08:00
exec.c migration: simplify exec migration functions 2024-03-04 07:12:40 +01:00
exec.h migration: convert exec backend to accept MigrateAddress. 2023-11-02 11:35:04 +01:00
fd.c migration: Revert mapped-ram multifd support to fd: URI 2024-03-22 12:12:08 -04:00
fd.h migration: Revert mapped-ram multifd support to fd: URI 2024-03-22 12:12:08 -04:00
file.c migration: Fix file migration with fdset 2024-06-22 07:03:13 +03:00
file.h migration: Fix iocs leaks during file and fd migration 2024-03-14 11:39:08 -04:00
global_state.c migration 1st pull for 9.0 2024-01-05 13:35:25 +00:00
meson.build migration/multifd: Implement zero page transmission on the multifd thread. 2024-03-11 16:57:09 -04:00
migration-hmp-cmds.c migration/multifd: Add new migration option zero-page-detection. 2024-03-11 16:57:05 -04:00
migration-stats.c migration: migration_rate_limit_reset() don't need the QEMUFile 2023-10-31 08:44:33 +01:00
migration-stats.h migration: Remove transferred atomic counter 2023-10-31 08:44:33 +01:00
migration.c migration/postcopy: Ensure postcopy_start() sets errp if it fails 2024-03-31 14:30:03 -04:00
migration.h migration: purge MigrationState from public interface 2024-03-11 16:28:59 -04:00
multifd-zero-page.c migration/multifd: Implement zero page transmission on the multifd thread. 2024-03-11 16:57:09 -04:00
multifd-zlib.c * Add missing ERRP_GUARD() statements in functions that need it 2024-03-12 16:55:42 +00:00
multifd-zstd.c migration/multifd: Implement zero page transmission on the multifd thread. 2024-03-11 16:57:09 -04:00
multifd.c migration/multifd: Fix clearing of mapped-ram zero pages 2024-03-22 12:12:08 -04:00
multifd.h migration/multifd: Implement zero page transmission on the multifd thread. 2024-03-11 16:57:09 -04:00
options.c * Add missing ERRP_GUARD() statements in functions that need it 2024-03-12 16:55:42 +00:00
options.h migration/multifd: Add new migration option zero-page-detection. 2024-03-11 16:57:05 -04:00
page_cache.c
page_cache.h
postcopy-ram.c error: Move ERRP_GUARD() to the beginning of the function 2024-03-12 11:45:45 +01:00
postcopy-ram.h migration: remove error from notifier data 2024-02-28 11:31:28 +08:00
qemu-file.c migration: Report error when shutdown fails 2024-03-11 14:41:40 -04:00
qemu-file.h migration/qemu-file: add utility methods for working with seekable channels 2024-03-01 15:42:04 +08:00
ram-compress.c migration: Rename ram_compressed_pages() to compress_ram_pages() 2023-10-30 17:41:55 +01:00
ram-compress.h migration: Rename ram_compressed_pages() to compress_ram_pages() 2023-10-30 17:41:55 +01:00
ram.c migration/multifd: Implement ram_save_target_page_multifd to handle multifd version of MigrationOps::ram_save_target_page. 2024-03-11 16:57:09 -04:00
ram.h migration/multifd: Allow clearing of the file_bmap from multifd 2024-03-11 16:56:52 -04:00
rdma.c migration/rdma: Fix a memory issue for migration 2024-03-11 14:41:40 -04:00
rdma.h migration: convert rdma backend to accept MigrateAddress 2023-11-02 11:35:03 +01:00
savevm.c migration/postcopy: ensure preempt channel is ready before loading states 2024-04-07 14:40:25 -04:00
savevm.h migration: Add .save_prepare() handler to struct SaveVMHandlers 2023-09-11 08:34:06 +02:00
socket.c migration/multifd: Drop unnecessary helper to destroy IOC 2024-02-28 11:31:28 +08:00
socket.h migration/multifd: Drop unnecessary helper to destroy IOC 2024-02-28 11:31:28 +08:00
target.c migration: Add migration prefix to functions in target.c 2023-09-11 08:34:06 +02:00
threadinfo.c migration/multifd: Protect accesses to migration_threads 2023-07-26 10:55:56 +02:00
threadinfo.h migration/multifd: Protect accesses to migration_threads 2023-07-26 10:55:56 +02:00
tls.c migration: Drop unused parameter for migration_tls_client_create() 2023-05-03 11:24:20 +02:00
tls.h migration: Drop unused parameter for migration_tls_client_create() 2023-05-03 11:24:20 +02:00
trace-events migration/multifd: Implement zero page transmission on the multifd thread. 2024-03-11 16:57:09 -04:00
trace.h
vmstate-types.c
vmstate.c migration: Make VMStateDescription.subsections const 2023-12-29 11:17:30 +11:00
xbzrle.c migration/xbzrle: Use i386 host/cpuinfo.h 2023-05-23 16:51:18 -07:00
xbzrle.h migration/xbzrle: Use i386 host/cpuinfo.h 2023-05-23 16:51:18 -07:00
yank_functions.c migration/yank: Use channel features 2024-01-29 11:02:12 +08:00
yank_functions.h