I''m getting a series of kernel WARNING messages when testing
Josef''s
btrfs-next and Chris'' next branch running xfstests 083 when mounted
with compress-force=lzo.
I''m not seeing any other indications of problems other than the
WARNINGs on xfstests 083, so this may be some sort of false positive.
Here are the messages against Chris'' -next branch (the same warnings
are being generated against josef''s branch, except against a 3.7.x
kernel):
[ 553.194991] ------------[ cut here ]------------
[ 553.195002] WARNING: at fs/btrfs/inode.c:7908
btrfs_destroy_inode+0x67/0x25b [btrfs]()
[ 553.195043] Hardware name: OptiPlex 745
[ 553.195046] Modules linked in: ipv6 snd_hda_codec_analog
snd_hda_intel snd_hda_codec snd_hwdep ppdev parport_pc snd_pcm
snd_page_alloc snd_timer snd floppy sr_mod i2c_i801 tg3 ptp iTCO_wdt
pps_core iTCO_vendor_support ehci_pci parport lpc_ich microcode
serio_raw pcspkr ablk_helper cryptd lrw xts gf128mul aes_x86_64
sha256_generic fuse xfs nfs lockd sunrpc reiserfs btrfs zlib_deflate
ext4 jbd2 ext3 jbd ext2 mbcache sl811_hcd hid_generic xhci_hcd
ohci_hcd uhci_hcd ehci_hcd
[ 553.195099] Pid: 4674, comm: rm Not tainted 3.8.0-mason-next+ #1
[ 553.195102] Call Trace:
[ 553.195112] [<ffffffff81030522>] warn_slowpath_common+0x83/0x9b
[ 553.195118] [<ffffffff81030554>] warn_slowpath_null+0x1a/0x1c
[ 553.195135] [<ffffffffa018d69e>] btrfs_destroy_inode+0x67/0x25b
[btrfs]
[ 553.195141] [<ffffffff8111759a>] destroy_inode+0x3b/0x54
[ 553.195145] [<ffffffff811176fc>] evict+0x149/0x151
[ 553.195149] [<ffffffff81117f82>] iput+0x12c/0x135
[ 553.195166] [<ffffffffa0187f42>] ? btrfs_unlink_inode+0x38/0x40
[btrfs]
[ 553.195171] [<ffffffff8110de10>] do_unlinkat+0x145/0x1df
[ 553.195177] [<ffffffff81106e9f>] ? sys_newfstatat+0x2a/0x33
[ 553.195191] [<ffffffff8110fce5>] sys_unlinkat+0x29/0x2b
[ 553.195212] [<ffffffff81607746>] system_call_fastpath+0x1a/0x1f
[ 553.195224] ---[ end trace 0adc4db1ad1a6634 ]---
[ 553.195231] ------------[ cut here ]------------
[ 553.195247] WARNING: at fs/btrfs/inode.c:7909
btrfs_destroy_inode+0x7e/0x25b [btrfs]()
[ 553.195249] Hardware name: OptiPlex 745
[ 553.195251] Modules linked in: ipv6 snd_hda_codec_analog
snd_hda_intel snd_hda_codec snd_hwdep ppdev parport_pc snd_pcm
snd_page_alloc snd_timer snd floppy sr_mod i2c_i801 tg3 ptp iTCO_wdt
pps_core iTCO_vendor_support ehci_pci parport lpc_ich microcode
serio_raw pcspkr ablk_helper cryptd lrw xts gf128mul aes_x86_64
sha256_generic fuse xfs nfs lockd sunrpc reiserfs btrfs zlib_deflate
ext4 jbd2 ext3 jbd ext2 mbcache sl811_hcd hid_generic xhci_hcd
ohci_hcd uhci_hcd ehci_hcd
[ 553.195296] Pid: 4674, comm: rm Tainted: G W 3.8.0-mason-next+ #1
[ 553.195298] Call Trace:
[ 553.195304] [<ffffffff81030522>] warn_slowpath_common+0x83/0x9b
[ 553.195308] [<ffffffff81030554>] warn_slowpath_null+0x1a/0x1c
[ 553.195324] [<ffffffffa018d6b5>] btrfs_destroy_inode+0x7e/0x25b
[btrfs]
[ 553.195329] [<ffffffff8111759a>] destroy_inode+0x3b/0x54
[ 553.195333] [<ffffffff811176fc>] evict+0x149/0x151
[ 553.195336] [<ffffffff81117f82>] iput+0x12c/0x135
[ 553.195352] [<ffffffffa0187f42>] ? btrfs_unlink_inode+0x38/0x40
[btrfs]
[ 553.195356] [<ffffffff8110de10>] do_unlinkat+0x145/0x1df
[ 553.195360] [<ffffffff81106e9f>] ? sys_newfstatat+0x2a/0x33
[ 553.195364] [<ffffffff8110fce5>] sys_unlinkat+0x29/0x2b
[ 553.195368] [<ffffffff81607746>] system_call_fastpath+0x1a/0x1f
[ 553.195371] ---[ end trace 0adc4db1ad1a6635 ]---
[ 553.195373] ------------[ cut here ]------------
[ 553.195389] WARNING: at fs/btrfs/inode.c:7911
btrfs_destroy_inode+0xae/0x25b [btrfs]()
[ 553.195391] Hardware name: OptiPlex 745
[ 553.195393] Modules linked in: ipv6 snd_hda_codec_analog
snd_hda_intel snd_hda_codec snd_hwdep ppdev parport_pc snd_pcm
snd_page_alloc snd_timer snd floppy sr_mod i2c_i801 tg3 ptp iTCO_wdt
pps_core iTCO_vendor_support ehci_pci parport lpc_ich microcode
serio_raw pcspkr ablk_helper cryptd lrw xts gf128mul aes_x86_64
sha256_generic fuse xfs nfs lockd sunrpc reiserfs btrfs zlib_deflate
ext4 jbd2 ext3 jbd ext2 mbcache sl811_hcd hid_generic xhci_hcd
ohci_hcd uhci_hcd ehci_hcd
[ 553.195437] Pid: 4674, comm: rm Tainted: G W 3.8.0-mason-next+ #1
[ 553.195439] Call Trace:
[ 553.195444] [<ffffffff81030522>] warn_slowpath_common+0x83/0x9b
[ 553.195449] [<ffffffff81030554>] warn_slowpath_null+0x1a/0x1c
[ 553.195463] [<ffffffffa018d6e5>] btrfs_destroy_inode+0xae/0x25b
[btrfs]
[ 553.195470] [<ffffffff8111759a>] destroy_inode+0x3b/0x54
[ 553.195474] [<ffffffff811176fc>] evict+0x149/0x151
[ 553.195480] [<ffffffff81117f82>] iput+0x12c/0x135
[ 553.195495] [<ffffffffa0187f42>] ? btrfs_unlink_inode+0x38/0x40
[btrfs]
[ 553.195499] [<ffffffff8110de10>] do_unlinkat+0x145/0x1df
[ 553.195504] [<ffffffff81106e9f>] ? sys_newfstatat+0x2a/0x33
[ 553.195508] [<ffffffff8110fce5>] sys_unlinkat+0x29/0x2b
[ 553.195512] [<ffffffff81607746>] system_call_fastpath+0x1a/0x1f
[ 553.195515] ---[ end trace 0adc4db1ad1a6636 ]---
[ 553.404031] ------------[ cut here ]------------
[ 553.404068] WARNING: at fs/btrfs/extent-tree.c:4510
btrfs_free_block_groups+0x13d/0x27e [btrfs]()
[ 553.404072] Hardware name: OptiPlex 745
[ 553.404076] Modules linked in: ipv6 snd_hda_codec_analog
snd_hda_intel snd_hda_codec snd_hwdep ppdev parport_pc snd_pcm
snd_page_alloc snd_timer snd floppy sr_mod i2c_i801 tg3 ptp iTCO_wdt
pps_core iTCO_vendor_support ehci_pci parport lpc_ich microcode
serio_raw pcspkr ablk_helper cryptd lrw xts gf128mul aes_x86_64
sha256_generic fuse xfs nfs lockd sunrpc reiserfs btrfs zlib_deflate
ext4 jbd2 ext3 jbd ext2 mbcache sl811_hcd hid_generic xhci_hcd
ohci_hcd uhci_hcd ehci_hcd
[ 553.404146] Pid: 4704, comm: umount Tainted: G W
3.8.0-mason-next+ #1
[ 553.404149] Call Trace:
[ 553.404162] [<ffffffff81030522>] warn_slowpath_common+0x83/0x9b
[ 553.404169] [<ffffffff81030554>] warn_slowpath_null+0x1a/0x1c
[ 553.404188] [<ffffffffa017159d>] btrfs_free_block_groups+0x13d/0x27e
[btrfs]
[ 553.404211] [<ffffffffa017c71a>] close_ctree+0x200/0x32f [btrfs]
[ 553.404218] [<ffffffff81118323>] ? evict_inodes+0xd7/0xe3
[ 553.404235] [<ffffffffa015a357>] btrfs_put_super+0x19/0x1b [btrfs]
[ 553.404242] [<ffffffff811047e7>] generic_shutdown_super+0x59/0xd1
[ 553.404248] [<ffffffff8111ad7a>] ? free_vfsmnt+0x17/0x3e
[ 553.404255] [<ffffffff811048dd>] kill_anon_super+0x14/0x1f
[ 553.404270] [<ffffffffa015a132>] btrfs_kill_super+0x17/0x89 [btrfs]
[ 553.404276] [<ffffffff81104a44>] deactivate_locked_super+0x37/0x63
[ 553.404282] [<ffffffff8110576a>] deactivate_super+0x3f/0x43
[ 553.404289] [<ffffffff8111b30c>] mntput_no_expire+0x113/0x11b
[ 553.404295] [<ffffffff8111c18b>] sys_umount+0x30a/0x33c
[ 553.404301] [<ffffffff810415d1>] ? __set_current_blocked+0x36/0x4a
[ 553.404310] [<ffffffff81607746>] system_call_fastpath+0x1a/0x1f
[ 553.404314] ---[ end trace 0adc4db1ad1a6637 ]---
[ 553.404317] ------------[ cut here ]------------
[ 553.404336] WARNING: at fs/btrfs/extent-tree.c:4511
btrfs_free_block_groups+0x158/0x27e [btrfs]()
[ 553.404339] Hardware name: OptiPlex 745
[ 553.404342] Modules linked in: ipv6 snd_hda_codec_analog
snd_hda_intel snd_hda_codec snd_hwdep ppdev parport_pc snd_pcm
snd_page_alloc snd_timer snd floppy sr_mod i2c_i801 tg3 ptp iTCO_wdt
pps_core iTCO_vendor_support ehci_pci parport lpc_ich microcode
serio_raw pcspkr ablk_helper cryptd lrw xts gf128mul aes_x86_64
sha256_generic fuse xfs nfs lockd sunrpc reiserfs btrfs zlib_deflate
ext4 jbd2 ext3 jbd ext2 mbcache sl811_hcd hid_generic xhci_hcd
ohci_hcd uhci_hcd ehci_hcd
[ 553.404406] Pid: 4704, comm: umount Tainted: G W
3.8.0-mason-next+ #1
[ 553.404409] Call Trace:
[ 553.404416] [<ffffffff81030522>] warn_slowpath_common+0x83/0x9b
[ 553.404422] [<ffffffff81030554>] warn_slowpath_null+0x1a/0x1c
[ 553.404441] [<ffffffffa01715b8>] btrfs_free_block_groups+0x158/0x27e
[btrfs]
[ 553.404463] [<ffffffffa017c71a>] close_ctree+0x200/0x32f [btrfs]
[ 553.404469] [<ffffffff81118323>] ? evict_inodes+0xd7/0xe3
[ 553.404485] [<ffffffffa015a357>] btrfs_put_super+0x19/0x1b [btrfs]
[ 553.404491] [<ffffffff811047e7>] generic_shutdown_super+0x59/0xd1
[ 553.404497] [<ffffffff8111ad7a>] ? free_vfsmnt+0x17/0x3e
[ 553.404504] [<ffffffff811048dd>] kill_anon_super+0x14/0x1f
[ 553.404519] [<ffffffffa015a132>] btrfs_kill_super+0x17/0x89 [btrfs]
[ 553.404525] [<ffffffff81104a44>] deactivate_locked_super+0x37/0x63
[ 553.404531] [<ffffffff8110576a>] deactivate_super+0x3f/0x43
[ 553.404537] [<ffffffff8111b30c>] mntput_no_expire+0x113/0x11b
[ 553.404543] [<ffffffff8111c18b>] sys_umount+0x30a/0x33c
[ 553.404548] [<ffffffff810415d1>] ? __set_current_blocked+0x36/0x4a
[ 553.404555] [<ffffffff81607746>] system_call_fastpath+0x1a/0x1f
[ 553.404559] ---[ end trace 0adc4db1ad1a6638 ]---
Xfstest 083 is showing a successful completion, and I''m not seeing any
errors using btrfsck on the partitions after the test.
For reference, here are the relevant sections of inode.c and extent-tree.c:
inode.c:
7901 void btrfs_destroy_inode(struct inode *inode)
7902 {
7903 struct btrfs_ordered_extent *ordered;
7904 struct btrfs_root *root = BTRFS_I(inode)->root;
7905
7906 WARN_ON(!hlist_empty(&inode->i_dentry));
7907 WARN_ON(inode->i_data.nrpages);
7908 WARN_ON(BTRFS_I(inode)->outstanding_extents);
7909 WARN_ON(BTRFS_I(inode)->reserved_extents);
7910 WARN_ON(BTRFS_I(inode)->delalloc_bytes);
7911 WARN_ON(BTRFS_I(inode)->csum_bytes);
extent-tree.c:
4506 static void release_global_block_rsv(struct btrfs_fs_info *fs_info)
4507 {
4508 block_rsv_release_bytes(fs_info, &fs_info->global_block_rsv,
NULL,
4509 (u64)-1);
4510 WARN_ON(fs_info->delalloc_block_rsv.size > 0);
4511 WARN_ON(fs_info->delalloc_block_rsv.reserved > 0);
4512 WARN_ON(fs_info->trans_block_rsv.size > 0);
4513 WARN_ON(fs_info->trans_block_rsv.reserved > 0);
4514 WARN_ON(fs_info->chunk_block_rsv.size > 0);
4515 WARN_ON(fs_info->chunk_block_rsv.reserved > 0);
4516 WARN_ON(fs_info->delayed_block_rsv.size > 0);
4517 WARN_ON(fs_info->delayed_block_rsv.reserved > 0);
4518 }
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs"
in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Miao Xie
2013-Feb-21 09:48 UTC
[PATCH] Btrfs: fix wrong outstanding_extents when doing DIO write
When running the 083th case of xfstests on the filesystem with
"compress-force=lzo", the following WARNINGs were triggered.
WARNING: at fs/btrfs/inode.c:7908
WARNING: at fs/btrfs/inode.c:7909
WARNING: at fs/btrfs/inode.c:7911
WARNING: at fs/btrfs/extent-tree.c:4510
WARNING: at fs/btrfs/extent-tree.c:4511
This problem was introduced by the patch "Btrfs: fix deadlock due
to unsubmitted". In this patch, there are two bugs which caused
the above problem.
The 1st one is a off-by-one bug, if the DIO write return 0, it is
also a short write, we need release the reserved space for it. But
we didn''t do it in that patch. Fix it by change "ret > 0"
to
"ret >= 0".
The 2nd one is ->outstanding_extents was increased twice when
a short write happened. As we know, ->outstanding_extents is
a counter to keep track of the number of extent items we may
use duo to delalloc, when we reserve the free space for a
delalloc write, we assume that the write will introduce just
one extent item, so we increase ->outstanding_extents by 1 at
that time. And then we will increase it every time we split the
write, it is done at the beginning of btrfs_get_blocks_direct().
So when a short write happens, we needn''t increase
->outstanding_extents again. But this patch done.
In order to fix the 2nd problem, I re-write the logic for
->outstanding_extents operation. We don''t increase it at the
beginning of btrfs_get_blocks_direct(), instead, we just
increase it when the split actually happens.
Reported-by: Mitch Harder <mitch.harder@sabayonlinux.org>
Signed-off-by: Miao Xie <miaox@cn.fujitsu.com>
---
fs/btrfs/inode.c | 20 +++++++++-----------
1 file changed, 9 insertions(+), 11 deletions(-)
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index b009fb5..9a1cc04 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -6067,12 +6067,9 @@ static int btrfs_get_blocks_direct(struct inode *inode,
sector_t iblock,
int unlock_bits = EXTENT_LOCKED;
int ret = 0;
- if (create) {
- spin_lock(&BTRFS_I(inode)->lock);
- BTRFS_I(inode)->outstanding_extents++;
- spin_unlock(&BTRFS_I(inode)->lock);
+ if (create)
unlock_bits |= EXTENT_DELALLOC | EXTENT_DIRTY;
- } else
+ else
len = min_t(u64, len, root->sectorsize);
lockstart = start;
@@ -6214,6 +6211,10 @@ unlock:
if (start + len > i_size_read(inode))
i_size_write(inode, start + len);
+ spin_lock(&BTRFS_I(inode)->lock);
+ BTRFS_I(inode)->outstanding_extents++;
+ spin_unlock(&BTRFS_I(inode)->lock);
+
ret = set_extent_bit(&BTRFS_I(inode)->io_tree, lockstart,
lockstart + len - 1, EXTENT_DELALLOC, NULL,
&cached_state, GFP_NOFS);
@@ -6716,14 +6717,11 @@ static ssize_t btrfs_direct_IO(int rw, struct kiocb
*iocb,
if (rw & WRITE) {
if (ret < 0 && ret != -EIOCBQUEUED)
btrfs_delalloc_release_space(inode, count);
- else if (ret > 0 && (size_t)ret < count) {
- spin_lock(&BTRFS_I(inode)->lock);
- BTRFS_I(inode)->outstanding_extents++;
- spin_unlock(&BTRFS_I(inode)->lock);
+ else if (ret >= 0 && (size_t)ret < count)
btrfs_delalloc_release_space(inode,
count - (size_t)ret);
- }
- btrfs_delalloc_release_metadata(inode, 0);
+ else
+ btrfs_delalloc_release_metadata(inode, 0);
}
out:
if (wakeup)
--
1.7.11.7
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs"
in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
hi, On wed, 20 Feb 2013 23:35:36 -0600, Mitch Harder wrote:> I''m getting a series of kernel WARNING messages when testing Josef''s > btrfs-next and Chris'' next branch running xfstests 083 when mounted > with compress-force=lzo. > > I''m not seeing any other indications of problems other than the > WARNINGs on xfstests 083, so this may be some sort of false positive. > > Here are the messages against Chris'' -next branch (the same warnings > are being generated against josef''s branch, except against a 3.7.x > kernel):I sent a patch to fix this problem as a reply of this mail, could you test it for me? Thanks Miao> > [ 553.194991] ------------[ cut here ]------------ > [ 553.195002] WARNING: at fs/btrfs/inode.c:7908 > btrfs_destroy_inode+0x67/0x25b [btrfs]() > [ 553.195043] Hardware name: OptiPlex 745 > [ 553.195046] Modules linked in: ipv6 snd_hda_codec_analog > snd_hda_intel snd_hda_codec snd_hwdep ppdev parport_pc snd_pcm > snd_page_alloc snd_timer snd floppy sr_mod i2c_i801 tg3 ptp iTCO_wdt > pps_core iTCO_vendor_support ehci_pci parport lpc_ich microcode > serio_raw pcspkr ablk_helper cryptd lrw xts gf128mul aes_x86_64 > sha256_generic fuse xfs nfs lockd sunrpc reiserfs btrfs zlib_deflate > ext4 jbd2 ext3 jbd ext2 mbcache sl811_hcd hid_generic xhci_hcd > ohci_hcd uhci_hcd ehci_hcd > [ 553.195099] Pid: 4674, comm: rm Not tainted 3.8.0-mason-next+ #1 > [ 553.195102] Call Trace: > [ 553.195112] [<ffffffff81030522>] warn_slowpath_common+0x83/0x9b > [ 553.195118] [<ffffffff81030554>] warn_slowpath_null+0x1a/0x1c > [ 553.195135] [<ffffffffa018d69e>] btrfs_destroy_inode+0x67/0x25b [btrfs] > [ 553.195141] [<ffffffff8111759a>] destroy_inode+0x3b/0x54 > [ 553.195145] [<ffffffff811176fc>] evict+0x149/0x151 > [ 553.195149] [<ffffffff81117f82>] iput+0x12c/0x135 > [ 553.195166] [<ffffffffa0187f42>] ? btrfs_unlink_inode+0x38/0x40 [btrfs] > [ 553.195171] [<ffffffff8110de10>] do_unlinkat+0x145/0x1df > [ 553.195177] [<ffffffff81106e9f>] ? sys_newfstatat+0x2a/0x33 > [ 553.195191] [<ffffffff8110fce5>] sys_unlinkat+0x29/0x2b > [ 553.195212] [<ffffffff81607746>] system_call_fastpath+0x1a/0x1f > [ 553.195224] ---[ end trace 0adc4db1ad1a6634 ]--- > [ 553.195231] ------------[ cut here ]------------ > [ 553.195247] WARNING: at fs/btrfs/inode.c:7909 > btrfs_destroy_inode+0x7e/0x25b [btrfs]() > [ 553.195249] Hardware name: OptiPlex 745 > [ 553.195251] Modules linked in: ipv6 snd_hda_codec_analog > snd_hda_intel snd_hda_codec snd_hwdep ppdev parport_pc snd_pcm > snd_page_alloc snd_timer snd floppy sr_mod i2c_i801 tg3 ptp iTCO_wdt > pps_core iTCO_vendor_support ehci_pci parport lpc_ich microcode > serio_raw pcspkr ablk_helper cryptd lrw xts gf128mul aes_x86_64 > sha256_generic fuse xfs nfs lockd sunrpc reiserfs btrfs zlib_deflate > ext4 jbd2 ext3 jbd ext2 mbcache sl811_hcd hid_generic xhci_hcd > ohci_hcd uhci_hcd ehci_hcd > [ 553.195296] Pid: 4674, comm: rm Tainted: G W 3.8.0-mason-next+ #1 > [ 553.195298] Call Trace: > [ 553.195304] [<ffffffff81030522>] warn_slowpath_common+0x83/0x9b > [ 553.195308] [<ffffffff81030554>] warn_slowpath_null+0x1a/0x1c > [ 553.195324] [<ffffffffa018d6b5>] btrfs_destroy_inode+0x7e/0x25b [btrfs] > [ 553.195329] [<ffffffff8111759a>] destroy_inode+0x3b/0x54 > [ 553.195333] [<ffffffff811176fc>] evict+0x149/0x151 > [ 553.195336] [<ffffffff81117f82>] iput+0x12c/0x135 > [ 553.195352] [<ffffffffa0187f42>] ? btrfs_unlink_inode+0x38/0x40 [btrfs] > [ 553.195356] [<ffffffff8110de10>] do_unlinkat+0x145/0x1df > [ 553.195360] [<ffffffff81106e9f>] ? sys_newfstatat+0x2a/0x33 > [ 553.195364] [<ffffffff8110fce5>] sys_unlinkat+0x29/0x2b > [ 553.195368] [<ffffffff81607746>] system_call_fastpath+0x1a/0x1f > [ 553.195371] ---[ end trace 0adc4db1ad1a6635 ]--- > [ 553.195373] ------------[ cut here ]------------ > [ 553.195389] WARNING: at fs/btrfs/inode.c:7911 > btrfs_destroy_inode+0xae/0x25b [btrfs]() > [ 553.195391] Hardware name: OptiPlex 745 > [ 553.195393] Modules linked in: ipv6 snd_hda_codec_analog > snd_hda_intel snd_hda_codec snd_hwdep ppdev parport_pc snd_pcm > snd_page_alloc snd_timer snd floppy sr_mod i2c_i801 tg3 ptp iTCO_wdt > pps_core iTCO_vendor_support ehci_pci parport lpc_ich microcode > serio_raw pcspkr ablk_helper cryptd lrw xts gf128mul aes_x86_64 > sha256_generic fuse xfs nfs lockd sunrpc reiserfs btrfs zlib_deflate > ext4 jbd2 ext3 jbd ext2 mbcache sl811_hcd hid_generic xhci_hcd > ohci_hcd uhci_hcd ehci_hcd > [ 553.195437] Pid: 4674, comm: rm Tainted: G W 3.8.0-mason-next+ #1 > [ 553.195439] Call Trace: > [ 553.195444] [<ffffffff81030522>] warn_slowpath_common+0x83/0x9b > [ 553.195449] [<ffffffff81030554>] warn_slowpath_null+0x1a/0x1c > [ 553.195463] [<ffffffffa018d6e5>] btrfs_destroy_inode+0xae/0x25b [btrfs] > [ 553.195470] [<ffffffff8111759a>] destroy_inode+0x3b/0x54 > [ 553.195474] [<ffffffff811176fc>] evict+0x149/0x151 > [ 553.195480] [<ffffffff81117f82>] iput+0x12c/0x135 > [ 553.195495] [<ffffffffa0187f42>] ? btrfs_unlink_inode+0x38/0x40 [btrfs] > [ 553.195499] [<ffffffff8110de10>] do_unlinkat+0x145/0x1df > [ 553.195504] [<ffffffff81106e9f>] ? sys_newfstatat+0x2a/0x33 > [ 553.195508] [<ffffffff8110fce5>] sys_unlinkat+0x29/0x2b > [ 553.195512] [<ffffffff81607746>] system_call_fastpath+0x1a/0x1f > [ 553.195515] ---[ end trace 0adc4db1ad1a6636 ]--- > [ 553.404031] ------------[ cut here ]------------ > [ 553.404068] WARNING: at fs/btrfs/extent-tree.c:4510 > btrfs_free_block_groups+0x13d/0x27e [btrfs]() > [ 553.404072] Hardware name: OptiPlex 745 > [ 553.404076] Modules linked in: ipv6 snd_hda_codec_analog > snd_hda_intel snd_hda_codec snd_hwdep ppdev parport_pc snd_pcm > snd_page_alloc snd_timer snd floppy sr_mod i2c_i801 tg3 ptp iTCO_wdt > pps_core iTCO_vendor_support ehci_pci parport lpc_ich microcode > serio_raw pcspkr ablk_helper cryptd lrw xts gf128mul aes_x86_64 > sha256_generic fuse xfs nfs lockd sunrpc reiserfs btrfs zlib_deflate > ext4 jbd2 ext3 jbd ext2 mbcache sl811_hcd hid_generic xhci_hcd > ohci_hcd uhci_hcd ehci_hcd > [ 553.404146] Pid: 4704, comm: umount Tainted: G W > 3.8.0-mason-next+ #1 > [ 553.404149] Call Trace: > [ 553.404162] [<ffffffff81030522>] warn_slowpath_common+0x83/0x9b > [ 553.404169] [<ffffffff81030554>] warn_slowpath_null+0x1a/0x1c > [ 553.404188] [<ffffffffa017159d>] btrfs_free_block_groups+0x13d/0x27e [btrfs] > [ 553.404211] [<ffffffffa017c71a>] close_ctree+0x200/0x32f [btrfs] > [ 553.404218] [<ffffffff81118323>] ? evict_inodes+0xd7/0xe3 > [ 553.404235] [<ffffffffa015a357>] btrfs_put_super+0x19/0x1b [btrfs] > [ 553.404242] [<ffffffff811047e7>] generic_shutdown_super+0x59/0xd1 > [ 553.404248] [<ffffffff8111ad7a>] ? free_vfsmnt+0x17/0x3e > [ 553.404255] [<ffffffff811048dd>] kill_anon_super+0x14/0x1f > [ 553.404270] [<ffffffffa015a132>] btrfs_kill_super+0x17/0x89 [btrfs] > [ 553.404276] [<ffffffff81104a44>] deactivate_locked_super+0x37/0x63 > [ 553.404282] [<ffffffff8110576a>] deactivate_super+0x3f/0x43 > [ 553.404289] [<ffffffff8111b30c>] mntput_no_expire+0x113/0x11b > [ 553.404295] [<ffffffff8111c18b>] sys_umount+0x30a/0x33c > [ 553.404301] [<ffffffff810415d1>] ? __set_current_blocked+0x36/0x4a > [ 553.404310] [<ffffffff81607746>] system_call_fastpath+0x1a/0x1f > [ 553.404314] ---[ end trace 0adc4db1ad1a6637 ]--- > [ 553.404317] ------------[ cut here ]------------ > [ 553.404336] WARNING: at fs/btrfs/extent-tree.c:4511 > btrfs_free_block_groups+0x158/0x27e [btrfs]() > [ 553.404339] Hardware name: OptiPlex 745 > [ 553.404342] Modules linked in: ipv6 snd_hda_codec_analog > snd_hda_intel snd_hda_codec snd_hwdep ppdev parport_pc snd_pcm > snd_page_alloc snd_timer snd floppy sr_mod i2c_i801 tg3 ptp iTCO_wdt > pps_core iTCO_vendor_support ehci_pci parport lpc_ich microcode > serio_raw pcspkr ablk_helper cryptd lrw xts gf128mul aes_x86_64 > sha256_generic fuse xfs nfs lockd sunrpc reiserfs btrfs zlib_deflate > ext4 jbd2 ext3 jbd ext2 mbcache sl811_hcd hid_generic xhci_hcd > ohci_hcd uhci_hcd ehci_hcd > [ 553.404406] Pid: 4704, comm: umount Tainted: G W > 3.8.0-mason-next+ #1 > [ 553.404409] Call Trace: > [ 553.404416] [<ffffffff81030522>] warn_slowpath_common+0x83/0x9b > [ 553.404422] [<ffffffff81030554>] warn_slowpath_null+0x1a/0x1c > [ 553.404441] [<ffffffffa01715b8>] btrfs_free_block_groups+0x158/0x27e [btrfs] > [ 553.404463] [<ffffffffa017c71a>] close_ctree+0x200/0x32f [btrfs] > [ 553.404469] [<ffffffff81118323>] ? evict_inodes+0xd7/0xe3 > [ 553.404485] [<ffffffffa015a357>] btrfs_put_super+0x19/0x1b [btrfs] > [ 553.404491] [<ffffffff811047e7>] generic_shutdown_super+0x59/0xd1 > [ 553.404497] [<ffffffff8111ad7a>] ? free_vfsmnt+0x17/0x3e > [ 553.404504] [<ffffffff811048dd>] kill_anon_super+0x14/0x1f > [ 553.404519] [<ffffffffa015a132>] btrfs_kill_super+0x17/0x89 [btrfs] > [ 553.404525] [<ffffffff81104a44>] deactivate_locked_super+0x37/0x63 > [ 553.404531] [<ffffffff8110576a>] deactivate_super+0x3f/0x43 > [ 553.404537] [<ffffffff8111b30c>] mntput_no_expire+0x113/0x11b > [ 553.404543] [<ffffffff8111c18b>] sys_umount+0x30a/0x33c > [ 553.404548] [<ffffffff810415d1>] ? __set_current_blocked+0x36/0x4a > [ 553.404555] [<ffffffff81607746>] system_call_fastpath+0x1a/0x1f > [ 553.404559] ---[ end trace 0adc4db1ad1a6638 ]--- > > Xfstest 083 is showing a successful completion, and I''m not seeing any > errors using btrfsck on the partitions after the test. > > For reference, here are the relevant sections of inode.c and extent-tree.c: > > inode.c: > > 7901 void btrfs_destroy_inode(struct inode *inode) > 7902 { > 7903 struct btrfs_ordered_extent *ordered; > 7904 struct btrfs_root *root = BTRFS_I(inode)->root; > 7905 > 7906 WARN_ON(!hlist_empty(&inode->i_dentry)); > 7907 WARN_ON(inode->i_data.nrpages); > 7908 WARN_ON(BTRFS_I(inode)->outstanding_extents); > 7909 WARN_ON(BTRFS_I(inode)->reserved_extents); > 7910 WARN_ON(BTRFS_I(inode)->delalloc_bytes); > 7911 WARN_ON(BTRFS_I(inode)->csum_bytes); > > extent-tree.c: > > 4506 static void release_global_block_rsv(struct btrfs_fs_info *fs_info) > 4507 { > 4508 block_rsv_release_bytes(fs_info, &fs_info->global_block_rsv, NULL, > 4509 (u64)-1); > 4510 WARN_ON(fs_info->delalloc_block_rsv.size > 0); > 4511 WARN_ON(fs_info->delalloc_block_rsv.reserved > 0); > 4512 WARN_ON(fs_info->trans_block_rsv.size > 0); > 4513 WARN_ON(fs_info->trans_block_rsv.reserved > 0); > 4514 WARN_ON(fs_info->chunk_block_rsv.size > 0); > 4515 WARN_ON(fs_info->chunk_block_rsv.reserved > 0); > 4516 WARN_ON(fs_info->delayed_block_rsv.size > 0); > 4517 WARN_ON(fs_info->delayed_block_rsv.reserved > 0); > 4518 } > -- > To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html >-- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Chris Mason
2013-Feb-21 13:26 UTC
Re: [PATCH] Btrfs: fix wrong outstanding_extents when doing DIO write
On Thu, Feb 21, 2013 at 02:48:22AM -0700, Miao Xie wrote:> When running the 083th case of xfstests on the filesystem with > "compress-force=lzo", the following WARNINGs were triggered. > WARNING: at fs/btrfs/inode.c:7908 > WARNING: at fs/btrfs/inode.c:7909 > WARNING: at fs/btrfs/inode.c:7911 > WARNING: at fs/btrfs/extent-tree.c:4510 > WARNING: at fs/btrfs/extent-tree.c:4511 > > This problem was introduced by the patch "Btrfs: fix deadlock due > to unsubmitted". In this patch, there are two bugs which caused > the above problem.I saw this as well on test 132 last night. My plan was to track it down this morning, so discovering it already fixed while I slept was wonderful. Thanks Miao. Josef I''ve got this one and Miao''s defrag unmount patch queued up. -chris -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Mitch Harder
2013-Feb-21 14:19 UTC
Re: [PATCH] Btrfs: fix wrong outstanding_extents when doing DIO write
On Thu, Feb 21, 2013 at 7:26 AM, Chris Mason <chris.mason@fusionio.com> wrote:> On Thu, Feb 21, 2013 at 02:48:22AM -0700, Miao Xie wrote: >> When running the 083th case of xfstests on the filesystem with >> "compress-force=lzo", the following WARNINGs were triggered. >> WARNING: at fs/btrfs/inode.c:7908 >> WARNING: at fs/btrfs/inode.c:7909 >> WARNING: at fs/btrfs/inode.c:7911 >> WARNING: at fs/btrfs/extent-tree.c:4510 >> WARNING: at fs/btrfs/extent-tree.c:4511 >> >> This problem was introduced by the patch "Btrfs: fix deadlock due >> to unsubmitted". In this patch, there are two bugs which caused >> the above problem. > > I saw this as well on test 132 last night. My plan was to track it down > this morning, so discovering it already fixed while I slept was > wonderful. > > Thanks Miao. Josef I''ve got this one and Miao''s defrag unmount patch > queued up. >Thanks, I''ve also tested this patch, and it cleared the error I was receiving. -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html