From: Filipe Manana <fdmanana@gmail.com>
To: "Holger Hoffstätte" <holger.hoffstaette@googlemail.com>
Cc: linux-btrfs <linux-btrfs@vger.kernel.org>
Subject: Re: WARN_ON in record_root_in_trans() when deleting freshly renamed subvolume
Date: Thu, 7 Apr 2016 19:07:54 +0100 [thread overview]
Message-ID: <CAL3q7H42PP=pv6abOGeFMLZ0nu6gfvSw5U1pqegdUmbOjsWUog@mail.gmail.com> (raw)
In-Reply-To: <57068E64.7000408@googlemail.com>
On Thu, Apr 7, 2016 at 5:44 PM, Holger Hoffstätte
<holger.hoffstaette@googlemail.com> wrote:
> Hi,
>
> Looks like I just found an exciting new corner case.
> kernel 4.4.6 with btrfs ~4.6, so 4.6 should reproduce.
>
> Try on a fresh volume:
>
> $btrfs subvolume create foo
> Create subvolume './foo'
> $sync
> $btrfs subvolume snapshot foo foo-1
> Create a snapshot of 'foo' in './foo-1'
> $sync
> $mv foo-1 foo.new
Haven't tried, but by taking a glance at btrfs_rename(), if you call
sync (or force a transaction commit through some other means) after
the rename and before deleting the snapshot, the warning should not
happen.
> $btrfs subvolume delete foo.new
> Delete subvolume (no-commit): '/mnt/test/foo.new'
> $dmesg
> [ 226.923316] ------------[ cut here ]------------
> [ 226.923339] WARNING: CPU: 1 PID: 5863 at fs/btrfs/transaction.c:319 record_root_in_trans+0xd6/0x100 [btrfs]()
> [ 226.923340] Modules linked in: auth_rpcgss oid_registry nfsv4 btrfs xor raid6_pq loop nfs lockd grace sunrpc autofs4 sch_fq_codel radeon snd_hda_codec_realtek x86_pkg_temp_thermal snd_hda_codec_generic coretemp crc32_pclmul crc32c_intel aesni_intel i2c_algo_bit uvcvideo snd_hda_codec_hdmi aes_x86_64 drm_kms_helper videobuf2_vmalloc glue_helper videobuf2_memops syscopyarea lrw sysfillrect gf128mul videobuf2_v4l2 sysimgblt snd_usb_audio fb_sys_fops ablk_helper snd_hda_intel videobuf2_core ttm cryptd snd_hwdep v4l2_common usbhid snd_hda_codec snd_usbmidi_lib videodev snd_rawmidi drm snd_hda_core snd_seq_device i2c_i801 snd_pcm i2c_core snd_timer snd r8169 soundcore mii parport_pc parport
> [ 226.923365] CPU: 1 PID: 5863 Comm: ls Not tainted 4.4.6 #1
> [ 226.923366] Hardware name: Gigabyte Technology Co., Ltd. P67-DS3-B3/P67-DS3-B3, BIOS F1 05/06/2011
> [ 226.923367] 0000000000000000 ffff8800da677d20 ffffffff813181a8 0000000000000000
> [ 226.923368] ffffffffa0aacdbf ffff8800da677d58 ffffffff810507b2 ffff880601e90800
> [ 226.923369] ffff8800dacf10a0 ffff880601e90800 ffff880601e909f0 0000000000000001
> [ 226.923371] Call Trace:
> [ 226.923374] [<ffffffff813181a8>] dump_stack+0x4d/0x65
> [ 226.923376] [<ffffffff810507b2>] warn_slowpath_common+0x82/0xc0
> [ 226.923378] [<ffffffff810508aa>] warn_slowpath_null+0x1a/0x20
> [ 226.923387] [<ffffffffa0a2cf46>] record_root_in_trans+0xd6/0x100 [btrfs]
> [ 226.923395] [<ffffffffa0a2db24>] btrfs_record_root_in_trans+0x44/0x70 [btrfs]
> [ 226.923404] [<ffffffffa0a2fb5e>] start_transaction+0x9e/0x4c0 [btrfs]
> [ 226.923412] [<ffffffffa0a2ffd7>] btrfs_join_transaction+0x17/0x20 [btrfs]
> [ 226.923421] [<ffffffffa0a359b5>] btrfs_dirty_inode+0x35/0xd0 [btrfs]
> [ 226.923430] [<ffffffffa0a35acd>] btrfs_update_time+0x7d/0xb0 [btrfs]
> [ 226.923432] [<ffffffff81187028>] touch_atime+0x88/0xa0
> [ 226.923434] [<ffffffff8117ec9b>] iterate_dir+0xdb/0x120
> [ 226.923435] [<ffffffff8117f0c8>] SyS_getdents+0x88/0xf0
> [ 226.923437] [<ffffffff8117edb0>] ? fillonedir+0xd0/0xd0
> [ 226.923439] [<ffffffff815b8257>] entry_SYSCALL_64_fastpath+0x12/0x6a
> [ 226.923440] ---[ end trace 9c78caf253e284fe ]---
>
> Code looks like:
>
> ..
> static int record_root_in_trans(struct btrfs_trans_handle *trans,
> struct btrfs_root *root)
> {
> if (test_bit(BTRFS_ROOT_REF_COWS, &root->state) &&
> root->last_trans < trans->transid) {
> WARN_ON(root == root->fs_info->extent_root);
> WARN_ON(root->commit_root != root->node);
> ..
>
> There's been a few journal/recovery/directory consistency patches recently,
Which can't solve this warning nor cause it, since you didn't fsync
and trigger the replay of the log trees.
> so maybe it's a corner case or an older problem. I'll try to bisect, but
> meanwhile wanted to report it for discussion.
Seems like an old problem to me.
Thanks for reporting it!
>
> Holger
>
> --
> 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
--
Filipe David Manana,
"Reasonable men adapt themselves to the world.
Unreasonable men adapt the world to themselves.
That's why all progress depends on unreasonable men."
next prev parent reply other threads:[~2016-04-07 18:07 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-04-07 16:44 WARN_ON in record_root_in_trans() when deleting freshly renamed subvolume Holger Hoffstätte
2016-04-07 18:07 ` Filipe Manana [this message]
2016-04-08 2:01 ` Liu Bo
2016-04-08 11:14 ` Filipe Manana
2016-04-08 11:51 ` Holger Hoffstätte
2016-04-08 13:10 ` Holger Hoffstätte
2016-04-08 19:18 ` Mark Fasheh
2016-04-11 1:05 ` Qu Wenruo
2016-04-11 18:09 ` Mark Fasheh
2016-04-12 0:30 ` Qu Wenruo
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='CAL3q7H42PP=pv6abOGeFMLZ0nu6gfvSw5U1pqegdUmbOjsWUog@mail.gmail.com' \
--to=fdmanana@gmail.com \
--cc=holger.hoffstaette@googlemail.com \
--cc=linux-btrfs@vger.kernel.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: 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;
as well as URLs for NNTP newsgroup(s).