Hello Qu, The commit from $SUBJECT breaks btrfs/100. Before that commit this test takes around 25 seconds and it succeeds, whereas with this patch applied the test is twice as fast but is broken after just a couple of iterations. The breake I've observed so far is either lock up of the machine or errors in the output. Here is what the lock up looks like:
[ 83.335513] sysrq: SysRq : Show Blocked State [ 83.336199] task PC stack pid father [ 83.336241] kworker/u12:1 D 0 72 2 0x80000000 [ 83.336272] Workqueue: writeback wb_workfn (flush-btrfs-9) [ 83.336279] Call Trace: [ 83.336292] __schedule+0x220/0x860 [ 83.336301] schedule+0x33/0x90 [ 83.336306] io_schedule+0x16/0x40 [ 83.336312] __lock_page+0x119/0x160 [ 83.336319] ? add_to_page_cache_lru+0xe0/0xe0 [ 83.336327] extent_write_cache_pages+0x374/0x420 [ 83.336337] ? match_held_lock.part.8+0x41/0x130 [ 83.336345] ? __lock_acquire+0x2b6/0x18e0 [ 83.336353] extent_writepages+0x51/0x80 [ 83.336361] btrfs_writepages+0xe/0x10 [ 83.336366] do_writepages+0x48/0xf0 [ 83.336370] ? writeback_sb_inodes+0x132/0x5f0 [ 83.336378] __writeback_single_inode+0x5b/0x730 [ 83.336381] ? __writeback_single_inode+0x5b/0x730 [ 83.336388] writeback_sb_inodes+0x258/0x5f0 [ 83.336399] __writeback_inodes_wb+0x67/0xb0 [ 83.336406] wb_writeback+0x31d/0x570 [ 83.336410] ? mark_held_locks+0x58/0x80 [ 83.336425] wb_workfn+0x23a/0x650 [ 83.336511] ? wb_workfn+0x23a/0x650 [ 83.336524] process_one_work+0x1f7/0x630 [ 83.336533] worker_thread+0x3d/0x3b0 [ 83.336540] kthread+0x129/0x140 [ 83.336544] ? process_one_work+0x630/0x630 [ 83.336548] ? kthread_flush_work_fn+0x20/0x20 [ 83.336553] ret_from_fork+0x3a/0x50 [ 83.336580] kworker/u12:3 D 0 1220 2 0x80000000 [ 83.336595] Workqueue: btrfs-flush_delalloc btrfs_flush_delalloc_helper [ 83.336605] Call Trace: [ 83.336614] __schedule+0x220/0x860 [ 83.336622] ? _raw_spin_unlock_irq+0x2c/0x40 [ 83.336631] schedule+0x33/0x90 [ 83.336638] io_schedule+0x16/0x40 [ 83.336643] __lock_page+0x119/0x160 [ 83.336649] ? add_to_page_cache_lru+0xe0/0xe0 [ 83.336656] extent_write_cache_pages+0x374/0x420 [ 83.336665] ? trace_hardirqs_off+0xd/0x10 [ 83.336670] ? _raw_spin_unlock_irqrestore+0x5b/0x60 [ 83.336680] extent_writepages+0x51/0x80 [ 83.336687] btrfs_writepages+0xe/0x10 [ 83.336691] do_writepages+0x48/0xf0 [ 83.336701] __filemap_fdatawrite_range+0x80/0xb0 [ 83.336705] ? normal_work_helper+0x358/0x640 [ 83.336709] ? __filemap_fdatawrite_range+0x80/0xb0 [ 83.336716] filemap_flush+0x1c/0x20 [ 83.336720] btrfs_run_delalloc_work+0x1d/0x50 [ 83.336726] normal_work_helper+0x4e/0x640 [ 83.336734] btrfs_flush_delalloc_helper+0x12/0x20 [ 83.336738] process_one_work+0x1f7/0x630 [ 83.336748] worker_thread+0x3d/0x3b0 [ 83.336755] kthread+0x129/0x140 [ 83.336759] ? process_one_work+0x630/0x630 [ 83.336762] ? kthread_flush_work_fn+0x20/0x20 [ 83.336768] ret_from_fork+0x3a/0x50 [ 83.336798] btrfs D 0 4378 2851 0x00000000 [ 83.336805] Call Trace: [ 83.336812] __schedule+0x220/0x860 [ 83.336820] ? wait_for_common+0x117/0x1f0 [ 83.336824] schedule+0x33/0x90 [ 83.336828] schedule_timeout+0x23a/0x570 [ 83.336835] ? mark_held_locks+0x58/0x80 [ 83.336842] ? _raw_spin_unlock_irq+0x2c/0x40 [ 83.336848] ? wait_for_common+0x117/0x1f0 [ 83.336856] ? trace_hardirqs_on_caller+0x100/0x190 [ 83.336864] ? wait_for_common+0x117/0x1f0 [ 83.336868] wait_for_common+0x13b/0x1f0 [ 83.336876] ? wake_up_q+0x80/0x80 [ 83.336884] wait_for_completion+0x1d/0x20 [ 83.336891] start_delalloc_inodes+0x289/0x360 [ 83.336902] btrfs_start_delalloc_roots+0x1cc/0x2e0 [ 83.336913] btrfs_dev_replace_finishing+0xa8/0x770 [ 83.336918] ? start_transaction+0xa6/0x4c0 [ 83.336928] btrfs_dev_replace_start+0x4fd/0x6f0 [ 83.336937] btrfs_dev_replace_by_ioctl+0x39/0x60 [ 83.336941] btrfs_ioctl+0x2700/0x31c0 [ 83.336953] ? lock_acquire+0xa5/0x230 [ 83.336961] ? do_sigaction+0x122/0x1d0 [ 83.336971] do_vfs_ioctl+0xa6/0x6a0 [ 83.336975] ? _raw_spin_unlock_irq+0x2c/0x40 [ 83.336981] ? do_vfs_ioctl+0xa6/0x6a0 [ 83.336986] ? do_sigaction+0x122/0x1d0 [ 83.336993] ? __might_fault+0x85/0x90 [ 83.337003] ksys_ioctl+0x41/0x70 [ 83.337010] __x64_sys_ioctl+0x1a/0x20 [ 83.337016] do_syscall_64+0x5f/0x1b0 [ 83.337020] entry_SYSCALL_64_after_hwframe+0x49/0xbe And when it fails the output from dmesg is: http://termbin.com/s6ep -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html