[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH net v2 2/3] xen-netback: don't stop dealloc kthread too early
On Mon, Aug 11, 2014 at 04:23:28PM +0100, David Vrabel wrote: > On 11/08/14 15:44, Wei Liu wrote: > > On Mon, Aug 11, 2014 at 03:13:41PM +0100, Zoltan Kiss wrote: > > [...] > >>> And cleaning it up a bit (the while() could be a for(;;)). > >> > >> I would recommend this: > >> --- > >> @@ -2066,7 +2066,7 @@ int xenvif_dealloc_kthread(void *data) > >> wait_event_interruptible(queue->dealloc_wq, > >> tx_dealloc_work_todo(queue) || > >> kthread_should_stop()); > >> - if (kthread_should_stop()) > >> + if (kthread_should_stop() && > >> !atomic_read(&queue->inflight_packets)) > >> break; > >> > >> xenvif_tx_dealloc_action(queue); > >> --- > >> If kthread_stop called, this will keep the main loop running until all > >> callbacks are called. > >> Then it proceeds to the exit branch, otherwise doesn't disrupt normal > >> operation. > > > > This snippet lacks change to while(). > > > > I would generally go for a shorter solution if the code is > > self-explanatory. > > > > @@ -2078,21 +2066,19 @@ int xenvif_dealloc_kthread(void *data) > > { > > struct xenvif_queue *queue = data; > > > > - while (!kthread_should_stop()) { > > + for (;;) { > > wait_event_interruptible(queue->dealloc_wq, > > tx_dealloc_work_todo(queue) || > > kthread_should_stop()); > > This will never sleep if the thread is being stopped when there are > packets in flight. > Good catch. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |