qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Bug 1882241] [NEW] file transfer over cifs to 64bit guest corrupts


From: Stefan Hajnoczi
Subject: Re: [Bug 1882241] [NEW] file transfer over cifs to 64bit guest corrupts large files
Date: Wed, 17 Jun 2020 11:32:06 +0100

On Fri, Jun 05, 2020 at 12:30:39PM -0000, timsoft wrote:
> Public bug reported:
> 
> qemu 4.0 compiled fom source.
> vm called by
> qemu-system-x86_64 -cpu qemu64 -smp 4 -m 4G -drive 
> file=/data/images/slack14.2_64bit_test.qcow2,format=qcow2 -cdrom 
> /mnt/smb1/slackware/iso/slackware64-14.2-install-dvd.iso -boot c -net 
> nic,macaddr=02:00:00:11:11:17,model=i82551 -net bridge,br=br0 -enable-kvm -k 
> en-gb -display vnc=:3 -monitor telnet:localhost:7103,server,nowait,nodelay
> 
> copying large files eg 2.4gb or reading them on a cifs mount in the guest 
> causes corruption every time. For smaller files 40-60mb corruption is more 
> than 50% of the time. tested by md5sum on cifs server, or on host machine vs. 
> on guest vm.
> corruption is seen only with 64bit guest using cifs with i82551 emulated 
> network device
> ie. 32bit guest using cifs with i82551 emulated network device gives no 
> corruption.
> 
> changing the emulated device to vmxnet3 removes the data corruption (see
> below)
> 
> qemu-system-x86_64 -cpu qemu64 -smp 4 -m 4G -drive
> file=/data/images/slack14.2_64bit_test.qcow2,format=qcow2 -cdrom
> /mnt/smb1/slackware/iso/slackware64-14.2-install-dvd.iso -boot c -net
> nic,macaddr=02:00:00:11:11:17,model=vmxnet3 -net bridge,br=br0 -enable-
> kvm -k en-gb -display vnc=:3 -monitor
> telnet:localhost:7103,server,nowait,nodelay
> 
> this corruption is repeatable. ie. I created new vm, call using top example, 
> installed 64bit linux, mounted cifs share and copied 2.4gb file to /tmp then 
> run md5sum "filecopied"
> the md5sum is different every time. copy same file to the host, or to a 32bit 
> guest with the same virtual network device and bridge and md5sums are 
> correct. The host pysical network adapter is
> lspci|grep Ether
> 1e:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. 
> RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 11)
> 
> physically connected via gigabit ethernet to cifs server (via gigabit
> switch)

Not a solution but some comments:

1. As a sanity-check you could try "nc <guest-ip> 1234 </path/to/file" on
   the host and "nc -l -p 1234 >/tmp/file" in the guest. Netcat simply
   sends/receives data over a TCP connection (it's a much simpler test
   than CIFS). Is the checksum okay?

2. I don't know the CIFS network protocol, but if Wireshark can dissect
   it then you could compare the flows between the vmxnet3 and the
   i82551. This is only feasible if Wireshark can produce an unencrypted
   conversation and the CIFS protocol doesn't have many protocol header
   fields that differ between two otherwise identical sessions.

3. virtio-net is the most widely used and high-performance NIC model.
   Other emulated NIC models are mainly there for very old guests that
   lack virtio guest drivers.

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]