summaryrefslogtreecommitdiff
path: root/drivers/nvme/host
diff options
context:
space:
mode:
authorJames Smart <jsmart2021@gmail.com>2018-07-16 14:38:14 -0700
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2018-08-09 12:16:39 +0200
commitd626ac9669f29a4cd4d16ccf27349688a6dda2fd (patch)
treee49249cf866920f6f3a2971970dcd248ad4761ea /drivers/nvme/host
parent4af9c61ad953ccc7dbd059a45e77e84db563bd41 (diff)
nvmet-fc: fix target sgl list on large transfers
commit d082dc1562a2ff0947b214796f12faaa87e816a9 upstream. The existing code to carve up the sg list expected an sg element-per-page which can be very incorrect with iommu's remapping multiple memory pages to fewer bus addresses. To hit this error required a large io payload (greater than 256k) and a system that maps on a per-page basis. It's possible that large ios could get by fine if the system condensed the sgl list into the first 64 elements. This patch corrects the sg list handling by specifically walking the sg list element by element and attempting to divide the transfer up on a per-sg element boundary. While doing so, it still tries to keep sequences under 256k, but will exceed that rule if a single sg element is larger than 256k. Fixes: 48fa362b6c3f ("nvmet-fc: simplify sg list handling") Cc: <stable@vger.kernel.org> # 4.14 Signed-off-by: James Smart <james.smart@broadcom.com> Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/nvme/host')
0 files changed, 0 insertions, 0 deletions