Re: [PATCH 18/18] fs: Reduce inode I_FREEING and factor inode disposal

Al Viro
2010-10-08T10:18:21Z

On Fri, Oct 08, 2010 at 04:21:32PM +1100, Dave Chinner wrote:

> + spin_unlock(&sb->s_inodes_lock);
>
> - spin_lock(&inode_lru_lock);
> - list_move(&inode->i_lru, dispose);
> - spin_unlock(&inode_lru_lock);
> + dispose_one_inode(inode);
>
> - percpu_counter_dec(&nr_inodes_unused);
> + spin_lock(&sb->s_inodes_lock);

And now you've unlocked the list and even blocked. What's going to
keep next valid through that fun?

> + spin_unlock(&inode_lru_lock);
> +
> + dispose_one_inode(inode);
> + cond_resched();
> +
> + spin_lock(&inode_lru_lock);

Same, only worse - in the previous you might hope for lack of activity
on fs, in this one you really can't.