Re: lockdep wierdness...

From: Christoph Hellwig
Date: Thu Sep 27 2007 - 10:00:38 EST


On Thu, Sep 27, 2007 at 03:51:07PM +0200, Peter Zijlstra wrote:
> Christoph,
>
> does Steve's story make sense?

Yes.

> All that would need to be done is add an extra lock_class_key to
> file_system_type for i_mutex_dir_key, and extend alloc_inode to say
> something like:
>
> if (dir)
> lockdep_set_class(&inode->i_mutex, &sb->s_type->i_mutex_dir_key);
> else
> lockdep_set_class(&inode->i_mutex, &sb->s_type->i_mutex_key);

Unfortunately we don't know what type of inode we have when calling
alloc_inode. We only know it after reading in the inode from disk,
aka in unlock_new_inode. Then again there is no reason to use
i_mutex before unlock_new_inode returns, so maybe we could defer
initializing it until unlock_new_inode. I'm pretty sure we'll have
to fix a few filesystems that take i_mutex before that despite not
needing it, e.g. through i_size_write, though.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/