fs: introduce mnt_clone_write
authornpiggin@suse.de <npiggin@suse.de>
Sun, 26 Apr 2009 10:25:55 +0000 (20:25 +1000)
committerAl Viro <viro@zeniv.linux.org.uk>
Fri, 12 Jun 2009 01:36:02 +0000 (21:36 -0400)
commit96029c4e09ccbd73a6d0ed2b29e80bf2586ad7ef
tree032d2ac7024250c18487a2c7122af68fe56567ff
parentd3ef3d7351ccfbef3e5d926efc5ee332136f40d4
fs: introduce mnt_clone_write

This patch speeds up lmbench lat_mmap test by about another 2% after the
first patch.

Before:
 avg = 462.286
 std = 5.46106

After:
 avg = 453.12
 std = 9.58257

(50 runs of each, stddev gives a reasonable confidence)

It does this by introducing mnt_clone_write, which avoids some heavyweight
operations of mnt_want_write if called on a vfsmount which we know already
has a write count; and mnt_want_write_file, which can call mnt_clone_write
if the file is open for write.

After these two patches, mnt_want_write and mnt_drop_write go from 7% on
the profile down to 1.3% (including mnt_clone_write).

[AV: mnt_want_write_file() should take file alone and derive mnt from it;
not only all callers have that form, but that's the only mnt about which
we know that it's already held for write if file is opened for write]

Cc: Dave Hansen <haveblue@us.ibm.com>
Signed-off-by: Nick Piggin <npiggin@suse.de>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/file_table.c
fs/inode.c
fs/namespace.c
fs/open.c
fs/xattr.c
include/linux/mount.h