Re: RCU callback and scheduling while atomic!

From: Herbert Poetzl
Date: Sun Sep 05 2004 - 19:27:13 EST


On Tue, Aug 31, 2004 at 09:51:40PM +0530, Dipankar Sarma wrote:
> On Tue, Aug 31, 2004 at 06:17:10PM +0200, Herbert Poetzl wrote:
> >
> > it seems that the RCU callback is not allowed
> > to (re-)schedule, as it is done occasionally by
> > put_namespace() for example, as I keep getting
> > "bad: scheduling while atomic!", when I do so ...
> >
> > now the question: what is the 'correct' way to
> > drop a reference to a namespace when freeing up
> > a structure from an RCU callback?
>
> You are right about not allowing schedule from callbacks. The callbacks
> are called from softirq context.
>
> Without your current code, it is difficult to say how to do this but here are
> some guesses -
>
> 1. You could mark the freed up structure deleted on update, do
> put_namspace() and do only the freeing in the rcu callback.
> dentries do this.
>
> 2. If not performance critical, you could use a workqueue to
> do the actual freeing including put_namespace(). Just wake up
> from the rcu callback.

ah, okay, I see, although it isn't time critical,
it seems to me that the first is the best choice
in my case, thanks for the hints ...

> These may or may not be applicable to your case. More details will
> help.

thanks,
Herbert

> Thanks
> Dipankar
> -
> 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/
-
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/