Thread (3 messages) 3 messages, 3 authors, 2016-06-13

Re: block: don't check request size in blk_cloned_rq_check_limits()

From: Christoph Hellwig <hch@infradead.org>
Date: 2016-06-13 08:07:20
Also in: linux-scsi

Possibly related (same subject, not in this thread)

On Sat, Jun 11, 2016 at 03:10:06PM +0200, Hannes Reinecke wrote:
Well, the primary issue is that 'blk_cloned_rq_check_limits()' doesn't check
for BLOCK_PC, so this particular check would be applied for every request.
So fix it..
But as it turns out, even adding a check for BLOCK_PC doesn't help, so we're
indeed seeing REQ_TYPE_FS requests with larger max_sector counts.

As to _why_ this happens I frankly have no idea. I have been staring at this
particular code for over a year now (I've got another bug pending where we
hit the _other_ if clause), but to no avail.
So I've resolved to drop the check altogether, seeing that max_sector size
is _not_ something which gets changed during failover.
Therefore if the max_sector count is wrong for the cloned request it was
already wrong for the original request, and we should've errored it out far
earlier.
The max_segments count, OTOH, _might_ change during failover (different
hardware has different max_segments setting, and this is being changed
during sg mapping), so there is some value to be had from testing it here.
I really think we need to drill down and figure out what's going on here
first.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help