Messages in this thread |  | | | Date | Wed, 7 Jan 2009 02:49:15 +0100 | | From | Nick Piggin <> | | Subject | Re: 2.6.29 -mm merge plans |
| |
On Wed, Jan 07, 2009 at 02:38:45AM +0100, Andi Kleen wrote: > Nick Piggin <npiggin@suse.de> writes: > > > > I can't see a problem with putting a global mutex around sys_sync (almost > > by definition, any app in the last 10+ years that calls sys_sync is not > > performance critical). > > Hmm, but sync() used to (is still?) livelocky and when it takes a
It's not livelocky because it no longer has to do repeated passes over the superblock list. It is subject to the single inode syncing issue where it can get stuck behind a process dirtying memory (same as fsync) but we've decided not to add complexity to improve that just yet, and see whether it turns out to be a real problem.
> minute or so to flush (and I've seen that) do you really want any > other sync user to block for a minute too?
sys_sync B which is invoked *after* sys_sync caller A should not return before A. If you didn't have a global lock, they'd tend to block one another's pages anyway. I think it's OK.
|  |