On Wed, Nov 15, 2006 at 11:42:38AM -0500, Jeff Layton wrote: > +{ > + int rv; > + > + rv = idr_pre_get(&inode->i_sb->s_inode_ids, GFP_KERNEL); > + if (! rv) > + return -ENOMEM; > + > + lock_super(inode->i_sb); ?!#!@#!??? Please, use something saner. Use of lock_super() for anything generic is wrong; using it for something that'd better be fast is even dumber... > @@ -1025,6 +1055,7 @@ void generic_delete_inode(struct inode * > spin_lock(&inode_lock); > hlist_del_init(&inode->i_hash); > spin_unlock(&inode_lock); > + iunique_unregister(inode); Unconditional? Hitting every fs out there? With that kind of locking? > wake_up_inode(inode); > BUG_ON(inode->i_state != I_CLEAR); > destroy_inode(inode); > @@ -1057,6 +1088,7 @@ static void generic_forget_inode(struct > inode->i_state |= I_FREEING; > inodes_stat.nr_inodes--; > spin_unlock(&inode_lock); > + iunique_unregister(inode); Ditto. > if (inode->i_data.nrpages) > truncate_inode_pages(&inode->i_data, 0); > clear_inode(inode); > diff --git a/fs/pipe.c b/fs/pipe.c > index b1626f2..d74ae65 100644 > --- a/fs/pipe.c > +++ b/fs/pipe.c > @@ -845,6 +845,9 @@ static struct inode * get_pipe_inode(voi > if (!inode) > goto fail_inode; > > + if (iunique_register(inode, 0)) > + goto fail_iput; > + Humm... I wonder what the overhead of that is going to be. There easily can be shitloads of pipes on the box, with all sorts of lifetimes. And we'd better be fast on that codepath... - To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html