Another step towards making NBD pass a byte-aligned discard request over the wire. Actually, until both raw_bsd.c and nbd-client.c support .bdrv_co_preadv(), the block layer still sets up a required_alignment of 512, so with this series alone, the NBD_CMD_TRIM requests are still aligned to sector boundaries (but now the logic is central to the block layer rather than NBD). So you can probably figure out what my next series will be :)
Prerequisite: Kevin's block branch, plus my work on byte-based block limits (v2 at the moment): https://lists.gnu.org/archive/html/qemu-devel/2016-06/msg04006.html and tested (but probably not hard requirement) on top of my work on auto-fragmenting: https://lists.gnu.org/archive/html/qemu-devel/2016-06/msg05819.html Also available as a tag at: git fetch git://repo.or.cz/qemu/ericb.git nbd-discard-v1 Eric Blake (17): block: Convert bdrv_co_discard() to byte-based block: Convert bdrv_discard() to byte-based block: Switch BlockRequest to byte-based block: Convert bdrv_aio_discard() to byte-based block: Convert BB interface to byte-based discards raw-posix: Switch paio_submit() to byte-based rbd: Switch rbd_start_aio() to byte-based block: Convert .bdrv_aio_discard() to byte-based block: Add .bdrv_co_pdiscard() driver callback blkreplay: Switch .bdrv_co_discard() to byte-based gluster: Switch .bdrv_co_discard() to byte-based iscsi: Switch .bdrv_co_discard() to byte-based nbd: Switch .bdrv_co_discard() to byte-based qcow2: Switch .bdrv_co_discard() to byte-based raw_bsd: Switch .bdrv_co_discard() to byte-based sheepdog: Switch .bdrv_co_discard() to byte-based block: Kill .bdrv_co_discard() block/nbd-client.h | 3 +- include/block/block.h | 10 +-- include/block/block_int.h | 8 +-- include/sysemu/block-backend.h | 9 ++- block/blkreplay.c | 8 +-- block/block-backend.c | 22 +++--- block/gluster.c | 14 ++-- block/io.c | 156 ++++++++++++++++++++--------------------- block/iscsi.c | 18 +++-- block/mirror.c | 5 +- block/nbd-client.c | 11 +-- block/nbd.c | 12 +--- block/qcow2-refcount.c | 4 +- block/qcow2.c | 10 +-- block/raw-posix.c | 24 +++---- block/raw-win32.c | 19 ++--- block/raw_bsd.c | 8 +-- block/rbd.c | 29 ++++---- block/sheepdog.c | 17 +++-- hw/block/xen_disk.c | 7 +- hw/ide/core.c | 6 +- hw/scsi/scsi-disk.c | 8 +-- nbd/server.c | 19 ++--- qemu-io-cmds.c | 3 +- block/trace-events | 4 +- 25 files changed, 209 insertions(+), 225 deletions(-) -- 2.5.5