* [PATCH 0/2] migration: Simplify handling of zero pages
@ 2023-10-19 8:52 Juan Quintela
2023-10-19 8:52 ` [PATCH 1/2] migration: Receiving a zero page non zero is an error Juan Quintela
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Juan Quintela @ 2023-10-19 8:52 UTC (permalink / raw)
To: qemu-devel
Cc: Li Zhijian, Juan Quintela, Leonardo Bras, Fabiano Rosas, Peter Xu
Hi
It has been more than a decade since we optimized pages filled of
anything except zeros. Remove the reception support.
Review please.
Later, Juan.
Juan Quintela (2):
migration: Receiving a zero page non zero is an error
migration: Rename ram_handle_compressed() to ram_handle_zero()
migration/ram.h | 2 +-
migration/ram.c | 25 ++++++++++++++++---------
migration/rdma.c | 8 ++++++--
3 files changed, 23 insertions(+), 12 deletions(-)
--
2.41.0
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 1/2] migration: Receiving a zero page non zero is an error
2023-10-19 8:52 [PATCH 0/2] migration: Simplify handling of zero pages Juan Quintela
@ 2023-10-19 8:52 ` Juan Quintela
2023-10-19 21:22 ` Fabiano Rosas
2023-10-19 8:52 ` [PATCH 2/2] migration: Rename ram_handle_compressed() to ram_handle_zero() Juan Quintela
2023-10-23 15:03 ` [PATCH 0/2] migration: Simplify handling of zero pages Peter Xu
2 siblings, 1 reply; 6+ messages in thread
From: Juan Quintela @ 2023-10-19 8:52 UTC (permalink / raw)
To: qemu-devel
Cc: Li Zhijian, Juan Quintela, Leonardo Bras, Fabiano Rosas, Peter Xu
We don't allow non zero compressed pages since:
commit 3edcd7e6ebae3ef0ac178eed5f4225803159562d
Author: Peter Lieven <pl@kamp.de>
Date: Tue Mar 26 10:58:35 2013 +0100
migration: search for zero instead of dup pages
RDMA case is a bit more complicated, but they don't handle it since:
commit a1febc4950f2c6232c002f401d7cd409f6fa6a88
Author: Richard Henderson <rth@twiddle.net>
Date: Mon Aug 29 11:46:14 2016 -0700
cutils: Export only buffer_is_zero
Signed-off-by: Juan Quintela <quintela@redhat.com>
---
migration/ram.c | 15 +++++++++++----
migration/rdma.c | 6 +++++-
2 files changed, 16 insertions(+), 5 deletions(-)
diff --git a/migration/ram.c b/migration/ram.c
index c844151ee9..0dd8bbb339 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -3730,16 +3730,18 @@ int ram_load_postcopy(QEMUFile *f, int channel)
switch (flags & ~RAM_SAVE_FLAG_CONTINUE) {
case RAM_SAVE_FLAG_ZERO:
ch = qemu_get_byte(f);
+ if (ch != 0) {
+ error_report("Found a zero page with value %d", ch);
+ ret = -EINVAL;
+ break;
+ }
/*
* Can skip to set page_buffer when
* this is a zero page and (block->page_size == TARGET_PAGE_SIZE).
*/
- if (ch || !matches_target_page_size) {
+ if (!matches_target_page_size) {
memset(page_buffer, ch, TARGET_PAGE_SIZE);
}
- if (ch) {
- tmp_page->all_zero = false;
- }
break;
case RAM_SAVE_FLAG_PAGE:
@@ -4044,6 +4046,11 @@ static int ram_load_precopy(QEMUFile *f)
case RAM_SAVE_FLAG_ZERO:
ch = qemu_get_byte(f);
+ if (ch != 0) {
+ error_report("Found a zero page with value %d", ch);
+ ret = -EINVAL;
+ break;
+ }
ram_handle_compressed(host, ch, TARGET_PAGE_SIZE);
break;
diff --git a/migration/rdma.c b/migration/rdma.c
index 2a1852ec7f..2d963fd147 100644
--- a/migration/rdma.c
+++ b/migration/rdma.c
@@ -3592,7 +3592,11 @@ int rdma_registration_handle(QEMUFile *f)
host_addr = block->local_host_addr +
(comp->offset - block->offset);
-
+ if (comp->value) {
+ error_report("rdma: Zero page with non-zero (%d) value",
+ comp->value);
+ goto err;
+ }
ram_handle_compressed(host_addr, comp->value, comp->length);
break;
--
2.41.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 2/2] migration: Rename ram_handle_compressed() to ram_handle_zero()
2023-10-19 8:52 [PATCH 0/2] migration: Simplify handling of zero pages Juan Quintela
2023-10-19 8:52 ` [PATCH 1/2] migration: Receiving a zero page non zero is an error Juan Quintela
@ 2023-10-19 8:52 ` Juan Quintela
2023-10-19 21:23 ` Fabiano Rosas
2023-10-23 15:03 ` [PATCH 0/2] migration: Simplify handling of zero pages Peter Xu
2 siblings, 1 reply; 6+ messages in thread
From: Juan Quintela @ 2023-10-19 8:52 UTC (permalink / raw)
To: qemu-devel
Cc: Li Zhijian, Juan Quintela, Leonardo Bras, Fabiano Rosas, Peter Xu
Now that we know it only handles zero, we can remove the ch parameter.
Signed-off-by: Juan Quintela <quintela@redhat.com>
---
migration/ram.h | 2 +-
migration/ram.c | 10 +++++-----
migration/rdma.c | 2 +-
3 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/migration/ram.h b/migration/ram.h
index 145c915ca7..3f724b2f02 100644
--- a/migration/ram.h
+++ b/migration/ram.h
@@ -60,7 +60,7 @@ int ram_discard_range(const char *block_name, uint64_t start, size_t length);
int ram_postcopy_incoming_init(MigrationIncomingState *mis);
int ram_load_postcopy(QEMUFile *f, int channel);
-void ram_handle_compressed(void *host, uint8_t ch, uint64_t size);
+void ram_handle_zero(void *host, uint64_t size);
void ram_transferred_add(uint64_t bytes);
void ram_release_page(const char *rbname, uint64_t offset);
diff --git a/migration/ram.c b/migration/ram.c
index 0dd8bbb339..132662818b 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -3461,7 +3461,7 @@ static inline void *colo_cache_from_block_offset(RAMBlock *block,
}
/**
- * ram_handle_compressed: handle the zero page case
+ * ram_handle_zero: handle the zero page case
*
* If a page (or a whole RDMA chunk) has been
* determined to be zero, then zap it.
@@ -3470,10 +3470,10 @@ static inline void *colo_cache_from_block_offset(RAMBlock *block,
* @ch: what the page is filled from. We only support zero
* @size: size of the zero page
*/
-void ram_handle_compressed(void *host, uint8_t ch, uint64_t size)
+void ram_handle_zero(void *host, uint64_t size)
{
- if (ch != 0 || !buffer_is_zero(host, size)) {
- memset(host, ch, size);
+ if (!buffer_is_zero(host, size)) {
+ memset(host, 0, size);
}
}
@@ -4051,7 +4051,7 @@ static int ram_load_precopy(QEMUFile *f)
ret = -EINVAL;
break;
}
- ram_handle_compressed(host, ch, TARGET_PAGE_SIZE);
+ ram_handle_zero(host, TARGET_PAGE_SIZE);
break;
case RAM_SAVE_FLAG_PAGE:
diff --git a/migration/rdma.c b/migration/rdma.c
index 2d963fd147..e3493e3b3e 100644
--- a/migration/rdma.c
+++ b/migration/rdma.c
@@ -3597,7 +3597,7 @@ int rdma_registration_handle(QEMUFile *f)
comp->value);
goto err;
}
- ram_handle_compressed(host_addr, comp->value, comp->length);
+ ram_handle_zero(host_addr, comp->length);
break;
case RDMA_CONTROL_REGISTER_FINISHED:
--
2.41.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 1/2] migration: Receiving a zero page non zero is an error
2023-10-19 8:52 ` [PATCH 1/2] migration: Receiving a zero page non zero is an error Juan Quintela
@ 2023-10-19 21:22 ` Fabiano Rosas
0 siblings, 0 replies; 6+ messages in thread
From: Fabiano Rosas @ 2023-10-19 21:22 UTC (permalink / raw)
To: Juan Quintela, qemu-devel
Cc: Li Zhijian, Juan Quintela, Leonardo Bras, Peter Xu
Juan Quintela <quintela@redhat.com> writes:
> We don't allow non zero compressed pages since:
>
> commit 3edcd7e6ebae3ef0ac178eed5f4225803159562d
> Author: Peter Lieven <pl@kamp.de>
> Date: Tue Mar 26 10:58:35 2013 +0100
>
> migration: search for zero instead of dup pages
>
> RDMA case is a bit more complicated, but they don't handle it since:
>
> commit a1febc4950f2c6232c002f401d7cd409f6fa6a88
> Author: Richard Henderson <rth@twiddle.net>
> Date: Mon Aug 29 11:46:14 2016 -0700
>
> cutils: Export only buffer_is_zero
>
> Signed-off-by: Juan Quintela <quintela@redhat.com>
Reviewed-by: Fabiano Rosas <farosas@suse.de>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 2/2] migration: Rename ram_handle_compressed() to ram_handle_zero()
2023-10-19 8:52 ` [PATCH 2/2] migration: Rename ram_handle_compressed() to ram_handle_zero() Juan Quintela
@ 2023-10-19 21:23 ` Fabiano Rosas
0 siblings, 0 replies; 6+ messages in thread
From: Fabiano Rosas @ 2023-10-19 21:23 UTC (permalink / raw)
To: Juan Quintela, qemu-devel
Cc: Li Zhijian, Juan Quintela, Leonardo Bras, Peter Xu
Juan Quintela <quintela@redhat.com> writes:
> Now that we know it only handles zero, we can remove the ch parameter.
>
> Signed-off-by: Juan Quintela <quintela@redhat.com>
Reviewed-by: Fabiano Rosas <farosas@suse.de>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 0/2] migration: Simplify handling of zero pages
2023-10-19 8:52 [PATCH 0/2] migration: Simplify handling of zero pages Juan Quintela
2023-10-19 8:52 ` [PATCH 1/2] migration: Receiving a zero page non zero is an error Juan Quintela
2023-10-19 8:52 ` [PATCH 2/2] migration: Rename ram_handle_compressed() to ram_handle_zero() Juan Quintela
@ 2023-10-23 15:03 ` Peter Xu
2 siblings, 0 replies; 6+ messages in thread
From: Peter Xu @ 2023-10-23 15:03 UTC (permalink / raw)
To: Juan Quintela; +Cc: qemu-devel, Li Zhijian, Leonardo Bras, Fabiano Rosas
On Thu, Oct 19, 2023 at 10:52:57AM +0200, Juan Quintela wrote:
> Hi
>
> It has been more than a decade since we optimized pages filled of
> anything except zeros. Remove the reception support.
>
> Review please.
Reviewed-by: Peter Xu <peterx@redhat.com>
--
Peter Xu
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2023-10-23 15:04 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-10-19 8:52 [PATCH 0/2] migration: Simplify handling of zero pages Juan Quintela
2023-10-19 8:52 ` [PATCH 1/2] migration: Receiving a zero page non zero is an error Juan Quintela
2023-10-19 21:22 ` Fabiano Rosas
2023-10-19 8:52 ` [PATCH 2/2] migration: Rename ram_handle_compressed() to ram_handle_zero() Juan Quintela
2023-10-19 21:23 ` Fabiano Rosas
2023-10-23 15:03 ` [PATCH 0/2] migration: Simplify handling of zero pages Peter Xu
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.