All of lore.kernel.org
 help / color / mirror / Atom feed
From: Miao Xie <miaox@cn.fujitsu.com>
To: Josef Bacik <jbacik@fusionio.com>
Cc: Linux Btrfs <linux-btrfs@vger.kernel.org>,
	Wu Fengguang <fengguang.wu@intel.com>,
	Seto Hidetoshi <seto.hidetoshi@jp.fujitsu.com>,
	David Sterba <dave@jikos.cz>
Subject: Re: [PATCH V3 2/2] Btrfs: fix the snapshot that should not exist
Date: Sat, 04 Aug 2012 13:53:28 +0800	[thread overview]
Message-ID: <501CB8D8.2010405@cn.fujitsu.com> (raw)
In-Reply-To: <20120803210301.GK2263@localhost.localdomain>

On fri, 3 Aug 2012 17:03:01 -0400, Josef Bacik wrote:
> On Thu, Aug 02, 2012 at 07:53:36PM -0600, Miao Xie wrote:
>> On Thu, 2 Aug 2012 13:46:31 +0200, David Sterba wrote:
>>> Hi,
>>>
>>> appologies for late reply,
>>>
>>> On Thu, Aug 02, 2012 at 12:40:46PM +0800, Miao Xie wrote:
>>>> Changelog v1 -> v2:
>>>> - add comment to explain why we need deal with the delayed items after
>>>>   snapshot creation and why this operation do not corrupt the metadata.
>>>
>>> I'm sorry, the comment did not fix the bug :)
>>>
>>> The subvol stress is able to hit this:
>>>
>>> [ 2360.444321] ------------[ cut here ]------------
>>> [ 2360.448019] kernel BUG at fs/btrfs/extent-tree.c:6047!
>>> [ 2360.448019] invalid opcode: 0000 [#1] SMP
>>> [ 2360.448019] CPU 0
>>> [ 2360.448019] Modules linked in: btrfs aoe [last unloaded: btrfs]
>>> [ 2360.448019]
>>> [ 2360.448019] Pid: 8212, comm: btrfs Not tainted 3.5.0-default+ #170 Intel Corporation Santa Rosa platform/Matanzas
>>> [ 2360.448019] RIP: 0010:[<ffffffffa00f62a1>]  [<ffffffffa00f62a1>] run_clustered_refs+0xa11/0xa20 [btrfs]
>>> [ 2360.448019] RSP: 0018:ffff88003eca1a68  EFLAGS: 00010246
>>> [ 2360.448019] RAX: 00000000000007ff RBX: ffff880017a694c8 RCX: ffff88003eca1a08
>>> [ 2360.448019] RDX: ffff880028aa9000 RSI: 00000000000007fe RDI: ffff880064223cf0
>>> [ 2360.448019] RBP: ffff88003eca1b48 R08: 00000000000007ff R09: ffff88003eca19f8
>>> [ 2360.448019] R10: ffff88002435d1e8 R11: 0000000000000000 R12: ffff880025d66d28
>>> [ 2360.448019] R13: ffff880038640000 R14: ffff8800778dfa88 R15: ffff880060f010d0
>>> [ 2360.448019] FS:  00007f3289f35740(0000) GS:ffff88007dc00000(0000) knlGS:0000000000000000
>>> [ 2360.448019] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
>>> [ 2360.448019] CR2: ffffffffff600400 CR3: 000000002e112000 CR4: 00000000000007f0
>>> [ 2360.448019] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
>>> [ 2360.448019] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
>>> [ 2360.448019] Process btrfs (pid: 8212, threadinfo ffff88003eca0000, task ffff88001d834200)
>>> [ 2360.448019] Stack:
>>> [ 2360.448019]  0000000000000000 0000000000000000 0000000000000001 0000000000000000
>>> [ 2360.448019]  00000000000007ed ffff88002435d1e8 000000003eca1b18 0000000000000000
>>> [ 2360.448019]  0000000000000770 0000000000000000 000000005cb1e000 ffff88003eca1c08
>>> [ 2360.448019] Call Trace:
>>> [ 2360.448019]  [<ffffffffa00f6479>] btrfs_run_delayed_refs+0x1c9/0x550 [btrfs]
>>> [ 2360.448019]  [<ffffffff810a4d15>] ? trace_hardirqs_on_caller+0x155/0x1d0
>>> [ 2360.448019]  [<ffffffffa00e306a>] ? btrfs_free_path+0x2a/0x40 [btrfs]
>>> [ 2360.448019]  [<ffffffffa015c741>] ? btrfs_run_delayed_items+0xf1/0x160 [btrfs]
>>> [ 2360.448019]  [<ffffffffa0108a15>] btrfs_commit_transaction+0x605/0xb00 [btrfs]
>>> [ 2360.448019]  [<ffffffff8109e70d>] ? lock_release_holdtime+0x3d/0x1c0
>>> [ 2360.448019]  [<ffffffffa013fc88>] ? btrfs_mksubvol+0x298/0x360 [btrfs]
>>> [ 2360.448019]  [<ffffffff8106d210>] ? wake_up_bit+0x40/0x40
>>> [ 2360.448019]  [<ffffffff8137d88e>] ? do_raw_spin_unlock+0x5e/0xb0
>>> [ 2360.448019]  [<ffffffffa013fd48>] btrfs_mksubvol+0x358/0x360 [btrfs]
>>> [ 2360.448019]  [<ffffffffa013fe5a>] btrfs_ioctl_snap_create_transid+0x10a/0x190 [btrfs]
>>> [ 2360.448019]  [<ffffffffa014005d>] btrfs_ioctl_snap_create_v2.clone.0+0xfd/0x110 [btrfs]
>>> [ 2360.448019]  [<ffffffffa01419ee>] btrfs_ioctl+0x48e/0x1340 [btrfs]
>>> [ 2360.448019]  [<ffffffff818f0f00>] ? do_page_fault+0x2d0/0x580
>>> [ 2360.448019]  [<ffffffff818eca70>] ? _raw_spin_unlock_irq+0x30/0x50
>>> [ 2360.448019]  [<ffffffff81078463>] ? finish_task_switch+0x83/0xf0
>>> [ 2360.448019]  [<ffffffff81161d08>] do_vfs_ioctl+0x98/0x560
>>> [ 2360.448019]  [<ffffffff818ed215>] ? retint_swapgs+0x13/0x1b
>>> [ 2360.448019]  [<ffffffff8116221f>] sys_ioctl+0x4f/0x80
>>> [ 2360.448019]  [<ffffffff818f56e9>] system_call_fastpath+0x16/0x1b
>>> [ 2360.448019] Code: 8b 76 40 48 89 d7 48 89 55 a0 e8 2b 74 ff ff 83 f8 17 0f 87 1e ff ff ff 0f 0b 80 fa b2 0f 84 b4 f8 ff ff 0f 0b 0f 0b 0f 0b 0f 0b <0f> 0b 0f 0b 0f 0b 0f 0b 0f 1f 80 00 00 00 00 55 48 89 e5 41 57
>>> [ 2360.448019] RIP  [<ffffffffa00f62a1>] run_clustered_refs+0xa11/0xa20 [btrfs]
>>> [ 2360.448019]  RSP <ffff88003eca1a68>
>>> [ 2360.814508] ---[ end trace 555a16cac3620ccb ]---
>>> [ 2360.820398] note: btrfs[8212] exited with preempt_count 1
>>> [ 2360.827072] BUG: sleeping function called from invalid context at kernel/rwsem.c:20
>>> [ 2360.836047] in_atomic(): 1, irqs_disabled(): 0, pid: 8212, name: btrfs
>>> [ 2360.843859] INFO: lockdep is turned off.
>>> [ 2360.849021] Pid: 8212, comm: btrfs Tainted: G      D      3.5.0-default+ #170
>>> [ 2360.849022] Call Trace:
>>> [ 2360.849027]  [<ffffffff8107a40c>] __might_sleep+0xfc/0x130
>>> [ 2360.849030]  [<ffffffff818ea0f6>] down_read+0x26/0xa0
>>> [ 2360.849034]  [<ffffffff810b416b>] acct_collect+0x4b/0x1b0
>>> [ 2360.849038]  [<ffffffff8104c838>] do_exit+0x718/0x9a0
>>> [ 2360.849041]  [<ffffffff81049a26>] ? kmsg_dump+0x26/0x140
>>> [ 2360.849043]  [<ffffffff818ee0c0>] oops_end+0xb0/0xf0
>>> [ 2360.849046]  [<ffffffff81005a7b>] die+0x5b/0x90
>>> [ 2360.849048]  [<ffffffff818ed9a4>] do_trap+0xc4/0x170
>>> [ 2360.849052]  [<ffffffff810030a5>] do_invalid_op+0x95/0xb0
>>> [ 2360.849067]  [<ffffffffa00f62a1>] ? run_clustered_refs+0xa11/0xa20 [btrfs]
>>> [ 2360.849071]  [<ffffffff813779dd>] ? trace_hardirqs_off_thunk+0x3a/0x3c
>>> [ 2360.849073]  [<ffffffff818ed260>] ? restore_args+0x30/0x30
>>> [ 2360.849076]  [<ffffffff818f674b>] invalid_op+0x1b/0x20
>>> [ 2360.849087]  [<ffffffffa00f62a1>] ? run_clustered_refs+0xa11/0xa20 [btrfs]
>>> [ 2360.849097]  [<ffffffffa00f5f2b>] ? run_clustered_refs+0x69b/0xa20 [btrfs]
>>> [ 2360.849108]  [<ffffffffa00f6479>] btrfs_run_delayed_refs+0x1c9/0x550 [btrfs]
>>> [ 2360.849110]  [<ffffffff810a4d15>] ? trace_hardirqs_on_caller+0x155/0x1d0
>>> [ 2360.849119]  [<ffffffffa00e306a>] ? btrfs_free_path+0x2a/0x40 [btrfs]
>>> [ 2360.849133]  [<ffffffffa015c741>] ? btrfs_run_delayed_items+0xf1/0x160 [btrfs]
>>> [ 2360.849145]  [<ffffffffa0108a15>] btrfs_commit_transaction+0x605/0xb00 [btrfs]
>>> [ 2360.849148]  [<ffffffff8109e70d>] ? lock_release_holdtime+0x3d/0x1c0
>>> [ 2360.849161]  [<ffffffffa013fc88>] ? btrfs_mksubvol+0x298/0x360 [btrfs]
>>> [ 2360.849164]  [<ffffffff8106d210>] ? wake_up_bit+0x40/0x40
>>> [ 2360.849166]  [<ffffffff8137d88e>] ? do_raw_spin_unlock+0x5e/0xb0
>>> [ 2360.849180]  [<ffffffffa013fd48>] btrfs_mksubvol+0x358/0x360 [btrfs]
>>> [ 2360.849194]  [<ffffffffa013fe5a>] btrfs_ioctl_snap_create_transid+0x10a/0x190 [btrfs]
>>> [ 2360.849207]  [<ffffffffa014005d>] btrfs_ioctl_snap_create_v2.clone.0+0xfd/0x110 [btrfs]
>>> [ 2360.849221]  [<ffffffffa01419ee>] btrfs_ioctl+0x48e/0x1340 [btrfs]
>>> [ 2360.849224]  [<ffffffff818f0f00>] ? do_page_fault+0x2d0/0x580
>>> [ 2360.849226]  [<ffffffff818eca70>] ? _raw_spin_unlock_irq+0x30/0x50
>>> [ 2360.849229]  [<ffffffff81078463>] ? finish_task_switch+0x83/0xf0
>>> [ 2360.849231]  [<ffffffff81161d08>] do_vfs_ioctl+0x98/0x560
>>> [ 2360.849234]  [<ffffffff818ed215>] ? retint_swapgs+0x13/0x1b
>>> [ 2360.849236]  [<ffffffff8116221f>] sys_ioctl+0x4f/0x80
>>> [ 2360.849239]  [<ffffffff818f56e9>] system_call_fastpath+0x16/0x1b
>>> [ 2360.849255] BUG: scheduling while atomic: btrfs/8212/0x10000002
>>> [ 2360.849256] INFO: lockdep is turned off.
>>> [ 2360.849257] Modules linked in: btrfs aoe [last unloaded: btrfs]
>>> [ 2360.849261] Pid: 8212, comm: btrfs Tainted: G      D      3.5.0-default+ #170
>>> [ 2360.849262] Call Trace:
>>> [ 2360.849262]  [<ffffffff81078318>] __schedule_bug+0x68/0x90
>>> [ 2360.849265]  [<ffffffff818eafcc>] __schedule+0x73c/0x810
>>> [ 2360.849268]  [<ffffffff8107b48a>] __cond_resched+0x2a/0x40
>>> [ 2360.849270]  [<ffffffff818eb121>] _cond_resched+0x31/0x40
>>> [ 2360.849273]  [<ffffffff81128e13>] unmap_single_vma+0x493/0x750
>>> [ 2360.849276]  [<ffffffff811100b0>] ? lru_deactivate_fn+0x1e0/0x1e0
>>> [ 2360.849279]  [<ffffffff810a4be0>] ? trace_hardirqs_on_caller+0x20/0x1d0
>>> [ 2360.849281]  [<ffffffff8112986c>] unmap_vmas+0x3c/0x60
>>> [ 2360.849284]  [<ffffffff81130de1>] exit_mmap+0x81/0x140
>>> [ 2360.849287]  [<ffffffff81043824>] mmput+0x74/0x130
>>> [ 2360.849289]  [<ffffffff8104a520>] exit_mm+0x100/0x120
>>> [ 2360.849292]  [<ffffffff8104c858>] do_exit+0x738/0x9a0
>>> [ 2360.849294]  [<ffffffff81049a26>] ? kmsg_dump+0x26/0x140
>>> [ 2360.849297]  [<ffffffff818ee0c0>] oops_end+0xb0/0xf0
>>> [ 2360.849299]  [<ffffffff81005a7b>] die+0x5b/0x90
>>> [ 2360.849301]  [<ffffffff818ed9a4>] do_trap+0xc4/0x170
>>> [ 2360.849304]  [<ffffffff810030a5>] do_invalid_op+0x95/0xb0
>>> [ 2360.849307]  [<ffffffffa00f62a1>] ? run_clustered_refs+0xa11/0xa20 [btrfs]
>>> [ 2360.849317]  [<ffffffff813779dd>] ? trace_hardirqs_off_thunk+0x3a/0x3c
>>> [ 2360.849320]  [<ffffffff818ed260>] ? restore_args+0x30/0x30
>>> [ 2360.849322]  [<ffffffff818f674b>] invalid_op+0x1b/0x20
>>> [ 2360.849325]  [<ffffffffa00f62a1>] ? run_clustered_refs+0xa11/0xa20 [btrfs]
>>> [ 2360.849335]  [<ffffffffa00f5f2b>] ? run_clustered_refs+0x69b/0xa20 [btrfs]
>>> [ 2360.849346]  [<ffffffffa00f6479>] btrfs_run_delayed_refs+0x1c9/0x550 [btrfs]
>>> [ 2360.849356]  [<ffffffff810a4d15>] ? trace_hardirqs_on_caller+0x155/0x1d0
>>> [ 2360.849358]  [<ffffffffa00e306a>] ? btrfs_free_path+0x2a/0x40 [btrfs]
>>> [ 2360.849367]  [<ffffffffa015c741>] ? btrfs_run_delayed_items+0xf1/0x160 [btrfs]
>>> [ 2360.849380]  [<ffffffffa0108a15>] btrfs_commit_transaction+0x605/0xb00 [btrfs]
>>> [ 2360.849393]  [<ffffffff8109e70d>] ? lock_release_holdtime+0x3d/0x1c0
>>> [ 2360.849395]  [<ffffffffa013fc88>] ? btrfs_mksubvol+0x298/0x360 [btrfs]
>>> [ 2360.849409]  [<ffffffff8106d210>] ? wake_up_bit+0x40/0x40
>>> [ 2360.849411]  [<ffffffff8137d88e>] ? do_raw_spin_unlock+0x5e/0xb0
>>> [ 2360.849413]  [<ffffffffa013fd48>] btrfs_mksubvol+0x358/0x360 [btrfs]
>>> [ 2360.849427]  [<ffffffffa013fe5a>] btrfs_ioctl_snap_create_transid+0x10a/0x190 [btrfs]
>>> [ 2360.849441]  [<ffffffffa014005d>] btrfs_ioctl_snap_create_v2.clone.0+0xfd/0x110 [btrfs]
>>> [ 2360.849455]  [<ffffffffa01419ee>] btrfs_ioctl+0x48e/0x1340 [btrfs]
>>> [ 2360.849469]  [<ffffffff818f0f00>] ? do_page_fault+0x2d0/0x580
>>> [ 2360.849471]  [<ffffffff818eca70>] ? _raw_spin_unlock_irq+0x30/0x50
>>> [ 2360.849473]  [<ffffffff81078463>] ? finish_task_switch+0x83/0xf0
>>> [ 2360.849476]  [<ffffffff81161d08>] do_vfs_ioctl+0x98/0x560
>>> [ 2360.849478]  [<ffffffff818ed215>] ? retint_swapgs+0x13/0x1b
>>> [ 2360.849481]  [<ffffffff8116221f>] sys_ioctl+0x4f/0x80
>>> [ 2360.849483]  [<ffffffff818f56e9>] system_call_fastpath+0x16/0x1b
>>>
>>> fs/btrfs/extent-tree.c:6047
>>>
>>> 6046         if (parent > 0) {
>>> 6047                 BUG_ON(!(flags & BTRFS_BLOCK_FLAG_FULL_BACKREF));
>>> 6048                 btrfs_set_extent_inline_ref_type(leaf, iref,
>>> 6049                                                  BTRFS_SHARED_BLOCK_REF_KEY);
>>> 6050                 btrfs_set_extent_inline_ref_offset(leaf, iref, parent);
>>> 6051         } else {
>>> 6052                 btrfs_set_extent_inline_ref_type(leaf, iref,
>>> 6053                                                  BTRFS_TREE_BLOCK_REF_KEY);
>>> 6054                 btrfs_set_extent_inline_ref_offset(leaf, iref, root_objectid);
>>> 6055         }
>>
>> This bug is similar to the one which is reported by Daniel J Blueman a month ago. And
>> Josef have fixed it, but the patch has not been merged into for-linus branch till now.
>> Did you applied that patch?
>>
> 
> What patch is this?  Thanks,

http://marc.info/?l=linux-btrfs&m=134227134622271&w=2

URL of the bug report is:
http://marc.info/?l=linux-btrfs&m=134120032905388&w=2

But I'm not sure these two bugs is the same, so I need the test tool of David to look into it.

Thanks
Miao

  reply	other threads:[~2012-08-04  5:54 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-02  4:40 [PATCH V3 2/2] Btrfs: fix the snapshot that should not exist Miao Xie
2012-08-02 11:46 ` David Sterba
2012-08-03  1:53   ` Miao Xie
2012-08-03 21:03     ` Josef Bacik
2012-08-04  5:53       ` Miao Xie [this message]
2012-08-08 13:38         ` David Sterba
2012-08-09  3:28           ` Miao Xie
2012-09-18 19:24   ` Mitch Harder

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=501CB8D8.2010405@cn.fujitsu.com \
    --to=miaox@cn.fujitsu.com \
    --cc=dave@jikos.cz \
    --cc=fengguang.wu@intel.com \
    --cc=jbacik@fusionio.com \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=seto.hidetoshi@jp.fujitsu.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 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.