![]() | |||||||||||||
Messages in this thread |
On Thu, Mar 09, Kirill Korotaev wrote: > >Thanks! I'll send the corrected patch. > >So, everythings fine now? > looks so! Will be glad to Ack/Sign or whatever needed :))) > Ok. > >>> d_free(dentry); > >>> if (parent != dentry) > >>> dput(parent); > >>> spin_lock(&dcache_lock); > >>>+ sb->s_prunes--; > >>>+ if (likely(!sb->s_prunes)) > >> > >><<< Is it possibe to do something like: > >>if (unlikely(!sb->s_root && !sb->s_prunes)) > >>? > > > > > >Uh, I forgot about that one. You already complained about that before :( > But I'm not sure it is that simple... s_root is set to NULL w/o locks, > so I wonder whether it is safe to check it here or we can miss some > wakeups... No, it's not. We need to down_read(&sb->s_umount) for that which is deadlocking because we down_write() it before calling ->kill_sb(). So this isn't safe. For now I'll keep it like before and live with the overhead of calling wake_up() on an empty wait-queue. Regards, Jan -- Jan Blunck jblunck@suse.de SuSE LINUX AG - A Novell company Maxfeldstr. 5 +49-911-74053-608 D-90409 Nürnberg http://www.suse.de - 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/ | ||||||||||||
| Last update: 2006-03-09 16:42 [from the cache] ©2003-2008 | |||||||||||||