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??
next prev parent 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.