New helper: deactivate_locked_super()
authorAl Viro <viro@zeniv.linux.org.uk>
Wed, 6 May 2009 05:07:50 +0000 (01:07 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Sat, 9 May 2009 14:49:39 +0000 (10:49 -0400)
commit74dbbdd7fdc11763f4698d2f3e684cf4446951e6
treef31d70174915b0d209fafeec35e996e8ed7e269d
parent677c9b2e393a0cd203bd54e9c18b012b2c73305a
New helper: deactivate_locked_super()

Does equivalent of up_write(&s->s_umount); deactivate_super(s);
However, it does not does not unlock it until it's all over.
As the result, it's safe to use to dispose of new superblock on ->get_sb()
failure exits - nobody will see the sucker until it's all over.
Equivalent using up_write/deactivate_super is safe for that purpose
if superblock is either safe to use or has NULL ->s_root when we unlock.
Normally filesystems take the required precautions, but
a) we do have bugs in that area in some of them.
b) up_write/deactivate_super sequence is extremely common,
so the helper makes sense anyway.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/super.c
include/linux/fs.h