Re: cn_queue.c

2005-04-01 Thread Evgeniy Polyakov
On Fri, 2005-04-01 at 15:12 +0400, Evgeniy Polyakov wrote: > > > cn_queue_wrapper() atomically increments cbq->cb->refcnt if runs, so it > > > will > > > be caught in > > > while (atomic_read(&cbq->cb->refcnt)) > > > msleep(1000); > > > in cn_queue_free_callback(). > > > If it does not run, th

Re: cn_queue.c

2005-04-01 Thread Evgeniy Polyakov
On Fri, 2005-04-01 at 02:43 -0800, Andrew Morton wrote: > Evgeniy Polyakov <[EMAIL PROTECTED]> wrote: > > > > On Fri, 2005-04-01 at 01:50 -0800, Andrew Morton wrote: > > > Evgeniy Polyakov <[EMAIL PROTECTED]> wrote: > > > > > > > > cn_queue_free_dev() will wait until dev->refcnt hits zero > > > >

Re: cn_queue.c

2005-04-01 Thread Andrew Morton
Evgeniy Polyakov <[EMAIL PROTECTED]> wrote: > > On Fri, 2005-04-01 at 01:50 -0800, Andrew Morton wrote: > > Evgeniy Polyakov <[EMAIL PROTECTED]> wrote: > > > > > > cn_queue_free_dev() will wait until dev->refcnt hits zero > > > before freeing any resources, > > > but it can happen only after cn_

Re: cn_queue.c

2005-04-01 Thread Evgeniy Polyakov
On Fri, 2005-04-01 at 01:50 -0800, Andrew Morton wrote: > Evgeniy Polyakov <[EMAIL PROTECTED]> wrote: > > > > cn_queue_free_dev() will wait until dev->refcnt hits zero > > before freeing any resources, > > but it can happen only after cn_queue_del_callback() does > > it's work on given callbac

Re: cn_queue.c

2005-04-01 Thread Andrew Morton
Evgeniy Polyakov <[EMAIL PROTECTED]> wrote: > > cn_queue_free_dev() will wait until dev->refcnt hits zero > before freeing any resources, > but it can happen only after cn_queue_del_callback() does > it's work on given callback device [actually when all callbacks > are removed]. > When new

Re: cn_queue.c

2005-04-01 Thread Evgeniy Polyakov
On Fri, 2005-04-01 at 00:48 -0800, Andrew Morton wrote: > Evgeniy Polyakov <[EMAIL PROTECTED]> wrote: > > > > New object has 0 reference counter when created. > > If some work is appointed to the object, then it's counter is atomically > > incremented. It is decremented when the work is finished

Re: cn_queue.c

2005-04-01 Thread Andrew Morton
Evgeniy Polyakov <[EMAIL PROTECTED]> wrote: > > New object has 0 reference counter when created. > If some work is appointed to the object, then it's counter is atomically > incremented. It is decremented when the work is finished. > If object is supposed to be removed while some work > may be

Re: cn_queue.c

2005-04-01 Thread Evgeniy Polyakov
On Thu, 2005-03-31 at 23:57 -0800, Andrew Morton wrote: > Evgeniy Polyakov <[EMAIL PROTECTED]> wrote: > > > > > > static void cn_queue_wrapper(void *data) > > > > { > > > > struct cn_callback_entry *cbq = (struct cn_callback_entry > > > > *)data; > > > > > > > > smp_mb__before_ato

Re: cn_queue.c

2005-04-01 Thread Andrew Morton
Evgeniy Polyakov <[EMAIL PROTECTED]> wrote: > > > > static void cn_queue_wrapper(void *data) > > > { > > > struct cn_callback_entry *cbq = (struct cn_callback_entry *)data; > > > > > > smp_mb__before_atomic_inc(); > > > atomic_inc(&cbq->cb->refcnt); > > > smp_mb__after_atomic_inc(); > > >

Re: cn_queue.c

2005-03-31 Thread Evgeniy Polyakov
On Thu, 2005-03-31 at 17:32 -0800, Andrew Morton wrote: > > /* > > * cn_queue.c > > * > > * 2004 Copyright (c) Evgeniy Polyakov <[EMAIL PROTECTED]> > > * All rights reserved. > > * > > * This program is free software; you can redistribute it and/or modify > > * it under the terms of the G