Messages in this thread | | | Date | Wed, 11 Jul 2007 21:24:35 -0700 | From | Andrew Morton <> | Subject | Re: lguest, Re: -mm merge plans for 2.6.23 |
| |
On Thu, 12 Jul 2007 12:48:41 +1000 Rusty Russell <rusty@rustcorp.com.au> wrote:
> On Wed, 2007-07-11 at 19:28 -0700, David Miller wrote: > > From: Rusty Russell <rusty@rustcorp.com.au> > > Date: Thu, 12 Jul 2007 11:21:51 +1000 > > > > > To do inter-guest (ie. inter-process) I/O you really have to make sure > > > the other side doesn't go away. > > > > You should just let it exit and when it does you receive some kind of > > exit notification that resets your virtual device channel. > > > > I think the reference counting approach is error and deadlock prone. > > Be more loose and let the events reset the virtual devices when > > guests go splat. > > There are two places where we grab task refcnt. One might be avoidable > (will test and get back) but the deferred wakeup isn't really: > > /* We cache one process to wakeup: helps for batching & wakes outside locks. */ > void set_wakeup_process(struct lguest *lg, struct task_struct *p) > { > if (p == lg->wake) > return; > > if (lg->wake) { > wake_up_process(lg->wake); > put_task_struct(lg->wake); > } > lg->wake = p; > if (lg->wake) > get_task_struct(lg->wake); > }
<handwaving>
We seem to be taking the reference against the wrong thing here. It should be against the mm, not against a task_struct? - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |