qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Stefan Hajnoczi <1882241@bugs.launchpad.net>
To: qemu-devel@nongnu.org
Subject: Re: [Bug 1882241] [NEW] file transfer over cifs to 64bit guest corrupts large files
Date: Wed, 17 Jun 2020 10:32:06 -0000	[thread overview]
Message-ID: <20200617103206.GA1728005@stefanha-x1.localdomain> (raw)
Message-ID: <20200617103206.gX4QJ0pr5J5E5IfaeYqjbavV-wVmL4hV2vuNbiqOx2s@z> (raw)
In-Reply-To: 159136023930.32294.17616621945608188739.malonedeb@gac.canonical.com

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.

-- 
You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.
https://bugs.launchpad.net/bugs/1882241

Title:
  file transfer over cifs to 64bit guest corrupts large files

Status in QEMU:
  New

Bug description:
  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)

To manage notifications about this bug go to:
https://bugs.launchpad.net/qemu/+bug/1882241/+subscriptions


  reply	other threads:[~2020-06-17 10:41 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-06-05 12:30 [Bug 1882241] [NEW] file transfer over cifs to 64bit guest corrupts large files timsoft
2020-06-17 10:32 ` Stefan Hajnoczi [this message]
2020-06-17 10:32   ` Stefan Hajnoczi
2020-06-17 14:55 ` [Bug 1882241] " timsoft
2020-06-23 12:56   ` Stefan Hajnoczi
2020-06-23 12:56     ` Stefan Hajnoczi
2021-05-06 17:27 ` Thomas Huth
2021-07-06  4:17 ` Launchpad Bug Tracker

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200617103206.GA1728005@stefanha-x1.localdomain \
    --to=1882241@bugs.launchpad.net \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).