Files
mirror_zfs/module/zfs
LOLi fd01167ffd Fix hung z_zvol tasks during 'zfs receive'
During a receive operation zvol_create_minors_impl() can wait
needlessly for the prefetch thread because both share the same tasks
queue.  This results in hung tasks:

<3>INFO: task z_zvol:5541 blocked for more than 120 seconds.
<3>      Tainted: P           O  3.16.0-4-amd64
<3>"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.

The first z_zvol:5541 (zvol_task_cb) is waiting for the long running
traverse_prefetch_thread:260

root@linux:~# cat /proc/spl/taskq
taskq                       act  nthr  spwn  maxt   pri  mina
spl_system_taskq/0            1     2     0    64   100     1
	active: [260]traverse_prefetch_thread [zfs](0xffff88003347ae40)
	wait: 5541
spl_delay_taskq/0             0     1     0     4   100     1
	delay: spa_deadman [zfs](0xffff880039924000)
z_zvol/1                      1     1     0     1   120     1
	active: [5541]zvol_task_cb [zfs](0xffff88001fde6400)
	pend: zvol_task_cb [zfs](0xffff88001fde6800)

This change adds a dedicated, per-pool, prefetch taskq to prevent the
traverse code from monopolizing the global (and limited) system_taskq by
inappropriately scheduling long running tasks on it.

Reviewed-by: Albert Lee <trisk@forkgnu.org>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: loli10K <ezomori.nozomu@gmail.com>
Closes #6330
Closes #6890
Closes #7343
2018-05-07 17:19:57 -07:00
..
2018-01-30 10:27:31 -06:00
2018-03-14 16:10:37 -07:00
2015-01-16 14:41:26 -08:00
2017-05-26 11:42:10 -07:00
2017-06-26 14:36:49 -07:00
2018-01-30 10:27:31 -06:00
2015-01-16 14:41:26 -08:00
2017-11-21 13:11:29 -06:00
2017-07-13 13:54:00 -04:00
2015-01-16 14:41:26 -08:00
2017-07-13 13:54:00 -04:00
2018-05-07 17:19:56 -07:00
2016-04-21 09:49:25 -07:00
2017-01-03 11:31:18 -06:00
2010-08-31 13:41:58 -07:00
2018-05-07 17:19:56 -07:00
2017-07-13 13:54:00 -04:00
2018-01-30 10:27:30 -06:00
2016-11-29 14:34:33 -08:00
2018-05-07 17:19:56 -07:00
2010-08-31 13:41:58 -07:00
2017-03-10 09:51:33 -08:00
2017-03-10 09:51:33 -08:00
2017-01-03 11:31:18 -06:00
2018-05-07 17:19:57 -07:00
2017-08-08 10:17:33 -07:00
2017-03-29 12:24:51 -07:00
2018-05-07 17:19:56 -07:00
2018-03-14 16:10:36 -07:00
2017-03-10 09:51:33 -08:00
2018-01-30 10:27:31 -06:00
2017-01-23 10:35:58 -08:00