Oops, sent last one without patch on accident. Attached this time. This has been happening for me since 4.10 dquot_writeback_dquots expects a lock to be held on super_block->s_umount , and reiserfs_sync_fs, which calls dquot_writeback_dquots, does not obtain such a lock. Thus, the following warning is generated: [Sun May 28 04:58:06 2017] ------------[ cut here ]------------ [Sun May 28 04:58:06 2017] WARNING: CPU: 0 PID: 31 at fs/quota/dquot.c:620 dquot_writeback_dquots+0x248/0x250 [Sun May 28 04:58:06 2017] Modules linked in: bbswitch(O) nls_iso8859_1 nls_cp437 iTCO_wdt iTCO_vendor_support acer_wmi sparse_keymap coretemp efi_pstore hwmon intel_rapl x86_pkg_temp_thermal intel_powerclamp pcspkr ath9k ath9k_common ath9k_hw ath efivars mac80211 joydev psmouse i2c_i801 cfg80211 input_leds led_class nvidiafb vgastate fb_ddc atl1c i915 drm_kms_helper drm intel_gtt syscopyarea sysfillrect sysimgblt mei_me fb_sys_fops i2c_algo_bit mei lpc_ich shpchp acpi_cpufreq thermal wmi video tpm_tis tpm_tis_core button tpm sch_fq_codel evdev mac_hid uvcvideo vboxnetflt(O) videobuf2_vmalloc videobuf2_memops vboxnetadp(O) videobuf2_v4l2 videobuf2_core pci_stub videodev vboxpci(O) media ath3k btusb btrtl btbcm btintel vboxdrv(O) bluetooth rfkill loop usbip_host usbip_core sg ip_tables x_tables hid_generic usbhid [Sun May 28 04:58:06 2017] hid sr_mod cdrom sd_mod serio_raw atkbd libps2 ehci_pci xhci_pci ahci xhci_hcd ehci_hcd libahci libata scsi_mod usbcore usb_common i8042 serio raid1 raid0 dm_mod md_mod [Sun May 28 04:58:06 2017] CPU: 0 PID: 31 Comm: kworker/0:1 Tainted: G O 4.11.3-1-ck2-ck #1 [Sun May 28 04:58:06 2017] Hardware name: Acer Aspire V3-771/VA70_HC, BIOS V2.16 01/14/2013 [Sun May 28 04:58:06 2017] Workqueue: events_long flush_old_commits [Sun May 28 04:58:06 2017] Call Trace: [Sun May 28 04:58:06 2017] ? dump_stack+0x5c/0x7a [Sun May 28 04:58:06 2017] ? __warn+0xb4/0xd0 [Sun May 27 04:58:06 2017] ? dquot_writeback_dquots+0x248/0x250 [Sun May 27 04:58:06 2017] ? reiserfs_sync_fs+0x12/0x70 [Sun May 27 04:58:06 2017] ? dbs_work_handler+0x3d/0x50 [Sun May 27 04:58:06 2017] ? flush_old_commits+0x30/0x50 [Sun May 27 04:58:06 2017] ? process_one_work+0x1b1/0x3a0 [Sun May 27 04:58:06 2017] ? worker_thread+0x42/0x4c0 [Sun May 27 04:58:06 2017] ? kthread+0xf2/0x130 [Sun May 27 04:58:06 2017] ? process_one_work+0x3a0/0x3a0 [Sun May 27 04:58:06 2017] ? kthread_create_on_node+0x40/0x40 [Sun May 27 04:58:06 2017] ? ret_from_fork+0x26/0x40 [Sun May 27 04:58:06 2017] ---[ end trace 7e040d020ba99607 ]--- This occurs during system boot on a fully-updated Archlinux system, and has so since 4.10 100% of the time. It may occur after as well, but it's a WARN_ONCE. The attached patch corrects this issue by first trying to obtain a readlock on said structure member, and if it got it, releases it before returning. After applying the patch, my system is completely stable and the warning no longer occurs. Mounting and unmounting works as expected without issue. Thanks, - Tim Savannah
--- a/fs/reiserfs/super.c 2017-05-29 00:14:45.000000000 -0400 +++ b/fs/reiserfs/super.c 2017-05-29 00:51:44.000000000 -0400 @@ -67,17 +67,28 @@ static int reiserfs_sync_fs(struct super_block *s, int wait) { struct reiserfs_transaction_handle th; + int got_lock; /* * Writeback quota in non-journalled quota case - journalled quota has * no dirty dquots */ + + if ( down_read_trylock(&s->s_umount) ) + got_lock = 1; + else + got_lock = 0; + dquot_writeback_dquots(s, -1); reiserfs_write_lock(s); if (!journal_begin(&th, s, 1)) if (!journal_end_sync(&th)) reiserfs_flush_old_commits(s); reiserfs_write_unlock(s); + + if ( got_lock ) + up_read(&s->s_umount); + return 0; }