Re: Page allocation failures in guest

Avi Kivity
2009-08-12T05:41:21Z

On 08/12/2009 08:31 AM, Rusty Russell wrote:
> +static void refill_work(struct work_struct *work)
> +{
> + struct virtnet_info *vi;
> + bool still_empty;
> +
> + vi = container_of(work, struct virtnet_info, refill);
> + napi_disable(&vi->napi);
> + try_fill_recv(vi, GFP_KERNEL);
> + still_empty = (vi->num == 0);
> + napi_enable(&vi->napi);
> +
> + /* In theory, this can happen: if we don't get any buffers in
> + * we will*never* try to fill again. Sleeping in keventd if
> + * bad, but that is worse. */
> + if (still_empty) {
> + msleep(100);
> + schedule_work(&vi->refill);
> + }
> +}
> +
>

schedule_delayed_work()?

--
Do not meddle in the internals of kernels, for they are subtle and quick to panic.