trim fsnotify hooks a bit
fsnotify_d_move()/__fsnotify_d_instantiate()/__fsnotify_update_dcache_flags() are identical to each other, regardless of the config. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
77d5a6b7d9
commit
affda48410
|
@ -1769,7 +1769,7 @@ static void __d_instantiate(struct dentry *dentry, struct inode *inode)
|
||||||
raw_write_seqcount_begin(&dentry->d_seq);
|
raw_write_seqcount_begin(&dentry->d_seq);
|
||||||
__d_set_inode_and_type(dentry, inode, add_flags);
|
__d_set_inode_and_type(dentry, inode, add_flags);
|
||||||
raw_write_seqcount_end(&dentry->d_seq);
|
raw_write_seqcount_end(&dentry->d_seq);
|
||||||
__fsnotify_d_instantiate(dentry);
|
fsnotify_update_flags(dentry);
|
||||||
spin_unlock(&dentry->d_lock);
|
spin_unlock(&dentry->d_lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2563,7 +2563,7 @@ static inline void __d_add(struct dentry *dentry, struct inode *inode)
|
||||||
raw_write_seqcount_begin(&dentry->d_seq);
|
raw_write_seqcount_begin(&dentry->d_seq);
|
||||||
__d_set_inode_and_type(dentry, inode, add_flags);
|
__d_set_inode_and_type(dentry, inode, add_flags);
|
||||||
raw_write_seqcount_end(&dentry->d_seq);
|
raw_write_seqcount_end(&dentry->d_seq);
|
||||||
__fsnotify_d_instantiate(dentry);
|
fsnotify_update_flags(dentry);
|
||||||
}
|
}
|
||||||
_d_rehash(dentry);
|
_d_rehash(dentry);
|
||||||
if (dir)
|
if (dir)
|
||||||
|
@ -2853,8 +2853,8 @@ static void __d_move(struct dentry *dentry, struct dentry *target,
|
||||||
list_move(&target->d_child, &target->d_parent->d_subdirs);
|
list_move(&target->d_child, &target->d_parent->d_subdirs);
|
||||||
list_move(&dentry->d_child, &dentry->d_parent->d_subdirs);
|
list_move(&dentry->d_child, &dentry->d_parent->d_subdirs);
|
||||||
if (exchange)
|
if (exchange)
|
||||||
fsnotify_d_move(target);
|
fsnotify_update_flags(target);
|
||||||
fsnotify_d_move(dentry);
|
fsnotify_update_flags(dentry);
|
||||||
}
|
}
|
||||||
|
|
||||||
write_seqcount_end(&target->d_seq);
|
write_seqcount_end(&target->d_seq);
|
||||||
|
|
|
@ -51,18 +51,6 @@ static inline int fsnotify_perm(struct file *file, int mask)
|
||||||
return fsnotify(inode, fsnotify_mask, path, FSNOTIFY_EVENT_PATH, NULL, 0);
|
return fsnotify(inode, fsnotify_mask, path, FSNOTIFY_EVENT_PATH, NULL, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* fsnotify_d_move - dentry has been moved
|
|
||||||
*/
|
|
||||||
static inline void fsnotify_d_move(struct dentry *dentry)
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
* On move we need to update dentry->d_flags to indicate if the new parent
|
|
||||||
* cares about events from this dentry.
|
|
||||||
*/
|
|
||||||
__fsnotify_update_dcache_flags(dentry);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* fsnotify_link_count - inode's link count changed
|
* fsnotify_link_count - inode's link count changed
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -267,10 +267,8 @@ static inline int fsnotify_inode_watches_children(struct inode *inode)
|
||||||
* Update the dentry with a flag indicating the interest of its parent to receive
|
* Update the dentry with a flag indicating the interest of its parent to receive
|
||||||
* filesystem events when those events happens to this dentry->d_inode.
|
* filesystem events when those events happens to this dentry->d_inode.
|
||||||
*/
|
*/
|
||||||
static inline void __fsnotify_update_dcache_flags(struct dentry *dentry)
|
static inline void fsnotify_update_flags(struct dentry *dentry)
|
||||||
{
|
{
|
||||||
struct dentry *parent;
|
|
||||||
|
|
||||||
assert_spin_locked(&dentry->d_lock);
|
assert_spin_locked(&dentry->d_lock);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -280,21 +278,12 @@ static inline void __fsnotify_update_dcache_flags(struct dentry *dentry)
|
||||||
* find our entry, so it will spin until we complete here, and update
|
* find our entry, so it will spin until we complete here, and update
|
||||||
* us with the new state.
|
* us with the new state.
|
||||||
*/
|
*/
|
||||||
parent = dentry->d_parent;
|
if (fsnotify_inode_watches_children(dentry->d_parent->d_inode))
|
||||||
if (fsnotify_inode_watches_children(parent->d_inode))
|
|
||||||
dentry->d_flags |= DCACHE_FSNOTIFY_PARENT_WATCHED;
|
dentry->d_flags |= DCACHE_FSNOTIFY_PARENT_WATCHED;
|
||||||
else
|
else
|
||||||
dentry->d_flags &= ~DCACHE_FSNOTIFY_PARENT_WATCHED;
|
dentry->d_flags &= ~DCACHE_FSNOTIFY_PARENT_WATCHED;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* fsnotify_d_instantiate - instantiate a dentry for inode
|
|
||||||
*/
|
|
||||||
static inline void __fsnotify_d_instantiate(struct dentry *dentry)
|
|
||||||
{
|
|
||||||
__fsnotify_update_dcache_flags(dentry);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* called from fsnotify listeners, such as fanotify or dnotify */
|
/* called from fsnotify listeners, such as fanotify or dnotify */
|
||||||
|
|
||||||
/* create a new group */
|
/* create a new group */
|
||||||
|
@ -386,10 +375,7 @@ static inline void __fsnotify_inode_delete(struct inode *inode)
|
||||||
static inline void __fsnotify_vfsmount_delete(struct vfsmount *mnt)
|
static inline void __fsnotify_vfsmount_delete(struct vfsmount *mnt)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
static inline void __fsnotify_update_dcache_flags(struct dentry *dentry)
|
static inline void fsnotify_update_flags(struct dentry *dentry)
|
||||||
{}
|
|
||||||
|
|
||||||
static inline void __fsnotify_d_instantiate(struct dentry *dentry)
|
|
||||||
{}
|
{}
|
||||||
|
|
||||||
static inline u32 fsnotify_get_cookie(void)
|
static inline u32 fsnotify_get_cookie(void)
|
||||||
|
|
Loading…
Reference in New Issue