mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Andreas Dilger <adilger@clusterfs.com>
To: Hans Reiser <reiser@namesys.com>
Cc: Mike Fedyk <mfedyk@matchmail.com>, Andrew Morton <akpm@osdl.org>,
	reiserfs-list@namesys.com, linux-kernel@vger.kernel.org
Subject: Re: precise characterization of ext3 atomicity
Date: Thu, 4 Sep 2003 13:28:04 -0600	[thread overview]
Message-ID: <20030904132804.D15623@schatzie.adilger.int> (raw)
In-Reply-To: <3F578656.60005@namesys.com>; from reiser@namesys.com on Thu, Sep 04, 2003 at 10:37:10PM +0400

On Sep 04, 2003  22:37 +0400, Hans Reiser wrote:
> Mike Fedyk wrote:
> >And how does reiser4 do this [export atomic ops to userspace]
> >without changing the userspace apps?
>
> We don't.  We just make the hovercraft, we don't force you to go over 
> the water.....

It is possible to do the same with ext3, namely exporting journal_start()
and journal_stop() (or some interface to them) to userspace so the application
can start a transaction for multiple operations.  We had discussed this in
the past, but decided not to do so because user applications can screw up in
so many ways, and if an application uses these interfaces it is possible to
deadlock the entire filesystem if the application isn't well behaved.

If the app doesn't eventually say "end the transaction", the filesystem might
wait indefinitely.  You could start adding more plumbing like "if the file
is closed (maybe because the process crashed), cancel the transaction",
and "if the process doesn't complete the transaction in time, cancel the
transaction", etc.  How do you guarantee in advance that the application
will be able to complete all of the operations it needs (i.e. if it runs
out of space in the filesystem or something)?

I suppose at worst, the application doesn't get its multi-op atomicity
guarantee, but I'm guessing that apps which use this interface depend on
it working properly or they wouldn't be using it.

Cheers, Andreas
--
Andreas Dilger
http://sourceforge.net/projects/ext2resize/
http://www-mddsp.enel.ucalgary.ca/People/adilger/


  parent reply	other threads:[~2003-09-04 19:29 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-09-04 14:20 Hans Reiser
2003-09-04 15:55 ` Andrew Morton
2003-09-04 15:59   ` Hans Reiser
2003-09-04 16:12     ` Andrew Morton
2003-09-04 16:25       ` Hans Reiser
2003-09-04 18:15         ` Mike Fedyk
2003-09-04 16:05           ` Antonio Vargas
2003-09-04 18:37           ` Hans Reiser
2003-09-04 19:12             ` Mike Fedyk
2003-09-04 21:03               ` Hans Reiser
2003-09-04 19:28             ` Andreas Dilger [this message]
2003-09-04 21:32               ` Hans Reiser
2003-09-04 22:03                 ` Andreas Dilger
2003-09-05 13:47                   ` Chris Mason
2003-09-09 13:09                 ` Pavel Machek
2003-09-09 19:21                   ` Gábor Lénárt
2003-09-09 19:43                     ` Mike Fedyk
2003-09-04 20:16   ` Daniel Phillips
2003-09-04 20:10     ` Andrew Morton
2003-09-04 21:08       ` Daniel Phillips
2003-09-04 21:39         ` Hans Reiser
2003-09-04 21:59           ` Daniel Phillips

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=20030904132804.D15623@schatzie.adilger.int \
    --to=adilger@clusterfs.com \
    --cc=akpm@osdl.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mfedyk@matchmail.com \
    --cc=reiser@namesys.com \
    --cc=reiserfs-list@namesys.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

all inboxes | Powered by JetHome®