• Ming Lei's avatar
    block: fix bounce_end_io · 99451879
    Ming Lei authored
    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
    Reported-by: default avatarJosh Boyer <jwboyer@fedoraproject.org>
    Tested-by: default avatarAdam Williamson <awilliam@redhat.com>
    Cc: Ming Lin <mlin@kernel.org>
    Cc: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: default avatarMing Lei <ming.lei@canonical.com>
    Signed-off-by: default avatarJens Axboe <axboe@fb.com>
    99451879
bounce.c 6.38 KB