aboutsummaryrefslogtreecommitdiffstats
path: root/fs/kernfs/kernfs-internal.h
diff options
context:
space:
mode:
authorTejun Heo <[email protected]>2014-01-10 13:57:19 +0000
committerGreg Kroah-Hartman <[email protected]>2014-01-10 21:44:25 +0000
commitea1c472dfeada211a0100daa7976e8e8e779b858 (patch)
treeba19d47bf769857075edccba0f6006004ec6bb91 /fs/kernfs/kernfs-internal.h
parentkernfs: fix get_active failure handling in kernfs_seq_*() (diff)
downloadkernel-ea1c472dfeada211a0100daa7976e8e8e779b858.tar.gz
kernel-ea1c472dfeada211a0100daa7976e8e8e779b858.zip
kernfs: replace kernfs_node->u.completion with kernfs_root->deactivate_waitq
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: Tejun Heo <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
Diffstat (limited to 'fs/kernfs/kernfs-internal.h')
0 files changed, 0 insertions, 0 deletions