Filipe Manana
575849ecf5
Btrfs: fix scheduler warning when syncing log
We try to lock a mutex while the current task state is not TASK_RUNNING,
which results in the following warning when CONFIG_DEBUG_LOCK_ALLOC=y:
[30736.772501] ------------[ cut here ]------------
[30736.774545] WARNING: CPU: 9 PID: 19972 at kernel/sched/core.c:7300 __might_sleep+0x8b/0xa8()
[30736.783453] do not call blocking ops when !TASK_RUNNING; state=2 set at [<ffffffff8107499b>] prepare_to_wait+0x43/0x89
[30736.786261] Modules linked in: dm_flakey dm_mod crc32c_generic btrfs xor raid6_pq nfsd auth_rpcgss oid_registry nfs_acl nfs lockd grace fscache sunrpc loop parport_pc psmouse parport pcspkr microcode serio_raw evdev processor thermal_sys i2c_piix4 i2c_core button ext4 crc16 jbd2 mbcache sg sr_mod cdrom sd_mod ata_generic virtio_scsi floppy ata_piix libata virtio_pci virtio_ring e1000 virtio scsi_mod
[30736.794323] CPU: 9 PID: 19972 Comm: fsstress Not tainted 3.19.0-rc7-btrfs-next-5+ #1
[30736.795821] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.7.5-0-ge51488c-20140602_164612-nilsson.home.kraxel.org 04/01/2014
[30736.798788] 0000000000000009 ffff88042743fbd8 ffffffff814248ed ffff88043d32f2d8
[30736.800504] ffff88042743fc28 ffff88042743fc18 ffffffff81045338 0000000000000001
[30736.802131] ffffffff81064514 ffffffff817c52d1 000000000000026d 0000000000000000
[30736.803676] Call Trace:
[30736.804256] [<ffffffff814248ed>] dump_stack+0x4c/0x65
[30736.805245] [<ffffffff81045338>] warn_slowpath_common+0xa1/0xbb
[30736.806360] [<ffffffff81064514>] ? __might_sleep+0x8b/0xa8
[30736.807391] [<ffffffff81045398>] warn_slowpath_fmt+0x46/0x48
[30736.808511] [<ffffffff8107499b>] ? prepare_to_wait+0x43/0x89
[30736.809620] [<ffffffff8107499b>] ? prepare_to_wait+0x43/0x89
[30736.810691] [<ffffffff81064514>] __might_sleep+0x8b/0xa8
[30736.811703] [<ffffffff81426eaf>] mutex_lock_nested+0x2f/0x3a0
[30736.812889] [<ffffffff8107bfa1>] ? trace_hardirqs_on_caller+0x18f/0x1ab
[30736.814138] [<ffffffff8107bfca>] ? trace_hardirqs_on+0xd/0xf
[30736.819878] [<ffffffffa038cfff>] wait_for_writer.isra.12+0x91/0xaa [btrfs]
[30736.821260] [<ffffffff810748bd>] ? signal_pending_state+0x31/0x31
[30736.822410] [<ffffffffa0391f0a>] btrfs_sync_log+0x160/0x947 [btrfs]
[30736.823574] [<ffffffff8107bfa1>] ? trace_hardirqs_on_caller+0x18f/0x1ab
[30736.824847] [<ffffffff8107bfca>] ? trace_hardirqs_on+0xd/0xf
[30736.825972] [<ffffffffa036e555>] btrfs_sync_file+0x2b0/0x319 [btrfs]
[30736.827684] [<ffffffff8117901a>] vfs_fsync_range+0x21/0x23
[30736.828932] [<ffffffff81179038>] vfs_fsync+0x1c/0x1e
[30736.829917] [<ffffffff8117928b>] do_fsync+0x34/0x4e
[30736.830862] [<ffffffff811794b3>] SyS_fsync+0x10/0x14
[30736.831819] [<ffffffff8142a512>] system_call_fastpath+0x12/0x17
[30736.832982] ---[ end trace c0b57df60d32ae5c ]---
Fix this my acquiring the mutex after calling finish_wait(), which sets the
task's state to TASK_RUNNING.
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: Liu Bo <bo.li.liu@oracle.com>
Signed-off-by: Chris Mason <clm@fb.com>
2015-02-14 08:19:14 -08:00
..
2014-11-19 13:01:20 -05:00
2014-08-08 15:57:24 -07:00
2014-12-13 12:42:52 -08:00
2014-12-11 14:27:06 -08:00
2014-11-19 13:01:20 -05:00
2014-12-13 12:42:51 -08:00
2014-08-08 15:57:24 -07:00
2015-02-14 08:19:14 -08:00
2014-11-19 13:01:20 -05:00
2015-01-08 20:36:56 +03:00
2014-12-22 14:16:21 -06:00
2014-12-11 16:28:12 -05:00
2014-11-19 13:01:20 -05:00
2014-08-08 15:57:25 -07:00
2014-12-14 16:10:09 -08:00
2014-06-06 16:08:14 -07:00
2014-12-10 16:10:49 -08:00
2014-12-19 18:15:12 -08:00
2014-12-10 16:10:49 -08:00
2014-08-08 15:57:18 -07:00
2014-10-19 20:22:32 +03:00
2014-11-03 15:20:29 -05:00
2014-11-10 10:06:10 +01:00
2014-11-10 10:06:10 +01:00
2015-01-06 14:05:40 -08:00
2014-12-08 14:19:09 -08:00
2014-12-13 12:42:51 -08:00
2014-04-04 15:39:39 -07:00
2014-10-13 17:52:21 +01:00
2015-01-06 10:45:35 +01:00
2014-12-10 16:10:49 -08:00
2014-12-10 17:41:16 -08:00
2014-12-18 19:08:10 -08:00
2014-08-07 14:40:09 -04:00
2014-08-08 15:57:22 -07:00
2014-10-31 17:48:54 -04:00
2014-12-13 12:42:45 -08:00
2014-12-19 11:29:24 +01:00
2014-11-18 10:15:29 +01:00
2014-12-12 09:28:03 -08:00
2014-11-28 18:23:44 -08:00
2014-12-10 16:10:49 -08:00
2015-01-09 15:51:08 -08:00
2015-01-05 19:40:53 -08:00
2014-08-06 18:01:12 -07:00
2014-08-08 15:57:20 -07:00
2014-12-10 18:34:42 -08:00
2015-01-05 19:40:54 -08:00
2014-09-17 16:33:11 -04:00
2015-01-07 13:38:21 -05:00
2014-12-10 17:41:16 -08:00
2014-01-25 03:14:05 -05:00
2015-01-09 11:18:12 +01:00
2014-11-19 13:01:20 -05:00
2015-01-08 15:10:51 -08:00
2014-10-14 02:18:22 +02:00
2014-03-13 10:14:33 -04:00
2014-12-08 20:39:29 -05:00
2014-12-19 13:26:08 -08:00
2014-12-14 16:10:09 -08:00
2014-03-13 10:14:33 -04:00
2014-08-08 15:57:26 -07:00
2014-11-10 10:06:18 +01:00
2014-08-08 15:57:18 -07:00
2014-12-16 15:46:01 -08:00
2014-08-08 15:57:25 -07:00
2014-11-27 18:48:44 +00:00
2014-11-07 10:54:38 -08:00
2014-05-06 17:38:00 -04:00
2014-11-07 12:32:22 +02:00
2014-12-21 22:42:37 +01:00
2014-10-14 02:18:20 +02:00
2014-12-12 09:48:17 -08:00
2014-12-13 17:50:20 -05:00
2014-03-27 09:52:54 -07:00
2014-06-10 13:57:22 -07:00
2014-08-07 14:40:09 -04:00
2014-11-19 13:01:20 -05:00
2014-10-09 02:39:00 -04:00
2014-12-11 17:56:37 -08:00
2014-12-13 12:42:51 -08:00
2014-06-04 16:54:21 -07:00
2014-12-17 08:27:14 -05:00
2014-12-13 12:42:51 -08:00
2014-11-17 10:35:17 +00:00
2014-10-21 13:55:11 -06:00
2014-12-10 17:41:04 -08:00
2014-03-04 08:05:21 +00:00
2014-07-11 13:53:04 +03:00
2014-10-31 17:48:54 -04:00
2014-10-14 02:18:21 +02:00
2014-12-08 20:39:29 -05:00
2014-01-29 16:22:40 -08:00
2014-09-26 21:16:51 -04:00
2014-12-13 12:42:48 -08:00
2014-11-05 14:13:23 -05:00
2014-11-05 14:13:23 -05:00
2014-12-13 12:42:51 -08:00
2015-01-08 15:10:52 -08:00
2014-10-13 11:28:42 +02:00
2014-12-10 17:41:10 -08:00
2014-04-03 16:21:05 -07:00
2014-08-07 14:40:09 -04:00
2014-11-04 10:42:23 -07:00
2014-12-16 15:53:03 -08:00
2014-12-10 21:30:20 -05:00
2014-12-16 15:25:31 -08:00
2014-10-24 00:14:38 +02:00
2014-11-24 07:45:02 +01:00
2014-11-03 15:20:29 -05:00
2015-01-13 07:00:55 -05:00
2014-12-10 21:31:59 -05:00
2014-06-25 22:08:29 -04:00
2014-12-04 14:31:00 -05:00
2014-10-09 22:25:53 -04:00
2014-12-16 15:53:03 -08:00
2014-12-18 11:22:02 -08:00
2014-12-10 21:30:20 -05:00
2014-12-16 15:25:31 -08:00
2014-05-06 17:39:42 -04:00
2014-12-02 10:46:50 -06:00
2014-04-01 23:19:08 -04:00
2014-05-06 13:58:42 -04:00
2014-12-17 08:27:15 -05:00
2014-12-14 20:36:37 -08:00
2014-10-31 17:48:54 -04:00
2014-12-13 12:42:49 -08:00
2014-11-05 14:13:23 -05:00
2014-10-24 00:14:35 +02:00
2014-08-26 09:35:56 +02:00
2014-11-10 10:06:18 +01:00
2014-11-19 13:01:25 -05:00
2014-11-05 14:13:23 -05:00
2014-11-19 13:01:26 -05:00