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)
committerNicholas Bellinger <nab@linux-iscsi.org>
Tue, 17 Jul 2012 00:10:17 +0000 (17:10 -0700)
commit1765fe5edcb83f53fc67edeb559fcf4bc82c6460
tree8248c8a4f2a92b7806aca6457ddf5337464880b5
parentd35212f3ca3bf4fb49d15e37f530c9931e2d2183
target: Fix range calculation in WRITE SAME emulation when num blocks == 0

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>
Cc: Cc: <stable@vger.kernel.org>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
drivers/target/target_core_cdb.c