Re: [PATCH] block: fix splitting segments
From: Jens Axboe <axboe@kernel.dk>
Date: 2020-01-07 22:33:02
Also in:
lkml
On 1/7/20 3:30 PM, Ming Lei wrote:
On Tue, Jan 07, 2020 at 10:11:45AM -0800, Guenter Roeck wrote:quoted
On Tue, Jan 07, 2020 at 11:23:39PM +0800, Ming Lei wrote:quoted
On Tue, Jan 07, 2020 at 04:47:08AM -0800, Guenter Roeck wrote:quoted
Hi, On Sun, Dec 29, 2019 at 10:32:30AM +0800, Ming Lei wrote:quoted
There are two issues in get_max_segment_size(): 1) the default segment boudary mask is bypassed, and some devices still require segment to not cross the default 4G boundary 2) the segment start address isn't taken into account when checking segment boundary limit Fixes the two issues. Fixes: dcebd755926b ("block: use bio_for_each_bvec() to compute multi-page bvec count") Signed-off-by: Ming Lei <redacted>This patch, pushed into mainline as "block: fix splitting segments on boundary masks", results in the following crash when booting 'versatilepb' in qemu from disk. Bisect log is attached. Detailed log is at https://kerneltests.org/builders/qemu-arm-master/builds/1410/steps/qemubuildcommand/logs/stdio Guenter --- Crash: kernel BUG at block/bio.c:1885! Internal error: Oops - BUG: 0 [#1] ARMPlease apply the following debug patch, and post the log.Here you are: max_sectors 2560 max_segs 96 max_seg_size 65536 mask ffffffff c738da80: 8c80/0 2416 28672, 0 total sectors 56 (I replaced %p with %px).Please try the following patch and see if it makes a difference. If not, replace trace_printk with printk in previous debug patch, and apply the debug patch only & post the log.
If it is a 32-bit issue, then we should use a 64-bit type to make this nicer than ULL. But it seems reasonable that it could be! -- Jens Axboe