Re: Nick's vfs-scalability patches ported to 2.6.33-rt

From: john stultz
Date: Wed Mar 03 2010 - 18:31:44 EST


On Fri, 2010-02-26 at 17:01 +1100, Nick Piggin wrote:
> On Thu, Feb 25, 2010 at 09:53:28PM -0800, john stultz wrote:
> > Hey Thomas, Nick,
> > I just wanted to let you know I've just finished forward porting Nick's
> > patches to 2.6.33-rc8-rt2. Luckily my forward port of Nick's patches to
> > 2.6.33 applies on top of the -rt tree without any collisions, and I've
> > added a handful of maybe sketchy fixups to get it working with -rt.
> >
> > You can find the patchset here:
> > http://sr71.net/~jstultz/dbench-scalability/patches/2.6.33-rc8-rt2/vfs-scale.33-rt.tar.bz2
> >
> > Here's a chart showing how much these patches help dbench numbers on
> > ramfs:
> > http://sr71.net/~jstultz/dbench-scalability/graphs/2.6.33/ramfs-dbench.png
> >
> > I've not done any serious stress testing with the patchset yet, but
> > wanted to post it for your review.
> >
> > Nick: I'd appreciate any feedback as to if any of my forward porting has
> > gone awry. I'm still very green with respect to the vfs, so I don't
> > doubt there are some issues hiding here.
>
> BTW there are a few issues Al pointed out. We have to synchronize RCU
> after unregistering a filesystem so d_ops/i_ops doesn't go away, and
> mntput can sleep so we can't do it under RCU read lock.

Does the following address this issue properly?

Signed-off-by: John Stultz <johnstul@xxxxxxxxxx>

diff --git a/fs/filesystems.c b/fs/filesystems.c
index a24c58e..3448e7c 100644
--- a/fs/filesystems.c
+++ b/fs/filesystems.c
@@ -110,6 +110,7 @@ int unregister_filesystem(struct file_system_type * fs)
*tmp = fs->next;
fs->next = NULL;
write_unlock(&file_systems_lock);
+ synchronize_rcu();
return 0;
}
tmp = &(*tmp)->next;


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/