On Wed, Mar 15, 2017 at 12:46 PM, Jan Kara <jack@xxxxxxx> wrote: > Instead of passing spinlock into fsnotify_destroy_marks() determine it > directly in that function from the connector type. This will reduce code > churn when changing lock protecting list of marks. > > Signed-off-by: Jan Kara <jack@xxxxxxx> > --- > fs/notify/fsnotify.h | 10 ++++------ > fs/notify/mark.c | 9 +++++++-- > 2 files changed, 11 insertions(+), 8 deletions(-) > > diff --git a/fs/notify/fsnotify.h b/fs/notify/fsnotify.h > index 96051780d50e..225924274f8a 100644 > --- a/fs/notify/fsnotify.h > +++ b/fs/notify/fsnotify.h > @@ -26,19 +26,17 @@ extern struct inode *fsnotify_destroy_inode_mark(struct fsnotify_mark *mark); > extern struct fsnotify_mark *fsnotify_find_mark( > struct fsnotify_mark_connector *conn, > struct fsnotify_group *group); > -/* Destroy all marks connected via given connector protected by 'lock' */ > -extern void fsnotify_destroy_marks(struct fsnotify_mark_connector *conn, > - spinlock_t *lock); > +/* Destroy all marks connected via given connector */ > +extern void fsnotify_destroy_marks(struct fsnotify_mark_connector *conn); > /* run the list of all marks associated with inode and destroy them */ > static inline void fsnotify_clear_marks_by_inode(struct inode *inode) > { > - fsnotify_destroy_marks(inode->i_fsnotify_marks, &inode->i_lock); > + fsnotify_destroy_marks(inode->i_fsnotify_marks); > } > /* run the list of all marks associated with vfsmount and destroy them */ > static inline void fsnotify_clear_marks_by_mount(struct vfsmount *mnt) > { > - fsnotify_destroy_marks(real_mount(mnt)->mnt_fsnotify_marks, > - &mnt->mnt_root->d_lock); > + fsnotify_destroy_marks(real_mount(mnt)->mnt_fsnotify_marks); > } > /* prepare for freeing all marks associated with given group */ > extern void fsnotify_detach_group_marks(struct fsnotify_group *group); > diff --git a/fs/notify/mark.c b/fs/notify/mark.c > index 1113dd8b2f82..e808378e468a 100644 > --- a/fs/notify/mark.c > +++ b/fs/notify/mark.c > @@ -565,14 +565,19 @@ void fsnotify_detach_group_marks(struct fsnotify_group *group) > } > } > > -void fsnotify_destroy_marks(struct fsnotify_mark_connector *conn, > - spinlock_t *lock) > +void fsnotify_destroy_marks(struct fsnotify_mark_connector *conn) > { > struct fsnotify_mark *mark; > + spinlock_t *lock; > > if (!conn) > return; > > + if (conn->flags & FSNOTIFY_OBJ_TYPE_INODE) > + lock = &conn->inode->i_lock; > + else > + lock = &conn->mnt->mnt_root->d_lock; > + lock = fsnotify_object_lock(conn);