ext3/4 with synchronous writes gets wedged by Postfix
authorAl Viro <viro@ZenIV.linux.org.uk>
Wed, 13 May 2009 18:13:40 +0000 (19:13 +0100)
committerAl Viro <viro@zeniv.linux.org.uk>
Sat, 6 Jun 2009 10:17:26 +0000 (06:17 -0400)
commit72a43d63cb51057393edfbcfc4596066205ad15d
tree25b59cdaa08aabadc20100bd2a0c12b5feeaf520
parent460bcf57b128ce1c0dd553d905fedc097f9955c6
ext3/4 with synchronous writes gets wedged by Postfix

OK, that's probably the easiest way to do that, as much as I don't like it...
Since iget() et.al. will not accept I_FREEING (will wait to go away
and restart), and since we'd better have serialization between new/free
on fs data structures anyway, we can afford simply skipping I_FREEING
et.al. in insert_inode_locked().

We do that from new_inode, so it won't race with free_inode in any interesting
ways and it won't race with iget (of any origin; nfsd or in case of fs
corruption a lookup) since both still will wait for I_LOCK.

Reviewed-by: "Theodore Ts'o" <tytso@mit.edu>
Acked-by: Jan Kara <jack@suse.cz>
Tested-by: David Watson <dbwatson@ukfsn.org>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/inode.c