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

From: Nick Piggin
Date: Wed Mar 03 2010 - 22:33:25 EST


On Wed, Mar 03, 2010 at 03:31:30PM -0800, john stultz wrote:
> 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?

As far as I could tell, yes that should solve the code reference
problem. I don't see a problem with synchronizing RCU here.

>
> 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/