From: Miao Xie <miaox@cn.fujitsu.com> To: Chris Mason <clm@fb.com>, <dsterba@suse.cz>, Fengguang Wu <fengguang.wu@intel.com>, Dave Hansen <dave.hansen@intel.com>, LKML <linux-kernel@vger.kernel.org>, <lkp@01.org>, "linux-btrfs@vger.kernel.org" <linux-btrfs@vger.kernel.org>, Abhay Sachan <lkp.abhay@gmail.com> Subject: Re: [btrfs] 8d875f95: xfstests.generic.226.fail Date: Wed, 20 Aug 2014 18:52:55 +0800 [thread overview] Message-ID: <53F47E07.3080807@cn.fujitsu.com> (raw) In-Reply-To: <53F36601.5020609@fb.com> On Tue, 19 Aug 2014 10:58:09 -0400, Chris Mason wrote: > On 08/19/2014 10:23 AM, David Sterba wrote: >> On Tue, Aug 19, 2014 at 07:58:20PM +0800, Fengguang Wu wrote: >>> We noticed an xfstests failure on commit >>> >>> 8d875f95da43c6a8f18f77869f2ef26e9594fecc ("btrfs: disable strict file flushes for renames and truncates") >>> >>> It's 100% reproducible in the 5 test runs. >> >> Same here, different mkfs configurations. >> >> generic/226 28s ... [16:11:52] [16:12:55] - output mismatch (see /root/xfstests/results//generic/226.out.bad) >> --- tests/generic/226.out 2013-05-29 17:16:03.000000000 +0200 >> +++ /root/xfstests/results//generic/226.out.bad 2014-08-19 16:12:55.000000000 +0200 >> @@ -1,6 +1,8 @@ >> QA output created by 226 >> --> mkfs 256m filesystem >> --> 16 buffered 64m writes in a loop >> -1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 >> +1 2 3 4 pwrite64: No space left on device >> +5 6 7 8 9 10 11 12 pwrite64: No space left on device >> +13 14 15 16 >> >> enospc on a small filesystem (256M) > > I'm calling filemap flush more often, but otherwise everything else is > the same. I'll take a look. The above patch also introduced a performance regression(~70%DOWN). We can reproduce this regression by fio, here is the config: [global] ioengine=falloc iodepth=1 direct=0 buffered=0 directory=<mnt> nrfiles=1 filesize=100m group_reporting [sequential aio-dio write] stonewall ioengine=posixaio numjobs=1 iodepth=128 buffered=0 direct=0 rw=write bs=64k filename=fragmented_file I found the problem is caused by the following function: int btrfs_release_file(struct inode *inode, struct file *filp) { ... filemap_flush(inode->i_mapping); return 0; } I don't think we need flush file at most situation. Ext4 flushes the file only after someone truncate the file to be zero-length, I don't know the real reason why ext4 flush the file only after the file is truncated, someone said it is to reduce the risk that the users find a zero-length file after a crash, which happens after truncate-write-close process. If we change btrfs_release_file by ext4's implementation, both the failure of xfstests's generic/226 and performance regression can be fixed. Thanks Miao > > -chris > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ >
WARNING: multiple messages have this Message-ID (diff)
From: Miao Xie <miaox@cn.fujitsu.com> To: lkp@lists.01.org Subject: Re: [btrfs] 8d875f95: xfstests.generic.226.fail Date: Wed, 20 Aug 2014 18:52:55 +0800 [thread overview] Message-ID: <53F47E07.3080807@cn.fujitsu.com> (raw) In-Reply-To: <53F36601.5020609@fb.com> [-- Attachment #1: Type: text/plain, Size: 2600 bytes --] On Tue, 19 Aug 2014 10:58:09 -0400, Chris Mason wrote: > On 08/19/2014 10:23 AM, David Sterba wrote: >> On Tue, Aug 19, 2014 at 07:58:20PM +0800, Fengguang Wu wrote: >>> We noticed an xfstests failure on commit >>> >>> 8d875f95da43c6a8f18f77869f2ef26e9594fecc ("btrfs: disable strict file flushes for renames and truncates") >>> >>> It's 100% reproducible in the 5 test runs. >> >> Same here, different mkfs configurations. >> >> generic/226 28s ... [16:11:52] [16:12:55] - output mismatch (see /root/xfstests/results//generic/226.out.bad) >> --- tests/generic/226.out 2013-05-29 17:16:03.000000000 +0200 >> +++ /root/xfstests/results//generic/226.out.bad 2014-08-19 16:12:55.000000000 +0200 >> @@ -1,6 +1,8 @@ >> QA output created by 226 >> --> mkfs 256m filesystem >> --> 16 buffered 64m writes in a loop >> -1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 >> +1 2 3 4 pwrite64: No space left on device >> +5 6 7 8 9 10 11 12 pwrite64: No space left on device >> +13 14 15 16 >> >> enospc on a small filesystem (256M) > > I'm calling filemap flush more often, but otherwise everything else is > the same. I'll take a look. The above patch also introduced a performance regression(~70%DOWN). We can reproduce this regression by fio, here is the config: [global] ioengine=falloc iodepth=1 direct=0 buffered=0 directory=<mnt> nrfiles=1 filesize=100m group_reporting [sequential aio-dio write] stonewall ioengine=posixaio numjobs=1 iodepth=128 buffered=0 direct=0 rw=write bs=64k filename=fragmented_file I found the problem is caused by the following function: int btrfs_release_file(struct inode *inode, struct file *filp) { ... filemap_flush(inode->i_mapping); return 0; } I don't think we need flush file at most situation. Ext4 flushes the file only after someone truncate the file to be zero-length, I don't know the real reason why ext4 flush the file only after the file is truncated, someone said it is to reduce the risk that the users find a zero-length file after a crash, which happens after truncate-write-close process. If we change btrfs_release_file by ext4's implementation, both the failure of xfstests's generic/226 and performance regression can be fixed. Thanks Miao > > -chris > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo(a)vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ >
next prev parent reply other threads:[~2014-08-20 10:51 UTC|newest] Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top 2014-08-16 7:52 [btrfs] 4c468fd7485: +7.8% blogbench.write_score, -5.1% turbostat.Pkg_W Fengguang Wu 2014-08-16 7:52 ` Fengguang Wu [not found] ` <CAKHchJwQcH326Z8otiaXtKoKs6fH9s+e9BqJDi=H1bWKiuybAw@mail.gmail.com> 2014-08-16 13:10 ` Fengguang Wu 2014-08-16 13:10 ` Fengguang Wu 2014-08-19 11:58 ` [btrfs] 8d875f95: xfstests.generic.226.fail Fengguang Wu 2014-08-19 11:58 ` Fengguang Wu 2014-08-19 14:23 ` David Sterba 2014-08-19 14:23 ` David Sterba 2014-08-19 14:58 ` Chris Mason 2014-08-19 14:58 ` Chris Mason 2014-08-20 10:52 ` Miao Xie [this message] 2014-08-20 10:52 ` Miao Xie 2014-08-20 14:07 ` Chris Mason 2014-08-20 14:07 ` Chris Mason 2014-08-20 14:48 ` [PATCH] Btrfs: fix filemap_flush call in btrfs_file_release Chris Mason 2014-08-20 14:48 ` Chris Mason
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=53F47E07.3080807@cn.fujitsu.com \ --to=miaox@cn.fujitsu.com \ --cc=clm@fb.com \ --cc=dave.hansen@intel.com \ --cc=dsterba@suse.cz \ --cc=fengguang.wu@intel.com \ --cc=linux-btrfs@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=lkp.abhay@gmail.com \ --cc=lkp@01.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: linkBe 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.