Date: Thu, 13 Feb 2003 12:22:12 -0800 From: Darren Pilgrim <dmp@pantherdragon.org> To: David Schultz <dschultz@uclink.Berkeley.EDU> Cc: Terry Lambert <tlambert2@mindspring.com>, Brooks Davis <brooks@one-eyed-alien.net>, Matthew Emmerton <matt@gsicomp.on.ca>, Daxbert <daxbert_news@dweebsoft.com>, Bill Moran <wmoran@potentialtech.com>, Heinrich Rebehn <rebehn@ant.uni-bremen.de>, freebsd-questions@FreeBSD.ORG, freebsd-fs@FreeBSD.ORG Subject: Re: Why is there no JFS? Message-ID: <3E4BFE74.2000103@pantherdragon.org> In-Reply-To: <20030213191356.GA14560@HAL9000.homeunix.com> References: <045401c2d2db$f9d45c30$0a0aa8c0@dweebsoft.com> <20030212225631.GA10375@HAL9000.homeunix.com> <005801c2d2eb$aa5fae60$1200a8c0@gsicomp.on.ca> <3E4ADDDE.5040208@pantherdragon.org> <3E4B138F.26E32E75@mindspring.com> <20030212210721.A9481@Odin.AC.HMC.Edu> <20030213051952.GA11572@HAL9000.homeunix.com> <3E4B467B.4DCF6D5@mindspring.com> <20030213074449.GA12084@HAL9000.homeunix.com> <3E4BA1D2.E259308@mindspring.com> <20030213191356.GA14560@HAL9000.homeunix.com>
next in thread | previous in thread | raw e-mail | index | archive | help
David Schultz wrote: > Thus spake Terry Lambert <tlambert2@mindspring.com>: > >>David Schultz wrote: >> >>>>The easy way to fix this is to insert a new dependency for the >>>>completion of the allocation. Basically, this would put in a >>>>stall barrier that would cause the outstanding I/O to drain before >>>>the new I/O was attempted. All other operations behind the one >>>>that caused the stall would b held off, which would avoid the >>>>starvation deadlock you describe. Most likely, all this would >>>>require some minor code to maintain a running tally of virtual vs. >>>>real free block count. >>> >>>It really isn't a big deal. You're saying you can fix the problem >>>where allocations can sometimes fail on a busy 99% full >>>filesystem, but on such a filesystem, you're just as likely to hit >>>it when it's 100% full. Kirk's solution is simple and has the >>>advantage of not requiring additional dependency tracking for the >>>common case. >> >>No, actually it should work for "100% full", as well, as long as >>that "100% full" is "the real disk" vs. "the real disk, after all >>pending updates have been applied". >> >>In other words, if it would have worked with soft updates turned >>off, then it will work with soft updates turned on. > > > My point was that a busy disk that is nearly 100% full will > probably experience intermitted ``disk full'' errors anyway, > so it suffices to simply deal with cases such as > 'rm -rf foo && immediately create lots more files', which > softupdates does handle in -CURRENT. > > >>IMO, this is not the reason for them being off on /; the real >>reason is as I've stated: sysinstall expects the common case to >>be an initial install, not operations after the initial install, >>and so does not turn it on by default. > > > The original reason was due to the possibility of installworld > failing, due to the case described above not being handled > particularly well in FreeBSD 4.X. Sysinstall is perfectly happy > with creating a root FS with softupdates enabled. If someone > wants to bother changing the default for what little difference it > might make in installworld/installkernel times, I would support it. For what its worth, I think all that's needed is to change line 339 in usr.sbin/sysinstall/label.c: --- label.c Mon Dec 30 21:19:15 2002 +++ label.c.new Thu Feb 13 11:50:44 2003 @@ -336,7 +336,7 @@ strcpy(pi->newfs_data.newfs_ufs.user_options, ""); pi->newfs_data.newfs_ufs.acls = FALSE; pi->newfs_data.newfs_ufs.multilabel = FALSE; - pi->newfs_data.newfs_ufs.softupdates = strcmp(mpoint, "/"); + pi->newfs_data.newfs_ufs.softupdates = TRUE; pi->newfs_data.newfs_ufs.ufs2 = FALSE; return pi; The patch is against the 5.0-R tagged version, but it should still apply to the current version. I think softupdates is still (viewed as) riskier than synchronous writes, at least for large numbers of writes (like installworld) to a filesystem of limited size, so someone is going to inevitably ask if FreeBSD should be loading the bullets as well. Personally, if it's a matter of choosing overall safety or a performance gain for something you really shouldn't be doing to a live machine anyway, I'll take the safe route and option the performance gain. P.S., thanks everyone for the discussion, it was enlightening. To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-questions" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3E4BFE74.2000103>