Commit 8b184744 authored by Eric Blake's avatar Eric Blake Committed by Kevin Wolf
Browse files

iscsi: Use block size as minimum zero/discard alignment



If hardware does not advertise a minimum zero/discard
alignment, we still want to guarantee that the block layer
will align requests to our blocks, rather than the arbitrary
512-byte BDRV sector size.

Signed-off-by: default avatarEric Blake <eblake@redhat.com>
Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
parent ebb718a5
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -1711,6 +1711,8 @@ static void iscsi_refresh_limits(BlockDriverState *bs, Error **errp)
        }
        bs->bl.discard_alignment =
            sector_limits_lun2qemu(iscsilun->bl.opt_unmap_gran, iscsilun);
    } else {
        bs->bl.discard_alignment = iscsilun->block_size >> BDRV_SECTOR_BITS;
    }

    if (iscsilun->bl.max_ws_len < 0xffffffff) {
@@ -1720,6 +1722,9 @@ static void iscsi_refresh_limits(BlockDriverState *bs, Error **errp)
    if (iscsilun->lbp.lbpws) {
        bs->bl.write_zeroes_alignment =
            sector_limits_lun2qemu(iscsilun->bl.opt_unmap_gran, iscsilun);
    } else {
        bs->bl.write_zeroes_alignment =
            iscsilun->block_size >> BDRV_SECTOR_BITS;
    }
    bs->bl.opt_transfer_length =
        sector_limits_lun2qemu(iscsilun->bl.opt_xfer_len, iscsilun);