mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Andrew Morton <akpm@osdl.org>
To: Bartlomiej Zolnierkiewicz <B.Zolnierkiewicz@elka.pw.edu.pl>
Cc: axboe@suse.de, edt@aei.ca, linux-kernel@vger.kernel.org
Subject: Re: ide errors in 7-rc1-mm1 and later
Date: Wed, 9 Jun 2004 17:37:33 -0700	[thread overview]
Message-ID: <20040609173733.1aac8e0d.akpm@osdl.org> (raw)
In-Reply-To: <200406100220.28076.bzolnier@elka.pw.edu.pl>

Bartlomiej Zolnierkiewicz <B.Zolnierkiewicz@elka.pw.edu.pl> wrote:
>
> On Thursday 10 of June 2004 01:50, Andrew Morton wrote:
> > Bartlomiej Zolnierkiewicz <B.Zolnierkiewicz@elka.pw.edu.pl> wrote:
> > > Does journal has checksum or some other protection against failure during
> > > writing journal to a disk?  If not than it still can be screwed even with
> > > ordered writes if we are unfortunate enough.  ;-)
> >
> > A transaction is written to disk as two synchronous operations: write all
> > the data, wait on it, write the single commit block, wait on that.
> 
> That is how it looks from fs side, from disk side it may look like this:
> 
> write some data sectors (rest stays in cache)
> write rest of data sectors (from cache)
> write some commit sectors (rest stays in cache)
> write rest of commit sectors (from cache)
> 
> fs atomic operations != disk atomic operations

JBD is careful about that.  There is a single commit block (1, 2 or 4k) and
the first eight bytes of that block contain a magic number and a sequence
number.  If they're not both valid then replay considers the entire
transaction (data blocks + commit block) to be invalid.

So all we care about is the atomicity of the first eight bytes of a single
512-byte sector.  I see no problem with internal-to-commit-block write
reordering.

The problem is that the commit block may hit disk prior to the preceding
data blocks, which is why we need a full flush prior to submitting the
commit block.

> > If the commit block were to hit disk before the data then we have a window
> > in which poweroff+recovery would replay garbage into the filesystem.
> 
> Yes.
> 
> The quoted part of my mail is about situation when poweroff happens between
> 'write some commit sectors' and 'write rest of commit sectors (from cache)'
> or during transferring commit sectors to a disk.

There is just a single commit sector.

> Sure.  What's your opinion about doing blk_issue_flush() and ordinary commit
> (pros+cons given in my previous mail)?

I think we need:

	submit_data_sectors();
	blkdev_issue_flush();
	wait_on_data_sectors();

	/*
	 * All of the transaction's data sectors are now on disk.  Submit the
	 * commit sector
	 */
	mark_buffer_ordered(commit_bh);
	submit_bh(commit_bh);
	wait_on_buffer(commit_bh);

Or something like that.  Haven't really looked at the blkdev_issue_flush()
design yet.  It has this mysterious comment: "Caller must run
wait_for_completion() on its own.".   Wait for what completion??

  reply	other threads:[~2004-06-10  0:35 UTC|newest]

Thread overview: 66+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-05-27 20:24 [2.6.7-rc1-mm1] cant mount reiserfs using -o barrier=flush Günther Persoons
2004-05-27 23:28 ` Ed Tomlinson
2004-05-28 11:54   ` Gunther Persoons
2004-05-28 12:18     ` Jens Axboe
2004-05-28 21:39       ` Ed Tomlinson
2004-05-29  8:30         ` Jens Axboe
2004-06-04  2:07   ` ide errors in 7-rc1-mm1 and later Ed Tomlinson
2004-06-04  2:31     ` Andrew Morton
2004-06-04  9:42       ` Jens Axboe
2004-06-04 11:22         ` Ed Tomlinson
2004-06-04 11:32           ` Jens Axboe
2004-06-04 11:45             ` Jens Axboe
2004-06-04 11:57             ` Bartlomiej Zolnierkiewicz
2004-06-04 12:01               ` Jens Axboe
2004-06-04 12:38                 ` Bartlomiej Zolnierkiewicz
2004-06-04 12:47                   ` Jens Axboe
2004-06-04 13:34                     ` Bartlomiej Zolnierkiewicz
2004-06-04 15:23                       ` Jens Axboe
2004-06-04 16:14                         ` Bartlomiej Zolnierkiewicz
2004-06-05  9:18                           ` Jens Axboe
2004-06-09 21:52                             ` Bartlomiej Zolnierkiewicz
2004-06-09 22:06                               ` Andrew Morton
2004-06-09 23:38                                 ` Bartlomiej Zolnierkiewicz
2004-06-09 23:50                                   ` Andrew Morton
2004-06-10  0:20                                     ` Bartlomiej Zolnierkiewicz
2004-06-10  0:37                                       ` Andrew Morton [this message]
2004-06-10  1:02                                         ` Bartlomiej Zolnierkiewicz
2004-06-10  0:28                                     ` Chris Mason
2004-06-10  0:38                                       ` Andrew Morton
2004-06-10  0:45                                         ` Bartlomiej Zolnierkiewicz
2004-06-10 15:14                                         ` Chris Mason
2004-06-10 15:15                                           ` Jens Axboe
2004-06-10  1:05                                       ` Bartlomiej Zolnierkiewicz
2004-06-10  6:27                                   ` Jens Axboe
2004-06-10  6:26                               ` Jens Axboe
2004-06-04 17:29                         ` Jeff Garzik
2004-06-05  9:24                           ` Jens Axboe
2004-06-06 16:18                             ` Eric D. Mudama
2004-06-06 20:46                               ` Jens Axboe
2004-06-10  0:38                               ` Bartlomiej Zolnierkiewicz
2004-06-10  6:11                                 ` Jens Axboe
2004-06-10 16:41                                   ` Eric D. Mudama
2004-06-10 17:50                                     ` flush cache range proposal (was Re: ide errors in 7-rc1-mm1 and later) Jeff Garzik
2004-06-10 18:02                                       ` Jeff Garzik
2004-06-10 20:33                                         ` Eric D. Mudama
2004-06-11 16:22                                           ` Jeff Garzik
2004-06-11  7:55                                         ` Jens Axboe
2004-06-11 16:17                                           ` Eric D. Mudama
2004-06-11 16:31                                             ` Jeff Garzik
2004-06-11 16:52                                               ` Eric D. Mudama
2004-06-11 16:58                                                 ` Jens Axboe
2004-06-11 16:54                                               ` Jens Axboe
2004-06-11 16:50                                             ` Jens Axboe
2004-06-11 16:24                                           ` Jeff Garzik
2004-06-11  6:10                                       ` Stuart Young
2004-06-26  8:31                                     ` ide errors in 7-rc1-mm1 and later Andre Hedrick
2004-06-26  8:58                                       ` Andre Hedrick
2004-06-28 18:18                                       ` Eric D. Mudama
2004-07-02  8:29                                         ` Jens Axboe
2004-07-07  5:40                                           ` Jeff Garzik
2004-06-04 11:48         ` Bartlomiej Zolnierkiewicz
2004-06-09 23:44     ` Ed Tomlinson
2004-06-09 23:52       ` Andrew Morton
2004-06-10  0:17         ` Ed Tomlinson
2004-06-10  6:29         ` Jens Axboe
2004-06-14 21:42       ` Ed Tomlinson

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=20040609173733.1aac8e0d.akpm@osdl.org \
    --to=akpm@osdl.org \
    --cc=B.Zolnierkiewicz@elka.pw.edu.pl \
    --cc=axboe@suse.de \
    --cc=edt@aei.ca \
    --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

Powered by JetHome