All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: Alex Bligh <alex@alex.org.uk>,
	Quentin Casasnovas <quentin.casasnovas@oracle.com>
Cc: Eric Blake <eblake@redhat.com>,
	"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
	"qemu-trivial@nongnu.org" <qemu-trivial@nongnu.org>,
	"nbd-general@lists.sourceforge.net"
	<nbd-general@lists.sourceforge.net>,
	"qemu-stable@nongnu.org" <qemu-stable@nongnu.org>,
	qemu block <qemu-block@nongnu.org>
Subject: Re: [Qemu-trivial] [Nbd] [Qemu-devel] [PATCH] nbd: fix trim/discard commands with a length bigger than NBD_MAX_BUFFER_SIZE
Date: Wed, 11 May 2016 11:38:20 +0200	[thread overview]
Message-ID: <5732FD8C.1080106@redhat.com> (raw)
In-Reply-To: <8F0007CD-40E2-43C1-8196-B4BE401B8EF4@alex.org.uk>



On 10/05/2016 18:23, Alex Bligh wrote:
> > Is there a use case where you'd want to split up a single big TRIM request
> > in smaller ones (as in some hardware would not support it or something)?
> > Even then, it looks like this splitting up would be hardware dependant and
> > better implemented in block device drivers.
> 
> Part of the point of the block size extension is to push such limits to the
> client.
> 
> I could make up use cases (e.g. that performing a multi-gigabyte trim in
> a single threaded server will effectively block all other I/O), but the
> main reason in my book is orthogonality, and the fact the client needs
> to do some breaking up anyway.

That's why SCSI for example has a limit to UNMAP and WRITE SAME requests
(actually it has three limits: number of ranges per unmap, which in NBD
and in SCSI WRITE SAME is 1; number of blocks per unmap descriptor;
number of blocks per WRITE SAME operation).  These limits however are a
different one than the read/write limit, because you want to support
systems where TRIM is much faster than regular I/O (and possibly even
O(1) if trimming something that is already trimmed).

Paolo


WARNING: multiple messages have this Message-ID (diff)
From: Paolo Bonzini <pbonzini@redhat.com>
To: Alex Bligh <alex@alex.org.uk>,
	Quentin Casasnovas <quentin.casasnovas@oracle.com>
Cc: Eric Blake <eblake@redhat.com>,
	"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
	"qemu-trivial@nongnu.org" <qemu-trivial@nongnu.org>,
	"nbd-general@lists.sourceforge.net"
	<nbd-general@lists.sourceforge.net>,
	"qemu-stable@nongnu.org" <qemu-stable@nongnu.org>,
	qemu block <qemu-block@nongnu.org>
Subject: Re: [Qemu-devel] [Nbd] [PATCH] nbd: fix trim/discard commands with a length bigger than NBD_MAX_BUFFER_SIZE
Date: Wed, 11 May 2016 11:38:20 +0200	[thread overview]
Message-ID: <5732FD8C.1080106@redhat.com> (raw)
In-Reply-To: <8F0007CD-40E2-43C1-8196-B4BE401B8EF4@alex.org.uk>



On 10/05/2016 18:23, Alex Bligh wrote:
> > Is there a use case where you'd want to split up a single big TRIM request
> > in smaller ones (as in some hardware would not support it or something)?
> > Even then, it looks like this splitting up would be hardware dependant and
> > better implemented in block device drivers.
> 
> Part of the point of the block size extension is to push such limits to the
> client.
> 
> I could make up use cases (e.g. that performing a multi-gigabyte trim in
> a single threaded server will effectively block all other I/O), but the
> main reason in my book is orthogonality, and the fact the client needs
> to do some breaking up anyway.

That's why SCSI for example has a limit to UNMAP and WRITE SAME requests
(actually it has three limits: number of ranges per unmap, which in NBD
and in SCSI WRITE SAME is 1; number of blocks per unmap descriptor;
number of blocks per WRITE SAME operation).  These limits however are a
different one than the read/write limit, because you want to support
systems where TRIM is much faster than regular I/O (and possibly even
O(1) if trimming something that is already trimmed).

Paolo

  parent reply	other threads:[~2016-05-11  9:38 UTC|newest]

Thread overview: 60+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-06  8:45 [Qemu-trivial] [PATCH] nbd: fix trim/discard commands with a length bigger than NBD_MAX_BUFFER_SIZE Quentin Casasnovas
2016-05-06  8:45 ` [Qemu-devel] " Quentin Casasnovas
2016-05-10 14:01 ` [Qemu-trivial] " Eric Blake
2016-05-10 14:01   ` Eric Blake
2016-05-10 15:08   ` [Qemu-trivial] [Nbd] " Alex Bligh
2016-05-10 15:08     ` [Qemu-devel] [Nbd] " Alex Bligh
2016-05-10 15:29     ` [Qemu-trivial] [Nbd] [Qemu-devel] " Eric Blake
2016-05-10 15:29       ` [Qemu-devel] [Nbd] " Eric Blake
2016-05-10 15:38       ` [Qemu-trivial] [Nbd] [Qemu-devel] " Alex Bligh
2016-05-10 15:38         ` [Qemu-devel] [Nbd] " Alex Bligh
2016-05-10 15:45         ` [Qemu-trivial] [Nbd] [Qemu-devel] " Quentin Casasnovas
2016-05-10 15:45           ` [Qemu-devel] [Nbd] " Quentin Casasnovas
2016-05-10 15:49           ` [Qemu-trivial] [Nbd] [Qemu-devel] " Alex Bligh
2016-05-10 15:49             ` [Qemu-devel] [Nbd] " Alex Bligh
2016-05-10 16:04             ` [Qemu-trivial] [Nbd] [Qemu-devel] " Quentin Casasnovas
2016-05-10 16:04               ` [Qemu-devel] [Nbd] " Quentin Casasnovas
2016-05-10 16:23               ` [Qemu-trivial] [Nbd] [Qemu-devel] " Alex Bligh
2016-05-10 16:23                 ` [Qemu-devel] [Nbd] " Alex Bligh
2016-05-10 16:27                 ` [Qemu-trivial] [Nbd] [Qemu-devel] " Quentin Casasnovas
2016-05-10 16:27                   ` [Qemu-devel] [Nbd] " Quentin Casasnovas
2016-05-11  9:38                 ` Paolo Bonzini [this message]
2016-05-11  9:38                   ` Paolo Bonzini
2016-05-11 14:08                   ` [Qemu-trivial] [Nbd] [Qemu-devel] " Eric Blake
2016-05-11 14:08                     ` [Qemu-devel] [Nbd] " Eric Blake
2016-05-11 14:55                     ` [Qemu-trivial] [Nbd] [Qemu-devel] " Alex Bligh
2016-05-11 14:55                       ` [Qemu-devel] [Nbd] " Alex Bligh
2016-05-11 15:08                       ` [Qemu-trivial] [Nbd] [Qemu-devel] " Paolo Bonzini
2016-05-11 15:08                         ` [Qemu-devel] [Nbd] " Paolo Bonzini
2016-05-10 17:55         ` [Qemu-trivial] [Nbd] [Qemu-devel] " Paolo Bonzini
2016-05-10 17:55           ` [Qemu-devel] [Nbd] " Paolo Bonzini
2016-05-11 21:12         ` [Qemu-trivial] [Nbd] [Qemu-devel] " Wouter Verhelst
2016-05-11 21:12           ` [Qemu-devel] [Nbd] " Wouter Verhelst
2016-05-12 15:33           ` [Qemu-trivial] [Nbd] [Qemu-devel] " Alex Bligh
2016-05-12 15:33             ` [Qemu-devel] [Nbd] " Alex Bligh
2016-05-10 15:41       ` [Qemu-trivial] [Nbd] [Qemu-devel] " Alex Bligh
2016-05-10 15:41         ` [Qemu-devel] [Nbd] " Alex Bligh
2016-05-10 15:46         ` [Qemu-trivial] [Nbd] [Qemu-devel] " Eric Blake
2016-05-10 15:46           ` [Qemu-devel] [Nbd] " Eric Blake
2016-05-10 15:52           ` [Qemu-trivial] [Nbd] [Qemu-devel] " Alex Bligh
2016-05-10 15:52             ` [Qemu-devel] [Nbd] " Alex Bligh
2016-05-10 15:54           ` [Qemu-trivial] [Nbd] [Qemu-devel] " Quentin Casasnovas
2016-05-10 15:54             ` [Qemu-devel] [Nbd] " Quentin Casasnovas
2016-05-10 16:33             ` [Qemu-trivial] [Nbd] [Qemu-devel] " Quentin Casasnovas
2016-05-10 16:33               ` [Qemu-devel] [Nbd] " Quentin Casasnovas
2016-05-10 20:24               ` [Qemu-trivial] [Nbd] [Qemu-devel] " Eric Blake
2016-05-10 20:24                 ` [Qemu-devel] [Nbd] " Eric Blake
2016-05-10 19:13         ` [Qemu-trivial] [Nbd] [Qemu-devel] " Michał Belczyk
2016-05-10 19:13           ` [Qemu-devel] [Nbd] " Michał Belczyk
2016-05-11 21:10       ` [Qemu-trivial] [Nbd] [Qemu-devel] " Wouter Verhelst
2016-05-11 21:10         ` [Qemu-devel] [Nbd] " Wouter Verhelst
2016-05-11 21:06     ` [Qemu-trivial] [Nbd] [Qemu-devel] " Wouter Verhelst
2016-05-11 21:06       ` [Qemu-devel] [Nbd] " Wouter Verhelst
2016-05-12 15:03       ` [Qemu-trivial] [Nbd] [Qemu-devel] " Alex Bligh
2016-05-12 15:03         ` [Qemu-devel] [Nbd] " Alex Bligh
2016-05-10 20:34 ` [Qemu-trivial] [Qemu-devel] " Eric Blake
2016-05-10 20:34   ` Eric Blake
2016-05-11  8:34   ` [Qemu-trivial] " Quentin Casasnovas
2016-05-11  8:34     ` Quentin Casasnovas
2016-05-11 14:11     ` [Qemu-trivial] " Eric Blake
2016-05-11 14:11       ` Eric Blake

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=5732FD8C.1080106@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=alex@alex.org.uk \
    --cc=eblake@redhat.com \
    --cc=nbd-general@lists.sourceforge.net \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-stable@nongnu.org \
    --cc=qemu-trivial@nongnu.org \
    --cc=quentin.casasnovas@oracle.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.