From: Anthony Liguori Date: Fri, 24 Jan 2014 23:50:14 +0000 (-0800) Subject: Merge remote-tracking branch 'bonzini/scsi-next' into staging X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=e9f526ab7b01662c323a47446e22308968221ac1;p=qmiga%2Fqemu.git Merge remote-tracking branch 'bonzini/scsi-next' into staging * bonzini/scsi-next: scsi: Support TEST UNIT READY in the dummy LUN0 block: add .bdrv_reopen_prepare() stub for iscsi virtio-scsi: Prevent assertion on missed events virtio-scsi: Cleanup of I/Os that never started scsi: Assign cancel_io vector for scsi_disk_emulate_ops Conflicts: block/iscsi.c aliguori: resolve trivial merge conflict in block/iscsi.c Signed-off-by: Anthony Liguori --- e9f526ab7b01662c323a47446e22308968221ac1 diff --cc block/iscsi.c index 890bd81336,5976bd14da..6f4af72a75 --- a/block/iscsi.c +++ b/block/iscsi.c @@@ -1310,31 -1326,11 +1310,38 @@@ static void iscsi_close(BlockDriverStat memset(iscsilun, 0, sizeof(IscsiLun)); } +static int iscsi_refresh_limits(BlockDriverState *bs) +{ + IscsiLun *iscsilun = bs->opaque; + + /* We don't actually refresh here, but just return data queried in + * iscsi_open(): iscsi targets don't change their limits. */ + if (iscsilun->lbp.lbpu || iscsilun->lbp.lbpws) { + if (iscsilun->bl.max_unmap < 0xffffffff) { + bs->bl.max_discard = sector_lun2qemu(iscsilun->bl.max_unmap, + iscsilun); + } + bs->bl.discard_alignment = sector_lun2qemu(iscsilun->bl.opt_unmap_gran, + iscsilun); + + if (iscsilun->bl.max_ws_len < 0xffffffff) { + bs->bl.max_write_zeroes = sector_lun2qemu(iscsilun->bl.max_ws_len, + iscsilun); + } + bs->bl.write_zeroes_alignment = sector_lun2qemu(iscsilun->bl.opt_unmap_gran, + iscsilun); + + bs->bl.opt_transfer_length = sector_lun2qemu(iscsilun->bl.opt_xfer_len, + iscsilun); + } ++ return 0; ++} + + /* We have nothing to do for iSCSI reopen, stub just returns + * success */ + static int iscsi_reopen_prepare(BDRVReopenState *state, + BlockReopenQueue *queue, Error **errp) + { return 0; }