From: Rui Xiang <rui.xiang@huawei.com>
To: Dave Kleikamp <dave.kleikamp@oracle.com>, <linux-ext4@vger.kernel.org>
Cc: <linux-fsdevel@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
Li Zefan <lizefan@huawei.com>
Subject: testing result of loop-aio patchset on ext3
Date: Mon, 14 Jul 2014 17:34:38 +0800 [thread overview]
Message-ID: <53C3A42E.40000@huawei.com> (raw)
Hi Dave,
We export a container image file as a block device via loop device, but we
found it's very easy that the container rootfs gets corrupted due to power
loss.
Your early version of loop-aio patchset said the patchset can make loop
mounted filesystems recoverable(lkml.org/lkml/2012/3/30/317), but we found
it doesn't help.
Both the guest fs and host fs are ext3.
The loop-aio patchset is from:
git://github.com/kleikamp/linux-shaggy.git aio_loop
Steps:
1. dd a 10G image, mkfs.ext3,
# dd if=/dev/zero of=./raw_image bs=1M count=10000
# echo y | mkfs.ext3 raw_image
2. losetup a loop device, mount at ./test_dir
# losetup /dev/loop1 raw_image
# mount /dev/loop1 ./test_dir
3. copy fs_mark into test_dir and run
# ./fs_mark -d ./tmp/ -s 102400000 -n 80
4. during runing fs_mark, make systerm reboot indirectly.
# echo b > /proc/sysrq-trigger
After systerm booted up, sometimes fsck reported raw_image fs has been damaged.
# fsck.ext3 -n raw_image
e2fsck 1.41.9 (22-Aug-2009)
Warning: skipping journal recovery because doing a read-only filesystem check.
raw_image contains a file system with errors, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Free blocks count wrong (2481348, counted=2480577).
Fix? no
Free inodes count wrong (640837, counted=640835).
Fix? no
raw_image: ********** WARNING: Filesystem still has errors **********
raw_image: 11/640848 files (0.0% non-contiguous), 78652/2560000 blocks
With a specific script, I can almost 100% reproduce this issue.
And it seems the corruption can only happen when reboot happens at the
time loop is calling vfs_fsync().
Do you have any idea why the loop-aio patchset doesn't help?
Thanks.
next reply other threads:[~2014-07-14 9:35 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-14 9:34 Rui Xiang [this message]
2014-07-14 9:51 ` testing result of loop-aio patchset on ext3 Lukáš Czerner
2014-07-16 3:54 ` Rui Xiang
2014-07-16 7:58 ` Lukáš Czerner
2014-07-16 9:28 ` Rui Xiang
2014-07-18 9:10 ` Lukáš Czerner
2014-07-21 2:34 ` Rui Xiang
2014-08-07 2:42 ` Rui Xiang
2014-08-07 3:09 ` Rui Xiang
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=53C3A42E.40000@huawei.com \
--to=rui.xiang@huawei.com \
--cc=dave.kleikamp@oracle.com \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lizefan@huawei.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