Rajagopal Ananthanarayanan wrote:
> Hi Marcelo,
> The particular allocation in question, the kmalloc in
> __pagebuf_write_full_page, is needed only to perform
> clustering. So, what's needed is a really cheap allocation;
> the code doesn't care if the allocation fails.
> I think the patch you sent avoids calling writepage out of
> page_launder() on GFP_PAGE_IO. This should work also.
Well, as I reported earlier, it still fails on my machine. The failure
is not a panic, the kernel produces one-to-many '__alloc_pages: 0-order
allocation failed' messages, and the process stops, in uninterruptible
sleep. Using the ps -o wchan feature, I can see one process with
'raid1_grow_bh' or 'raid1_alloc_bh' as it's wchan value, if that's a
clue. I *do* have to stress it (memory pressure), and I'm seeing swap
activity (via top(1)) before it occurs.
By the way, I turned on DEBUG in raid1.c, and saw it produce one
message just before it hung: "waiting for 1 bh".
"Men occasionally stumble over the truth, but most of them pick
themselves up and hurry off as if nothing had happened."
-- Winston Churchill