qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH] RDMA: Reduce restriction on block length match
@ 2015-07-08 14:26 Dr. David Alan Gilbert (git)
  2015-07-08 14:36 ` Juan Quintela
  0 siblings, 1 reply; 6+ messages in thread
From: Dr. David Alan Gilbert (git) @ 2015-07-08 14:26 UTC (permalink / raw)
  To: qemu-devel; +Cc: amit.shah, quintela

From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>

My e4d633207 patch has an over zealous sanity check that checked
the lengths of the RAM Blocks on source/destination were the same.  This
isn't true because of the 'used_length' trick for RAM blocks like the
ACPI table that vary in size.

Prior to that patch RDMA would also fail in this case, but it should
now work with the changes in the set e4d633207 is in.

Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>

Fixes: e4d633207c129dc5b7d145240ac4a1997ef3902f
---
 migration/rdma.c | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/migration/rdma.c b/migration/rdma.c
index f106b2a..1d094b0 100644
--- a/migration/rdma.c
+++ b/migration/rdma.c
@@ -3338,14 +3338,15 @@ static int qemu_rdma_registration_stop(QEMUFile *f, void *opaque,
         for (i = 0; i < nb_dest_blocks; i++) {
             network_to_dest_block(&rdma->dest_blocks[i]);
 
-            /* We require that the blocks are in the same order */
+            /* We require that the blocks are in the same order,
+             * but the used_length trick for acpi blocks means that
+             * the destination can validly be larger than the source
+             */
             if (rdma->dest_blocks[i].length != local->block[i].length) {
-                ERROR(errp, "Block %s/%d has a different length %" PRIu64
-                            "vs %" PRIu64, local->block[i].block_name, i,
-                            local->block[i].length,
+                fprintf(stderr, "INFO: Block %s/%d has a different length %"
+                            PRIu64 "vs %" PRIu64, local->block[i].block_name,
+                            i, local->block[i].length,
                             rdma->dest_blocks[i].length);
-                rdma->error_state = -EINVAL;
-                return -EINVAL;
             }
             local->block[i].remote_host_addr =
                     rdma->dest_blocks[i].remote_host_addr;
-- 
2.4.3

^ permalink raw reply related	[flat|nested] 6+ messages in thread
* [Qemu-devel] [PATCH] RDMA: Reduce restriction on block length match
@ 2015-07-08 14:24 Dr. David Alan Gilbert (git)
  0 siblings, 0 replies; 6+ messages in thread
From: Dr. David Alan Gilbert (git) @ 2015-07-08 14:24 UTC (permalink / raw)
  To: qemu-devel

From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>

My e4d633207 patch has an over zealous sanity check that checked
the lengths of the RAM Blocks on source/destination were the same.  This
isn't true because of the 'used_length' trick for RAM blocks like the
ACPI table that vary in size.

Prior to that patch RDMA would also fail in this case, but it should
now work with the changes in the set e4d633207 is in.

Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>

Fixes: e4d633207c129dc5b7d145240ac4a1997ef3902f
---
 migration/rdma.c | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/migration/rdma.c b/migration/rdma.c
index f106b2a..1d094b0 100644
--- a/migration/rdma.c
+++ b/migration/rdma.c
@@ -3338,14 +3338,15 @@ static int qemu_rdma_registration_stop(QEMUFile *f, void *opaque,
         for (i = 0; i < nb_dest_blocks; i++) {
             network_to_dest_block(&rdma->dest_blocks[i]);
 
-            /* We require that the blocks are in the same order */
+            /* We require that the blocks are in the same order,
+             * but the used_length trick for acpi blocks means that
+             * the destination can validly be larger than the source
+             */
             if (rdma->dest_blocks[i].length != local->block[i].length) {
-                ERROR(errp, "Block %s/%d has a different length %" PRIu64
-                            "vs %" PRIu64, local->block[i].block_name, i,
-                            local->block[i].length,
+                fprintf(stderr, "INFO: Block %s/%d has a different length %"
+                            PRIu64 "vs %" PRIu64, local->block[i].block_name,
+                            i, local->block[i].length,
                             rdma->dest_blocks[i].length);
-                rdma->error_state = -EINVAL;
-                return -EINVAL;
             }
             local->block[i].remote_host_addr =
                     rdma->dest_blocks[i].remote_host_addr;
-- 
2.4.3

^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2015-07-09  8:08 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-07-08 14:26 [Qemu-devel] [PATCH] RDMA: Reduce restriction on block length match Dr. David Alan Gilbert (git)
2015-07-08 14:36 ` Juan Quintela
2015-07-08 16:55   ` Dr. David Alan Gilbert
2015-07-08 19:06     ` Juan Quintela
2015-07-09  8:08       ` Dr. David Alan Gilbert
  -- strict thread matches above, loose matches on Subject: below --
2015-07-08 14:24 Dr. David Alan Gilbert (git)

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).