mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Dave Chinner <david@fromorbit.com>
To: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Cc: linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org
Subject: Re: [2.6.30 and later] file corruption on ext3 filesystem.
Date: Fri, 8 Jan 2010 23:36:41 +1100	[thread overview]
Message-ID: <20100108123641.GB8654@discord.disaster> (raw)
In-Reply-To: <201001080254.o082sOXB018423@www262.sakura.ne.jp>

On Fri, Jan 08, 2010 at 11:54:24AM +0900, Tetsuo Handa wrote:
> Hello.
> 
> I'm experiencing file corruption problem.
> Can somebody reproduce below result?
> 
> My environment:
>   VMware Workstation 6.5.3 with 2CPUs / 512MB RAM.
>   ext3 filesystem ( /dev/sda1 ) mounted on / .
> 
>   2.6.33-rc3 ( http://I-love.SAKURA.ne.jp/tmp/config-2.6.33-rc3-ext3 )
>   2.6.32.3   ( http://I-love.SAKURA.ne.jp/tmp/config-2.6.32.3-ext3 )
>   2.6.31.11  ( http://I-love.SAKURA.ne.jp/tmp/config-2.6.31.11-ext3 )
>   2.6.30.10
> 
>   So far, I haven't succeeded to reproduce this problem for 2.6.29 and earlier.
>   Maybe this problem exists in only 2.6.30 and later.

Isn't that when the default mount options  changed from data=ordered to
data=writeback?

> Steps to reproduce:
> 
>   Compile below program using "gcc -Wall -O3 -o a.out".
> 
> ----------
> #include <stdio.h>
> #include <string.h>
> #include <unistd.h>
> 
> int main(int argc, char *argv[])
> {
> 	FILE *fp = fopen("/testfile", "a");
> 	char buffer[4096];
> 	memset(buffer, argc > 1 ? argv[1][0] : 0x20, sizeof(buffer));
> 	buffer[sizeof(buffer) - 1] = '\n';
> 	fwrite(buffer, 1, sizeof(buffer), fp);
> 	fflush(fp);
> 	sleep(5);
> 	fprintf(stderr, "Let power fail after a few seconds.\n");
> 	while (1) {
> 		sleep(1);
> 		fwrite(buffer, 1, sizeof(buffer), fp);
> 	}
> 	return 0;
> }
> ----------
> 
>   Reboot the system by executing /sbin/reboot .
> 
>   Run ./a.out and let the power fail (i.e. unplug the electric cable
>   or do equivalent) after more than 5 seconds (i.e. longer than kjournald's
>   commit interval). Probably 2 or 3 seconds after
>   "Let power fail after a few seconds.\n" was printed is the best.
> 
>   Restart the system (and fsck will be executed).
> 
>   Run "cat /testfile". It should contain only lines of 4095 spaces + '\n'
>   (or the byte specified via argv[]). But it contains different data.

You didn't fsync() it, so there is no reason for the kernel
to have ever written it to disk. Therefore the result after powerfail
is completely undefined - you data may be there, it may not...

Cheers,

Dave.
-- 
Dave Chinner
david@fromorbit.com

  parent reply	other threads:[~2010-01-08 12:36 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-01-08  2:54 Tetsuo Handa
2010-01-08  4:07 ` Jamie Lokier
2010-01-08 12:36 ` Dave Chinner [this message]
2010-01-08 13:15   ` Tetsuo Handa
2010-01-08 15:19     ` Dave Chinner
2010-01-09  2:53       ` Tetsuo Handa
2010-01-11 20:13         ` Ric Wheeler
2010-01-15 20:01           ` Pavel Machek

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=20100108123641.GB8654@discord.disaster \
    --to=david@fromorbit.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=penguin-kernel@I-love.SAKURA.ne.jp \
    /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®