• Arjan van de Ven's avatar
    [PATCH] lockdep: annotate the quota code · 5c81a419
    Arjan van de Ven authored
    The quota code plays interesting games with the lock ordering; to quote Jan:
    
    | i_mutex of inode containing quota file is acquired after all other
    | quota locks. i_mutex of all other inodes is acquired before quota
    | locks. Quota code makes sure (by resetting inode operations and
    | setting special flag on inode) that noone tries to enter quota code
    | while holding i_mutex on a quota file...
    
    The good news is that all of this special case i_mutex grabbing happens in the
    (per filesystem) low level quota write function.  For this special case we
    need a new I_MUTEX_* nesting level, since this just entirely outside any of
    the regular VFS locking rules for i_mutex.  I trust Jan on his blue eyes that
    this is not ever going to deadlock; and based on that the patch below is what
    it takes to inform lockdep of these very interesting new locking rules.
    
    The new locking rule for the I_MUTEX_QUOTA nesting level is that this is the
    deepest possible level of nesting for i_mutex, and that this only should be
    used in quota write (and possibly read) function of filesystems.  This makes
    the lock ordering of the I_MUTEX_* levels:
    
    I_MUTEX_PARENT -> I_MUTEX_CHILD -> I_MUTEX_NORMAL -> I_MUTEX_QUOTA
    
    Has no effect on non-lockdep kernels.
    Signed-off-by: default avatarArjan van de Ven <arjan@linux.intel.com>
    Acked-by: default avatarIngo Molnar <mingo@elte.hu>
    Cc: Jan Kara <jack@ucw.cz>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    5c81a419
super.c 64.7 KB