virtio balloon: do not call blocking ops when !TASK_RUNNING

Rusty Russell
2015-03-02T00:07:26Z

Thomas Huth <thuth at linux.vnet.ibm.com> writes:
> On Thu, 26 Feb 2015 11:50:42 +1030
> Rusty Russell <rusty at rustcorp.com.au> wrote:
>
>> Thomas Huth <thuth at linux.vnet.ibm.com> writes:
>> >  Hi all,
>> >
>> > with the recent kernel 3.19, I get a kernel warning when I start
my
>> > KVM guest on s390 with virtio balloon enabled:
>>
>> The deeper problem is that virtio_ccw_get_config just silently fails on
>> OOM.
>>
>> Neither get_config nor set_config are expected to fail.
>
> AFAIK this is currently not a problem. According to
> http://lwn.net/Articles/627419/ these kmalloc calls never
> fail because they allocate less than a page.

I strongly suggest you unlearn that fact.

The fix for this is in two parts:

1) Annotate using sched_annotate_sleep() and add a comment: we may spin
   a few times in low memory situations, but this isn't a high
   performance path.

2) Handle get_config (and other) failure in some more elegant way.

Cheers,
Rusty.