]> git.karo-electronics.de Git - karo-tx-linux.git/commit
target: Fix range calculation in WRITE SAME emulation when num blocks == 0
authorRoland Dreier <roland@purestorage.com>
Tue, 17 Jul 2012 00:10:17 +0000 (17:10 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 29 Jul 2012 15:04:18 +0000 (08:04 -0700)
commit5c8c9e57270fc5f54aa02144f7280f91ee2e3334
tree6dfaa7ed9e422cba32fa2a3d5ef9b1316eacca84
parent815faab2c4b7deb2cc6495186307ceb0983214a9
target: Fix range calculation in WRITE SAME emulation when num blocks == 0

commit 1765fe5edcb83f53fc67edeb559fcf4bc82c6460 upstream.

When NUMBER OF LOGICAL BLOCKS is 0, WRITE SAME is supposed to write
all the blocks from the specified LBA through the end of the device.
However, dev->transport->get_blocks(dev) (perhaps confusingly) returns
the last valid LBA rather than the number of blocks, so the correct
number of blocks to write starting with lba is

dev->transport->get_blocks(dev) - lba + 1

(nab: Backport roland's for-3.6 patch to for-3.5)

Signed-off-by: Roland Dreier <roland@purestorage.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/target/target_core_cdb.c