Thread (28 messages) 28 messages, 7 authors, 2018-12-05

RE: [PATCH v9] virtio_blk: add discard and write zeroes support

From: Liu, Changpeng <hidden>
Date: 2018-12-05 09:48:10
Also in: linux-block

What's the status of this patch ? anybody pulled it for the branch ?
-----Original Message-----
From: Stefan Hajnoczi [mailto:stefanha@redhat.com]
Sent: Friday, November 2, 2018 12:18 PM
To: Daniel Verkamp <redacted>
Cc: virtualization@lists.linux-foundation.org; linux-block@vger.kernel.org;
Michael S. Tsirkin [off-list ref]; Jason Wang [off-list ref];
Jens Axboe [off-list ref]; Paolo Bonzini [off-list ref];
Christoph Hellwig [off-list ref]; Liu, Changpeng
[off-list ref]
Subject: Re: [PATCH v9] virtio_blk: add discard and write zeroes support

On Thu, Nov 01, 2018 at 03:40:35PM -0700, Daniel Verkamp wrote:
quoted
From: Changpeng Liu <redacted>

In commit 88c85538, "virtio-blk: add discard and write zeroes features
to specification" (https://github.com/oasis-tcs/virtio-spec), the virtio
block specification has been extended to add VIRTIO_BLK_T_DISCARD and
VIRTIO_BLK_T_WRITE_ZEROES commands.  This patch enables support for
discard and write zeroes in the virtio-blk driver when the device
advertises the corresponding features, VIRTIO_BLK_F_DISCARD and
VIRTIO_BLK_F_WRITE_ZEROES.

Signed-off-by: Changpeng Liu <redacted>
Signed-off-by: Daniel Verkamp <redacted>
---
dverkamp: I've picked up this patch and made a few minor changes (as
listed below); most notably, I changed the kmalloc back to GFP_ATOMIC,
since it can be called from a context where sleeping is not allowed.
To prevent large allocations, I've also clamped the maximum number of
discard segments to 256; this results in a 4K allocation and should be
plenty of descriptors for most use cases.

I also removed most of the description from the commit message, since it
was duplicating the comments from virtio_blk.h and quoting parts of the
spec without adding any extra information.  I have tested this iteration
of the patch using crosvm with modifications to enable the new features:
https://chromium.googlesource.com/chromiumos/platform/crosvm/

v9 fixes a number of review issues; I didn't attempt to optimize the
single-element write zeroes case, so it still does an allocation per
request (I did not see any easy place to put the payload that would
avoid the allocation).

CHANGELOG:
v9: [dverkamp] fix LE types in discard struct; cleanups from Ming Lei
v8: [dverkamp] replace shifts by 9 with SECTOR_SHIFT constant
v7: [dverkamp] use GFP_ATOMIC for allocation that may not sleep; clarify
descriptor flags field; comment wording cleanups.
v6: don't set T_OUT bit to discard and write zeroes commands.
v5: use new block layer API: blk_queue_flag_set.
v4: several optimizations based on MST's comments, remove bit field
usage for command descriptor.
v3: define the virtio-blk protocol to add discard and write zeroes
support, first version implementation based on proposed specification.
v2: add write zeroes command support.
v1: initial proposal implementation for discard command.
---
 drivers/block/virtio_blk.c      | 83 ++++++++++++++++++++++++++++++++-
 include/uapi/linux/virtio_blk.h | 54 +++++++++++++++++++++
 2 files changed, 135 insertions(+), 2 deletions(-)
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help