Skip to content
  • Tejun Heo's avatar
    kernfs: implement kernfs_{de|re}activate[_self]() · 9f010c2a
    Tejun Heo authored
    
    
    This patch implements four functions to manipulate deactivation state
    - deactivate, reactivate and the _self suffixed pair.  A new fields
    kernfs_node->deact_depth is added so that concurrent and nested
    deactivations are handled properly.  kernfs_node->hash is moved so
    that it's paired with the new field so that it doesn't increase the
    size of kernfs_node.
    
    A kernfs user's lock would normally nest inside active ref but during
    removal the user may want to perform kernfs_remove() while holding the
    said lock, which would introduce a reverse locking dependency.  This
    function can be used to break such reverse dependency by allowing
    deactivation step to performed separately outside user's critical
    section.
    
    This will also be used implement kernfs_remove_self().
    
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    9f010c2a