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.
signature.asc
Description: PGP signature