Re: [PATCH] block: fix bounce_end_io

From: Jens Axboe
Date: Thu Sep 17 2015 - 12:07:36 EST


On 09/17/2015 10:06 AM, Ming Lei wrote:
When bio bounce is involved, one new bio and its biovecs are
cloned from the comming bio, which can be one fast-cloned bio
from upper layer(such as dm).

So it is obviously wrong to assume the start index of the coming(
original) bio's io vector is zero, which can be any value between
0 and (bi_max_vecs - 1), especially in case of bio split.

This patch fixes Fedora's booting oops on i386, often with the
following kernel log together:

[ 9.026738] systemd[1]: Switching root.
[ 9.036467] systemd-journald[149]: Received SIGTERM from PID 1
(systemd).
[ 9.082262] BUG: Bad page state in process kworker/u5:1 pfn:372ac
[ 9.083989] page:f3d32ae0 count:0 mapcount:0 mapping:f2252178
index:0x16a
[ 9.085755] flags: 0x40020021(locked|lru|mappedtodisk)
[ 9.087284] page dumped because: page still charged to cgroup
[ 9.088772] bad because of flags:
[ 9.089731] flags: 0x21(locked|lru)
[ 9.090818] page->mem_cgroup:f2c3e400

Applied, thanks Ming - and thanks Adam for testing it.

--
Jens Axboe

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/