linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Ted Ts'o <tytso@mit.edu>
To: Christian Stroetmann <stroetmann@ontolinux.com>
Cc: linux-fsdevel <linux-fsdevel@vger.kernel.org>,
	Neil Brown <neilb@suse.de>,
	Olaf van der Spek <olafvdspek@gmail.com>
Subject: Re: Atomic non-durable file write API
Date: Thu, 23 Dec 2010 19:48:25 -0500	[thread overview]
Message-ID: <20101224004825.GF12763@thunk.org> (raw)
In-Reply-To: <4D13E98D.8070105@ontolinux.com>

On Fri, Dec 24, 2010 at 01:30:05AM +0100, Christian Stroetmann wrote:
> >Basically, file systems are not databases, and databases are not file
> >systems.  There seems to be an unfortunate tendency for application
> >programmers to want to use file systems as databases, and they suffer
> >as a result.
> wrong, no suffer, quite contrary, take an approach like done with sqlite

Fine, if you use sqlite, then you're not playing games with replacing
file contents using rename, and you're using fsync.  No problems.

Unfortunately, there are lots of incompetently written applications
out there.  One of them, I can't remember whether it was using GNOME
or KDE libraries (I blocked it out, it was so horrifying), used the
standard GNOME and/or KDE libraries to implement a windows-style
registry, with one small file for each variable.  Unfortunately, there
was a bug in the GNOME or KDE library where it screwed up the dirty
flag test, and would rewrite and replace *every* *single* *small*
*file* when the application exited.

Sure, if you need to write the new file, fsync it, and then rename it
in place, for every single of the several hundred state files, life is
going to suck.  But that's not the file system's fault, even though
people tried to blame this on the file system.

The problem is an incompetent userspace programmer that tried to use
small files and file system calls when they should have used a
database. 

						- Ted

  reply	other threads:[~2010-12-24  0:49 UTC|newest]

Thread overview: 69+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <AANLkTing7+SK+pavFehR4AGDbRRfFwvvzNxgWQ3zRp+O@mail.gmail.com>
2010-12-09 12:03 ` Atomic non-durable file write API Olaf van der Spek
2010-12-16 12:22   ` Olaf van der Spek
2010-12-16 20:11     ` Ric Wheeler
2010-12-18 22:15       ` Calvin Walton
2010-12-19 16:39         ` Olaf van der Spek
2010-12-23 15:49           ` Olaf van der Spek
2010-12-23 21:51             ` Neil Brown
2010-12-23 22:22               ` Ted Ts'o
2010-12-24  0:30                 ` Christian Stroetmann
2010-12-24  0:48                   ` Ted Ts'o [this message]
2010-12-24  1:00                     ` Christian Stroetmann
2010-12-24  9:51                       ` Ted Ts'o
2010-12-24 11:14                         ` Olaf van der Spek
2010-12-24 11:25                           ` Christian Stroetmann
2010-12-25  3:15                           ` Ted Ts'o
2010-12-25 10:41                             ` Olaf van der Spek
2010-12-25 11:33                               ` Nick Piggin
2010-12-25 15:24                                 ` Olaf van der Spek
2010-12-25 17:25                                   ` Nick Piggin
2010-12-26 15:08                                     ` Olaf van der Spek
2010-12-26 15:55                                       ` Boaz Harrosh
2010-12-26 16:02                                         ` Olaf van der Spek
2010-12-26 16:27                                           ` Boaz Harrosh
2010-12-26 18:26                                             ` Olaf van der Spek
2010-12-26 16:43                                       ` Nick Piggin
2010-12-26 18:51                                         ` Olaf van der Spek
2010-12-26 22:10                                           ` Ted Ts'o
2010-12-27  0:30                                             ` Christian Stroetmann
2010-12-27  1:04                                               ` Ted Ts'o
2010-12-27  1:30                                                 ` Christian Stroetmann
2010-12-27  2:53                                                   ` Ted Ts'o
2010-12-27 10:21                                             ` Olaf van der Spek
2010-12-27 11:07                                               ` Marco Stornelli
2010-12-27 15:30                                               ` Christian Stroetmann
2010-12-27 19:07                                                 ` Olaf van der Spek
2010-12-27 19:30                                                   ` Christian Stroetmann
2010-12-28 17:22                                                     ` Olaf van der Spek
2010-12-28 20:59                                                       ` Neil Brown
2010-12-28 22:00                                                         ` Greg Freemyer
2010-12-28 22:06                                                           ` Olaf van der Spek
2010-12-28 22:15                                                             ` Greg Freemyer
2010-12-28 22:28                                                               ` Olaf van der Spek
2010-12-28 22:35                                                               ` Neil Brown
2010-12-29 11:05                                                           ` Dave Chinner
2010-12-28 22:10                                                         ` Olaf van der Spek
2010-12-28 22:31                                                           ` Neil Brown
2010-12-28 22:54                                                             ` Olaf van der Spek
2010-12-28 23:42                                                               ` Ted Ts'o
2010-12-29  9:09                                                                 ` Olaf van der Spek
2010-12-29 15:30                                                               ` Christian Stroetmann
2010-12-29 15:41                                                                 ` Olaf van der Spek
2010-12-29 16:30                                                                   ` Christian Stroetmann
2010-12-29 17:14                                                                     ` Olaf van der Spek
2010-12-30  0:50                                                                       ` Neil Brown
2011-01-07 14:23                                                                         ` Olaf van der Spek
2010-12-27  4:12                                           ` Nick Piggin
2010-12-27 11:48                                             ` Olaf van der Spek
2010-12-27 12:43                                               ` Olaf van der Spek
2010-12-28  0:45                                               ` Ted Ts'o
2010-12-24 11:21                         ` Christian Stroetmann
2010-12-24 11:17               ` Olaf van der Spek
2010-12-24 11:29                 ` Christian Stroetmann
2010-12-24 11:30                   ` Olaf van der Spek
2010-12-25 21:40                 ` Neil Brown
2010-12-23 22:43             ` Dave Chinner
2010-12-23 22:47               ` Ted Ts'o
2010-12-26  9:59                 ` Amir Goldstein
2010-12-26 15:23                   ` Olaf van der Spek
2010-12-26 16:52                     ` Nick Piggin

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=20101224004825.GF12763@thunk.org \
    --to=tytso@mit.edu \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=neilb@suse.de \
    --cc=olafvdspek@gmail.com \
    --cc=stroetmann@ontolinux.com \
    /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;
as well as URLs for NNTP newsgroup(s).