diff options
| author | Peter Lieven | 2014-04-28 13:23:25 +0200 |
|---|---|---|
| committer | Paolo Bonzini | 2014-04-28 15:04:17 +0200 |
| commit | dbe5c58f2a44f49572b3346400779fac818fcaea (patch) | |
| tree | 59f4dd4f411038eafcd3e6095cc4511098af1162 | |
| parent | MAINTAINERS: mark megasas as maintained (diff) | |
| download | qemu-dbe5c58f2a44f49572b3346400779fac818fcaea.tar.gz qemu-dbe5c58f2a44f49572b3346400779fac818fcaea.tar.xz qemu-dbe5c58f2a44f49572b3346400779fac818fcaea.zip | |
block/iscsi: allow fall back to WRITE SAME without UNMAP
if the iscsi driver receives a write zeroes request with
the BDRV_REQ_MAY_UNMAP flag set it fails with -ENOTSUP
if the iscsi target does not support WRITE SAME with
UNMAP. However, the BDRV_REQ_MAY_UNMAP is only a hint
and writing zeroes with WRITE SAME will still be
better than falling back to writing zeroes with WRITE16.
Signed-off-by: Peter Lieven <pl@kamp.de>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
| -rw-r--r-- | block/iscsi.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/block/iscsi.c b/block/iscsi.c index a636ea4f53..56f54193c8 100644 --- a/block/iscsi.c +++ b/block/iscsi.c @@ -809,13 +809,14 @@ coroutine_fn iscsi_co_write_zeroes(BlockDriverState *bs, int64_t sector_num, return -EINVAL; } - if (!(flags & BDRV_REQ_MAY_UNMAP) && !iscsilun->has_write_same) { - /* WRITE SAME without UNMAP is not supported by the target */ - return -ENOTSUP; + if ((flags & BDRV_REQ_MAY_UNMAP) && !iscsilun->lbp.lbpws) { + /* WRITE SAME with UNMAP is not supported by the target, + * fall back and try WRITE SAME without UNMAP */ + flags &= ~BDRV_REQ_MAY_UNMAP; } - if ((flags & BDRV_REQ_MAY_UNMAP) && !iscsilun->lbp.lbpws) { - /* WRITE SAME with UNMAP is not supported by the target */ + if (!(flags & BDRV_REQ_MAY_UNMAP) && !iscsilun->has_write_same) { + /* WRITE SAME without UNMAP is not supported by the target */ return -ENOTSUP; } |
