Re: [patch v2 for-3.2] block: initialize request_queue's numa nodeduring allocation
From: Jens Axboe
Date: Wed Nov 23 2011 - 04:59:43 EST
On 2011-11-23 02:14, David Rientjes wrote:
> From: Mike Snitzer <snitzer@xxxxxxxxxx>
>
> struct request_queue is allocated with __GFP_ZERO so its "node" field is
> zero before initialization. This causes an oops if node 0 is offline in
> the page allocator because its zonelists are not initialized. From Dave
> Young's dmesg:
>
> SRAT: Node 1 PXM 2 0-d0000000
> SRAT: Node 1 PXM 2 100000000-330000000
> SRAT: Node 0 PXM 1 330000000-630000000
> Initmem setup node 1 0000000000000000-000000000affb000
> ...
> Built 1 zonelists in Node order, mobility grouping on.
> ...
> BUG: unable to handle kernel paging request at 0000000000001c08
> IP: [<ffffffff8111c355>] __alloc_pages_nodemask+0xb5/0x870
>
> and __alloc_pages_nodemask+0xb5 translates to a NULL pointer on
> zonelist->_zonerefs.
>
> The fix is to initialize q->node at the time of allocation so the correct
> node is passed to the slab allocator later.
>
> Since blk_init_allocated_queue_node() is no longer needed, merge it with
> blk_init_allocated_queue().
Thanks, queued for current release.
--
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/