Skip to content
  • Tejun Heo's avatar
    kernfs: replace kernfs_node->u.completion with kernfs_root->deactivate_waitq · ea1c472d
    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.
    
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    ea1c472d