Skip to content
  • David Howells's avatar
    CacheFiles: Mark parent directory locks as I_MUTEX_PARENT to keep lockdep happy · 6511de33
    David Howells authored
    
    
    Mark parent directory locks as I_MUTEX_PARENT in the callers of
    cachefiles_bury_object() so that lockdep doesn't complain when that invokes
    vfs_unlink():
    
    =============================================
    [ INFO: possible recursive locking detected ]
    2.6.32-rc6-cachefs #47
    ---------------------------------------------
    kslowd002/3089 is trying to acquire lock:
     (&sb->s_type->i_mutex_key#7){+.+.+.}, at: [<ffffffff810bbf72>] vfs_unlink+0x8b/0x128
    
    but task is already holding lock:
     (&sb->s_type->i_mutex_key#7){+.+.+.}, at: [<ffffffffa00e4e61>] cachefiles_walk_to_object+0x1b0/0x831 [cachefiles]
    
    other info that might help us debug this:
    1 lock held by kslowd002/3089:
     #0:  (&sb->s_type->i_mutex_key#7){+.+.+.}, at: [<ffffffffa00e4e61>] cachefiles_walk_to_object+0x1b0/0x831 [cachefiles]
    
    stack backtrace:
    Pid: 3089, comm: kslowd002 Not tainted 2.6.32-rc6-cachefs #47
    Call Trace:
     [<ffffffff8105ad7b>] __lock_acquire+0x1649/0x16e3
     [<ffffffff8118170e>] ? inode_has_perm+0x5f/0x61
     [<ffffffff8105ae6c>] lock_acquire+0x57/0x6d
     [<ffffffff810bbf72>] ? vfs_unlink+0x8b/0x128
     [<ffffffff81353ac3>] mutex_lock_nested+0x54/0x292
     [<ffffffff810bbf72>] ? vfs_unlink+0x8b/0x128
     [<ffffffff8118179e>] ? selinux_inode_permission+0x8e/0x90
     [<ffffffff8117e271>] ? security_inode_permission+0x1c/0x1e
     [<ffffffff810bb4fb>] ? inode_permission+0x99/0xa5
     [<ffffffff810bbf72>] vfs_unlink+0x8b/0x128
     [<ffffffff810adb19>] ? kfree+0xed/0xf9
     [<ffffffffa00e3f00>] cachefiles_bury_object+0xb6/0x420 [cachefiles]
     [<ffffffff81058e21>] ? trace_hardirqs_on+0xd/0xf
     [<ffffffffa00e7e24>] ? cachefiles_check_object_xattr+0x233/0x293 [cachefiles]
     [<ffffffffa00e51b0>] cachefiles_walk_to_object+0x4ff/0x831 [cachefiles]
     [<ffffffff81032238>] ? finish_task_switch+0x0/0xb2
     [<ffffffffa00e3429>] cachefiles_lookup_object+0xac/0x12a [cachefiles]
     [<ffffffffa00741e9>] fscache_lookup_object+0x1c7/0x214 [fscache]
     [<ffffffffa0074fc5>] fscache_object_state_machine+0xa5/0x52d [fscache]
     [<ffffffffa00754ac>] fscache_object_slow_work_execute+0x5f/0xa0 [fscache]
     [<ffffffff81082093>] slow_work_execute+0x18f/0x2d1
     [<ffffffff8108239a>] slow_work_thread+0x1c5/0x308
     [<ffffffff8104c0f1>] ? autoremove_wake_function+0x0/0x34
     [<ffffffff810821d5>] ? slow_work_thread+0x0/0x308
     [<ffffffff8104be91>] kthread+0x7a/0x82
     [<ffffffff8100beda>] child_rip+0xa/0x20
     [<ffffffff8100b87c>] ? restore_args+0x0/0x30
     [<ffffffff8104be17>] ? kthread+0x0/0x82
     [<ffffffff8100bed0>] ? child_rip+0x0/0x20
    
    Signed-off-by: default avatarDaivd Howells <dhowells@redhat.com>
    6511de33