[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 38/59] ram: Add QEMUFile to RAMState
From: |
Juan Quintela |
Subject: |
[Qemu-devel] [PATCH 38/59] ram: Add QEMUFile to RAMState |
Date: |
Wed, 19 Apr 2017 22:59:02 +0200 |
Signed-off-by: Juan Quintela <address@hidden>
Reviewed-by: Dr. David Alan Gilbert <address@hidden>
---
migration/ram.c | 17 ++++++++++-------
1 file changed, 10 insertions(+), 7 deletions(-)
diff --git a/migration/ram.c b/migration/ram.c
index b9f415c..62b44cf 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -165,6 +165,8 @@ struct RAMSrcPageRequest {
/* State of RAM for migration */
struct RAMState {
+ /* QEMUFile used for this migration */
+ QEMUFile *f;
/* Last block that we have visited searching for dirty pages */
RAMBlock *last_seen_block;
/* Last block from where we have sent data */
@@ -525,14 +527,13 @@ static void xbzrle_cache_zero_page(RAMState *rs,
ram_addr_t current_addr)
* -1 means that xbzrle would be longer than normal
*
* @rs: current RAM state
- * @f: QEMUFile where to send the data
* @current_data: pointer to the address of the page contents
* @current_addr: addr of the page
* @block: block that contains the page we want to send
* @offset: offset inside the block for the page
* @last_stage: if we are at the completion stage
*/
-static int save_xbzrle_page(RAMState *rs, QEMUFile *f, uint8_t **current_data,
+static int save_xbzrle_page(RAMState *rs, uint8_t **current_data,
ram_addr_t current_addr, RAMBlock *block,
ram_addr_t offset, bool last_stage)
{
@@ -583,10 +584,11 @@ static int save_xbzrle_page(RAMState *rs, QEMUFile *f,
uint8_t **current_data,
}
/* Send XBZRLE based compressed page */
- bytes_xbzrle = save_page_header(f, block, offset | RAM_SAVE_FLAG_XBZRLE);
- qemu_put_byte(f, ENCODING_FLAG_XBZRLE);
- qemu_put_be16(f, encoded_len);
- qemu_put_buffer(f, XBZRLE.encoded_buf, encoded_len);
+ bytes_xbzrle = save_page_header(rs->f, block,
+ offset | RAM_SAVE_FLAG_XBZRLE);
+ qemu_put_byte(rs->f, ENCODING_FLAG_XBZRLE);
+ qemu_put_be16(rs->f, encoded_len);
+ qemu_put_buffer(rs->f, XBZRLE.encoded_buf, encoded_len);
bytes_xbzrle += encoded_len + 1 + 2;
rs->xbzrle_pages++;
rs->xbzrle_bytes += bytes_xbzrle;
@@ -850,7 +852,7 @@ static int ram_save_page(RAMState *rs, MigrationState *ms,
QEMUFile *f,
ram_release_pages(ms, block->idstr, pss->offset, pages);
} else if (!rs->ram_bulk_stage &&
!migration_in_postcopy(ms) && migrate_use_xbzrle()) {
- pages = save_xbzrle_page(rs, f, &p, current_addr, block,
+ pages = save_xbzrle_page(rs, &p, current_addr, block,
offset, last_stage);
if (!last_stage) {
/* Can't send this cached data async, since the cache page
@@ -2090,6 +2092,7 @@ static int ram_save_setup(QEMUFile *f, void *opaque)
return -1;
}
}
+ rs->f = f;
rcu_read_lock();
--
2.9.3
- [Qemu-devel] [PATCH 28/59] ram: Move migration_bitmap_rcu into RAMState, (continued)
- [Qemu-devel] [PATCH 28/59] ram: Move migration_bitmap_rcu into RAMState, Juan Quintela, 2017/04/19
- [Qemu-devel] [PATCH 25/59] ram: Move migration_dirty_pages to RAMState, Juan Quintela, 2017/04/19
- [Qemu-devel] [PATCH 30/59] ram: Use the RAMState bytes_transferred parameter, Juan Quintela, 2017/04/19
- [Qemu-devel] [PATCH 31/59] ram: Remove ram_save_remaining, Juan Quintela, 2017/04/19
- [Qemu-devel] [PATCH 32/59] ram: Move last_req_rb to RAMState, Juan Quintela, 2017/04/19
- [Qemu-devel] [PATCH 34/59] ram: Create ram_dirty_sync_count(), Juan Quintela, 2017/04/19
- [Qemu-devel] [PATCH 33/59] ram: Move src_page_req* to RAMState, Juan Quintela, 2017/04/19
- [Qemu-devel] [PATCH 35/59] ram: Remove dirty_bytes_rate, Juan Quintela, 2017/04/19
- [Qemu-devel] [PATCH 37/59] ram: Move postcopy_requests into RAMState, Juan Quintela, 2017/04/19
- [Qemu-devel] [PATCH 36/59] ram: Move dirty_pages_rate to RAMState, Juan Quintela, 2017/04/19
- [Qemu-devel] [PATCH 38/59] ram: Add QEMUFile to RAMState,
Juan Quintela <=
- [Qemu-devel] [PATCH 40/59] ram: Remove compression_switch and inline its logic, Juan Quintela, 2017/04/19
- [Qemu-devel] [PATCH 39/59] ram: Move QEMUFile into RAMState, Juan Quintela, 2017/04/19
- [Qemu-devel] [PATCH 41/59] migration: Remove MigrationState from migration_in_postcopy, Juan Quintela, 2017/04/19
- [Qemu-devel] [PATCH 42/59] ram: We don't need MigrationState parameter anymore, Juan Quintela, 2017/04/19
- [Qemu-devel] [PATCH 43/59] ram: Rename qemu_target_page_bits() to qemu_target_page_size(), Juan Quintela, 2017/04/19
- [Qemu-devel] [PATCH 44/59] ram: Add page-size to output in 'info migrate', Juan Quintela, 2017/04/19
- [Qemu-devel] [PATCH 45/59] ram: Pass RAMBlock to bitmap_sync, Juan Quintela, 2017/04/19
- [Qemu-devel] [PATCH 46/59] ram: ram_discard_range() don't use the mis parameter, Juan Quintela, 2017/04/19
- [Qemu-devel] [PATCH 47/59] ram: reorganize last_sent_block, Juan Quintela, 2017/04/19
- [Qemu-devel] [PATCH 48/59] ram: Use page number instead of an address for the bitmap operations, Juan Quintela, 2017/04/19