Re: [PATCH] bounce:fix bug, avoid to flush dcache on slab page fromjbd2.

From: Andrew Morton
Date: Wed Mar 13 2013 - 00:11:08 EST


On Wed, 13 Mar 2013 11:35:15 +0800 Shuge <shugelinux@xxxxxxxxx> wrote:

> Hi all
> >>> The bounce accept slab pages from jbd2, and flush dcache on them.
> >>> When enabling VM_DEBUG, it will tigger VM_BUG_ON in page_mapping().
> >>> So, check PageSlab to avoid it in __blk_queue_bounce().
> >>>
> >>> Bug URL: http://lkml.org/lkml/2013/3/7/56
> >>>
> >>> ...
> >>>
> >> ......
> >>
> > That sure is strange. I didn't see any obvious reasons why we'd end up with a
> >
> ......
>
> Well, this problem not only appear in arm64, but also arm32. And my
> kernel version is 3.3.0, arch is arm32.
> Following the newest kernel, the problem shoulde be exist.
> I agree with Darrick's modification. Hum, if
> CONFIG_NEED_BOUNCE_POOL is not set, it also flush dcahce on
> the pages of b_frozen_data, some of them are allocated by kmem_cache_alloc.
> As we know, jbd2_alloc allocate a buffer from jbd2_xk slab pool,
> when the size is smaller than PAGE_SIZE.
> The b_frozen_data is not mapped to usrspace, not aliasing cache. It cat
> be lazy flush or other. Is it right?

Please reread my email. The page at b_frozen_data was allocated with
GFP_NOFS. Hence it should not need bounce treatment (if arm is
anything like x86).

And yet it *did* receive bounce treatment. Why?
--
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/