• Tejun Heo's avatar
    kernfs: replace kernfs_node->u.completion with kernfs_root->deactivate_waitq · abd54f02
    Tejun Heo authored
    kernfs_node->u.completion is used to notify deactivation completion
    from kernfs_put_active() to kernfs_deactivate().  We now allow
    multiple racing removals of the same node and the current removal
    scheme is no longer correct - kernfs_remove() invocation may return
    before the node is properly deactivated if it races against another
    removal.  The removal path will be restructured to address the issue.
    
    To help such restructure which requires supporting multiple waiters,
    this patch replaces kernfs_node->u.completion with
    kernfs_root->deactivate_waitq.  This makes deactivation event
    notifications share a per-root waitqueue_head; however, the wait path
    is quite cold and this will also allow shaving one pointer off
    kernfs_node.
    
    v2: Refreshed on top of ("kernfs: make kernfs_deactivate() honor
        KERNFS_LOCKDEP flag").
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    abd54f02
dir.c 25 KB