simplify lookup_open()/atomic_open() - do the temporary mnt_want_write() early
authorAl Viro <viro@zeniv.linux.org.uk>
Mon, 30 Jul 2012 20:53:35 +0000 (00:53 +0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Mon, 30 Jul 2012 20:53:35 +0000 (00:53 +0400)
commit64894cf843278c7b2653a6fac2cd1a697ff930dc
tree10e03b6cbbeb9065f54321836d0c9c0d5080721f
parentf8310c59201b183ebee2e3fe0c7242f5729be0af
simplify lookup_open()/atomic_open() - do the temporary mnt_want_write() early

The write ref to vfsmount taken in lookup_open()/atomic_open() is going to
be dropped; we take the one to stay in dentry_open().  Just grab the temporary
in caller if it looks like we are going to need it (create/truncate/writable open)
and pass (by value) "has it succeeded" flag.  Instead of doing mnt_want_write()
inside, check that flag and treat "false" as "mnt_want_write() has just failed".
mnt_want_write() is cheap and the things get considerably simpler and more robust
that way - we get it and drop it in the same function, to start with, rather
than passing a "has something in the guts of really scary functions taken it"
back to caller.

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