Message ID | 20130220164859.GA26265@redhat.com |
---|---|
State | New |
Headers | show |
On 02/21/2013 12:48 AM, Michael S. Tsirkin wrote: > On Wed, Feb 20, 2013 at 04:23:52PM +0200, Michael S. Tsirkin wrote: >> On Fri, Feb 01, 2013 at 06:03:32PM +0800, Jason Wang wrote: >>> Hello all: >>> >>> During testing, I find doing scp during migration with vhost fails with >>> warnings in guest like: >>> >>> Corrupted MAC on input. >>> Disconnecting: Packet corrupt. >>> lost connection >>> >>> Here's the bisect result: >>> >>> Commit a01672d3968cf91208666d371784110bfde9d4f8 kvm: convert to MemoryListener >>> API is the last commit that works well. >>> >>> With commit 04097f7c5957273c578f72b9bd603ba6b1d69e33 vhost: convert to >>> MemoryListener API, guest network is unusable with warning of "bad gso type" >>> >>> With commit d743c382861eaa1e13f503b05aba5a382a7e7f7c vhost: fix incorrect >>> userspace address, guest network is available, but scp during migration may >>> fail. >>> >>> Looks like the issue is related to memory api, any thoughts? >>> >>> Thanks >> Tried to reproduce this for a while without success. >> Which command line was used? >> >> >> -- >> MST > Could be we are not syncing all that we should? > Does the following hack make the problem go away? > > diff --git a/hw/vhost.c b/hw/vhost.c > index 8d41fdb..a7a0412 100644 > --- a/hw/vhost.c > +++ b/hw/vhost.c > @@ -69,6 +69,8 @@ static int vhost_sync_dirty_bitmap(struct vhost_dev *dev, > hwaddr end_addr) > { > int i; > + start_addr = 0x0; > + end_addr = ~0x0ull; > > if (!dev->log_enabled || !dev->started) { > return 0; > Still can reproduce with this. From the bisect result, the vhost dirty bitmap sync itself looks ok but something wrong when converting to memory listener.
diff --git a/hw/vhost.c b/hw/vhost.c index 8d41fdb..a7a0412 100644 --- a/hw/vhost.c +++ b/hw/vhost.c @@ -69,6 +69,8 @@ static int vhost_sync_dirty_bitmap(struct vhost_dev *dev, hwaddr end_addr) { int i; + start_addr = 0x0; + end_addr = ~0x0ull; if (!dev->log_enabled || !dev->started) { return 0;