All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: Ming Lei <ming.lei@canonical.com>
Cc: Kevin Wolf <kwolf@redhat.com>,
	qemu-stable@nongnu.org, Stefan Hajnoczi <stefanha@redhat.com>,
	qemu-devel <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] [PATCH] block: fix big write
Date: Wed, 10 Dec 2014 16:02:16 +0100	[thread overview]
Message-ID: <54886078.1090503@redhat.com> (raw)
In-Reply-To: <CACVXFVOk1x9kLNejW+7wy1Dq+OV3emZDfaizfRDe2jceGGU1Cw@mail.gmail.com>



On 10/12/2014 15:35, Ming Lei wrote:
>>> It is _not_ never happen at all, and easy to be triggered when using
>>> mkfs.
>>
>> mkfs is not something to optimize for, it's just something that should
>> work.  (Also, some hardware may time out if you do write same with too
>> high a block count).
> 
> I don't think it is related with the hardware time out issue since your
> patch still splits the block count into 2G - 1, and both are same wrt.
> block count.

If the guest sends a 1TB WRITE SAME, it's more likely to time out.

>> Both Linux and Windows will always use UNMAP on QEMU, except for the
>> small time period where Linux used WRITE SAME and this bug was
>> discovered.  And all versions of Linux that used WRITE SAME honored the
>> max_ws_blocks field.
> 
> Not sure how you get the conclusion.

Because the WRITE SAME patch was submitted ~1 month ago.

Windows uses UNMAP because Microsoft says so.

> Secondly SBC-3 draft doesn't describe the priority explicitly among
> UNMAP, WRITE SAME 10, and WRITE SAME 16, so it is driver's
> freedom to take anyone in theory.

Sure, but WRITE SAME with UNMAP doesn't make sense if you do not have
LBPRZ, which QEMU does not set.  In fact the only sensible things to do are:

- use WRITE SAME if LBPRZ

- use UNMAP if !LBPRZ

So any sensible guest will use UNMAP.

> Finally blkdev_issue_zeroout() can send WRITE SAME(10/16) directly
> and it can be from user space, fs, and block drivers.

That is WRITE SAME without UNMAP, it is not used by mkfs, and Linux has
always honored max_write_same_blocks for it (defaulting to a 65535 block
limit for older devices that did not report a limit).

So what *concrete* case would be fixed by adding extra little-used code
in QEMU to do the split?

Paolo

> Thanks,
> Ming Lei
> 
> 

  reply	other threads:[~2014-12-10 15:02 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-05 16:15 [Qemu-devel] [PATCH] block: fix big write Ming Lei
2014-12-05 16:33 ` Paolo Bonzini
2014-12-08  7:19   ` Ming Lei
2014-12-09 17:45     ` Paolo Bonzini
2014-12-10  1:41       ` Ming Lei
2014-12-10  9:56         ` Paolo Bonzini
2014-12-10 12:23           ` Ming Lei
2014-12-10 12:55             ` Paolo Bonzini
2014-12-10 14:35               ` Ming Lei
2014-12-10 15:02                 ` Paolo Bonzini [this message]
2014-12-10 15:47                   ` Ming Lei
2014-12-10 16:44                     ` Paolo Bonzini
2014-12-05 17:03 ` Max Reitz
2014-12-05 17:04   ` Paolo Bonzini

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=54886078.1090503@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=ming.lei@canonical.com \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-stable@nongnu.org \
    --cc=stefanha@redhat.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.