From: "Patrick J. LoPresti" <patl@curl.com>
To: linux-kernel@vger.kernel.org
Subject: Re: [ANNOUNCE] Ext3 vs Reiserfs benchmarks
Date: 15 Jul 2002 21:43:34 -0400 [thread overview]
Message-ID: <s5g8z4cphvd.fsf@egghead.curl.com> (raw)
In-Reply-To: <mit.lcs.mail.linux-kernel/200207160102.g6G12BiH022986@lin2.andrew.cmu.edu>
Lawrence Greenfield <leg+@andrew.cmu.edu> writes:
> Actually, it's not all that simple (you have to find the enclosing
> directories of any files you're modifying, which might require string
> manipulation)
No, you have to find the directories you are modifying. And the
application knows darn well which directories it is modifying.
Don't speculate. Show some sample code, and let's see how hard it
would be to use the "Linux way". I am betting on "not hard at all".
> or necessarily all that fast (you're doubling the number of system
> calls and now the application is imposing an ordering on the
> filesystem that didn't exist before).
No, you are not doubling the number of system calls. As I have tried
to point out repeatedly, doing this stuff reliably and portably
already requires a sequence like this:
write data
flush data
write "validity" indicator (e.g., rename() or fchmod())
flush validity indicator
On Linux, flushing a rename() means calling fsync() on the directory
instead of the file. That's it. Doing that instead of fsync'ing the
file adds at most two system calls (to open and close the directory),
and those can be amortized over many operations on that directory
(think "mail spool"). So the system call overhead is non-existent.
As for "imposing an ordering on the filesystem that didn't exist
before", that is complete nonsense. This is imposing *precisely* the
ordering required for reliable operation; no more, no less. Relying
on mount options, "chattr +S", or journaling artifacts for your
ordering is the inefficient approach; since they impose extra
ordering, they can never be faster and will usually be slower.
> It's only necessary for ext2. Modern Linux filesystems (such as ext3
> or reiserfs) don't require it.
Only because they take the performance hit of flushing the whole log
to disk on every fsync(). Combine that with "data=ordered" and see
what happens to your performance. (Perhaps "data=ordered" should be
called "fsync=sync".) I would rather get back the performance and
convince application authors to understand what they are doing.
> Finally: ext2 isn't safe even if you do call fsync() on the directory!
Wrong.
write temp file
fsync() temp file
rename() temp file to actual file
fsync() directory
No matter where this crashes, it is perfectly safe on ext2. (If not,
ext2 is badly broken.) The worst that can happen after a crash is
that the file might exist with both the old name and the new name.
But an application can detect this case on startup and clean it up.
- Pat
next prev parent reply other threads:[~2002-07-16 1:40 UTC|newest]
Thread overview: 138+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20020712162306$aa7d@traf.lcs.mit.edu>
[not found] ` <mit.lcs.mail.linux-kernel/20020712162306$aa7d@traf.lcs.mit.edu>
2002-07-15 15:22 ` [ANNOUNCE] Ext3 vs Reiserfs benchmarks Patrick J. LoPresti
2002-07-15 17:31 ` Chris Mason
2002-07-15 18:33 ` Matthias Andree
[not found] ` <20020715173337$acad@traf.lcs.mit.edu>
[not found] ` <mit.lcs.mail.linux-kernel/20020715173337$acad@traf.lcs.mit.edu>
2002-07-15 19:13 ` Patrick J. LoPresti
2002-07-15 20:55 ` Matthias Andree
2002-07-15 21:23 ` Patrick J. LoPresti
2002-07-15 21:38 ` Thunder from the hill
2002-07-16 12:31 ` Matthias Andree
2002-07-16 15:53 ` Thunder from the hill
2002-07-16 19:26 ` Matthias Andree
2002-07-16 19:38 ` Thunder from the hill
2002-07-16 23:22 ` close return value (was Re: [ANNOUNCE] Ext3 vs Reiserfs benchmarks) Zack Weinberg
2002-07-17 1:03 ` Alan Cox
2002-07-16 23:52 ` close return value David S. Miller
2002-07-17 1:35 ` Alan Cox
2002-07-17 0:20 ` David S. Miller
2002-07-17 1:05 ` Linus Torvalds
2002-07-17 1:05 ` David S. Miller
2002-07-17 1:23 ` Linus Torvalds
2002-07-17 11:51 ` Matthias Andree
2002-07-17 17:23 ` Andries Brouwer
2002-07-20 8:00 ` Florian Weimer
2002-07-20 16:45 ` Linus Torvalds
2002-07-26 0:06 ` EFAULT vs. SIGSEGV [was Re: close return value] Pavel Machek
2002-07-26 14:01 ` (no subject) Alexis Deruelle
[not found] ` <mailman.1026868201.10433.linux-kernel2news@redhat.com>
2002-07-18 0:01 ` close return value Pete Zaitcev
2002-07-18 0:10 ` Thunder from the hill
[not found] ` <mit.lcs.mail.linux-kernel/200207180001.g6I015f02681@devserv.devel.redhat.com>
2002-07-18 14:42 ` Patrick J. LoPresti
2002-07-18 15:13 ` Richard B. Johnson
2002-07-18 15:32 ` Sandy Harris
2002-07-18 23:47 ` Albert D. Cahalan
2002-07-19 16:12 ` Patrick J. LoPresti
2002-07-19 16:24 ` Joseph Malicki
2002-07-19 18:48 ` Patrick J. LoPresti
2002-07-19 19:25 ` Lars Marowsky-Bree
2002-07-19 19:30 ` Arnaldo Carvalho de Melo
2002-07-19 19:45 ` Joseph Malicki
2002-07-19 19:55 ` Arnaldo Carvalho de Melo
2002-07-20 18:25 ` Bernd Eckenfels
2002-07-20 23:06 ` Sandy Harris
2002-07-20 14:42 ` Andries Brouwer
2002-07-18 20:09 ` Hildo.Biersma
2002-07-18 23:55 ` Pete Zaitcev
2002-07-19 11:31 ` Hildo.Biersma
2002-07-19 16:16 ` Pete Zaitcev
2002-07-23 22:19 ` Bill Davidsen
2002-07-17 0:10 ` close return value (was Re: [ANNOUNCE] Ext3 vs Reiserfs benchmarks) Zack Weinberg
2002-07-17 1:45 ` Alan Cox
2002-07-17 18:24 ` Zack Weinberg
2002-07-22 16:42 ` Rogier Wolff
2002-07-17 8:00 ` Lars Marowsky-Bree
2002-07-17 15:49 ` Thunder from the hill
2002-07-17 2:22 ` Elladan
2002-07-17 2:54 ` Thunder from the hill
2002-07-17 3:00 ` Elladan
2002-07-17 3:10 ` Thunder from the hill
2002-07-17 3:31 ` Elladan
2002-07-17 4:17 ` Stevie O
2002-07-17 4:38 ` Elladan
2002-07-17 14:39 ` Andreas Schwab
2002-07-17 16:49 ` Elladan
2002-07-17 17:43 ` Linus Torvalds
2002-07-17 22:07 ` Elladan
2002-07-18 9:48 ` Ketil Froyn
2002-07-17 17:17 ` Andries Brouwer
2002-07-17 17:51 ` Richard Gooch
2002-07-17 7:34 ` close return value (was Re: [ANNOUNCE] Ext3 vs Reiserfs benchmarks Kai Henningsen
2002-07-15 21:59 ` Ketil Froyn
2002-07-15 23:08 ` Matti Aarnio
2002-07-16 12:33 ` Matthias Andree
2002-07-15 22:55 ` Alan Cox
2002-07-15 21:58 ` Matthias Andree
2002-07-15 21:14 ` Chris Mason
2002-07-15 21:31 ` Patrick J. LoPresti
2002-07-15 22:12 ` Richard A Nelson
2002-07-16 1:02 ` Lawrence Greenfield
[not found] ` <mit.lcs.mail.linux-kernel/200207160102.g6G12BiH022986@lin2.andrew.cmu.edu>
2002-07-16 1:43 ` Patrick J. LoPresti [this message]
2002-07-16 1:56 ` Thunder from the hill
2002-07-16 12:47 ` Matthias Andree
2002-07-16 21:09 ` James Antill
2002-07-16 12:35 ` Matthias Andree
2002-07-16 7:07 ` Dax Kelson
2002-07-12 16:21 Dax Kelson
2002-07-12 17:05 ` Andreas Dilger
2002-07-12 17:26 ` kwijibo
2002-07-12 17:36 ` Andreas Dilger
2002-07-12 20:34 ` Chris Mason
2002-07-13 4:44 ` Daniel Phillips
2002-07-14 20:40 ` Dax Kelson
2002-07-15 8:26 ` Sam Vilain
2002-07-15 12:30 ` Alan Cox
2002-07-15 12:02 ` Sam Vilain
2002-07-15 13:23 ` Alan Cox
2002-07-15 13:40 ` Chris Mason
2002-07-15 19:40 ` Andrew Morton
2002-07-15 15:12 ` Andrea Arcangeli
2002-07-15 16:03 ` Andreas Dilger
2002-07-15 16:12 ` Daniel Phillips
2002-07-15 17:48 ` Sam Vilain
2002-07-15 18:47 ` Mathieu Chouquet-Stringer
2002-07-15 19:26 ` Sam Vilain
2002-07-16 8:18 ` Stelian Pop
2002-07-16 12:22 ` Gerhard Mack
2002-07-16 12:49 ` Stelian Pop
2002-07-16 15:11 ` Gerhard Mack
2002-07-16 15:22 ` Andrea Arcangeli
2002-07-16 15:39 ` Stelian Pop
2002-07-16 19:45 ` Matthias Andree
2002-07-16 20:04 ` Shawn
2002-07-16 20:11 ` Mathieu Chouquet-Stringer
2002-07-16 20:22 ` Shawn
2002-07-16 20:27 ` Mathieu Chouquet-Stringer
2002-07-17 11:45 ` Matthias Andree
2002-07-17 19:02 ` Andreas Dilger
2002-07-18 9:29 ` Matthias Andree
2002-07-19 8:29 ` Matthias Andree
2002-07-19 16:39 ` Andreas Dilger
2002-07-19 20:01 ` Shawn
2002-07-19 20:47 ` Andreas Dilger
2002-07-15 21:14 ` Andreas Dilger
2002-07-17 18:41 ` bill davidsen
2002-07-16 8:15 ` Stelian Pop
2002-07-16 12:27 ` Matthias Andree
2002-07-16 12:43 ` Stelian Pop
2002-07-16 12:53 ` Matthias Andree
2002-07-16 13:05 ` Christoph Hellwig
2002-07-16 19:38 ` Matthias Andree
2002-07-16 19:49 ` Andreas Dilger
2002-07-16 20:11 ` Thunder from the hill
2002-07-16 21:06 ` Matthias Andree
2002-07-16 21:23 ` Andreas Dilger
2002-07-16 21:38 ` Thunder from the hill
2002-07-17 11:47 ` Matthias Andree
2002-07-18 14:50 ` Bill Davidsen
2002-07-18 15:09 ` Rik van Riel
2002-07-17 18:51 ` bill davidsen
2002-07-18 9:32 ` Matthias Andree
2002-07-15 12:09 ` Matti Aarnio
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=s5g8z4cphvd.fsf@egghead.curl.com \
--to=patl@curl.com \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox