On Sun, Nov 01, 2020 at 02:41:08PM +0000, Christoph Hellwig wrote: > > index cebaa3e81794..20ee291a7af4 100644 > > --- a/fs/namespace.c > > +++ b/fs/namespace.c > > @@ -463,7 +463,6 @@ static int mnt_make_readonly(struct mount *mnt) > > { > > int ret = 0; > > > > - lock_mount_hash(); > > What about adding a lockdep_assert_lock_held in all the functions > that used to take the lock to document the assumptions? Good idea and will do. I wanted to do this but then didn't because I haven't seen widespread use of lockdep assert in fs/namespace.c. > > > static int __mnt_unmake_readonly(struct mount *mnt) > > { > > - lock_mount_hash(); > > mnt->mnt.mnt_flags &= ~MNT_READONLY; > > - unlock_mount_hash(); > > return 0; > > This helper is rather pointless now. Ok, will remove. > > > static void set_mount_attributes(struct mount *mnt, unsigned int mnt_flags) > > { > > - lock_mount_hash(); > > mnt_flags |= mnt->mnt.mnt_flags & ~MNT_USER_SETTABLE_MASK; > > mnt->mnt.mnt_flags = mnt_flags; > > touch_mnt_namespace(mnt->mnt_ns); > > - unlock_mount_hash(); > > In linux-next there is an additional notify_mount after the unlock here. Thanks! I can try rebasing on -next. > > Also while you touch this lock_mount_hash/unlock_mount_hash could be > moved to namespace.c and maked static now. Ok, will try to do that.