android_kernel_samsung_msm8976/drivers/md
John Pittman bf8c973dea dm kcopyd: avoid softlockup in run_complete_job
[ Upstream commit 784c9a29e99eb40b842c29ecf1cc3a79e00fb629 ]

It was reported that softlockups occur when using dm-snapshot ontop of
slow (rbd) storage.  E.g.:

[ 4047.990647] watchdog: BUG: soft lockup - CPU#10 stuck for 22s! [kworker/10:23:26177]
...
[ 4048.034151] Workqueue: kcopyd do_work [dm_mod]
[ 4048.034156] RIP: 0010:copy_callback+0x41/0x160 [dm_snapshot]
...
[ 4048.034190] Call Trace:
[ 4048.034196]  ? __chunk_is_tracked+0x70/0x70 [dm_snapshot]
[ 4048.034200]  run_complete_job+0x5f/0xb0 [dm_mod]
[ 4048.034205]  process_jobs+0x91/0x220 [dm_mod]
[ 4048.034210]  ? kcopyd_put_pages+0x40/0x40 [dm_mod]
[ 4048.034214]  do_work+0x46/0xa0 [dm_mod]
[ 4048.034219]  process_one_work+0x171/0x370
[ 4048.034221]  worker_thread+0x1fc/0x3f0
[ 4048.034224]  kthread+0xf8/0x130
[ 4048.034226]  ? max_active_store+0x80/0x80
[ 4048.034227]  ? kthread_bind+0x10/0x10
[ 4048.034231]  ret_from_fork+0x35/0x40
[ 4048.034233] Kernel panic - not syncing: softlockup: hung tasks

Fix this by calling cond_resched() after run_complete_job()'s callout to
the dm_kcopyd_notify_fn (which is dm-snap.c:copy_callback in the above
trace).

Signed-off-by: John Pittman <jpittman@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2019-07-27 21:51:38 +02:00
..
bcache UPSTREAM: block: disable entropy contributions for nonrot devices 2019-07-27 21:47:56 +02:00
persistent-data dm btree: fix serious bug in btree_split_beneath() 2019-07-27 21:46:30 +02:00
Kconfig Import latest Samsung release 2017-04-18 03:43:52 +02:00
Makefile Import latest Samsung release 2017-04-18 03:43:52 +02:00
bitmap.c md/bitmap: disable bitmap_resize for file-backed bitmaps. 2019-07-27 21:44:22 +02:00
bitmap.h
dm-android-verity.c ANDROID: dm: Add android verity target 2016-05-18 14:36:11 +05:30
dm-android-verity.h ANDROID: dm: Add android verity target 2016-05-18 14:36:11 +05:30
dm-bio-prison.c
dm-bio-prison.h
dm-bio-record.h
dm-bufio.c dm bufio: fix integer overflow when limiting maximum cache size 2019-07-27 21:46:08 +02:00
dm-bufio.h
dm-builtin.c
dm-cache-block-types.h
dm-cache-metadata.c
dm-cache-metadata.h
dm-cache-policy-cleaner.c
dm-cache-policy-internal.h
dm-cache-policy-mq.c
dm-cache-policy.c
dm-cache-policy.h
dm-cache-target.c dm: fix various targets to dm_register_target after module __init resources created 2019-07-27 21:46:15 +02:00
dm-crypt.c dm crypt: mark key as invalid until properly loaded 2019-07-27 21:43:29 +02:00
dm-delay.c
dm-dirty.c Import latest Samsung release 2017-04-18 03:43:52 +02:00
dm-exception-store.c
dm-exception-store.h
dm-flakey.c
dm-io.c
dm-ioctl.c dm ioctl: prevent stack leak in dm ioctl call 2017-09-04 01:21:07 -07:00
dm-kcopyd.c dm kcopyd: avoid softlockup in run_complete_job 2019-07-27 21:51:38 +02:00
dm-linear.c
dm-log-userspace-base.c
dm-log-userspace-transfer.c
dm-log-userspace-transfer.h
dm-log.c
dm-mpath.c dm: fix various targets to dm_register_target after module __init resources created 2019-07-27 21:46:15 +02:00
dm-mpath.h
dm-path-selector.c
dm-path-selector.h
dm-queue-length.c
dm-raid.c
dm-raid1.c
dm-region-hash.c
dm-req-crypt.c md: dm-req-crypt: fixed error propagation when ICE is used 2019-07-27 21:50:38 +02:00
dm-round-robin.c
dm-service-time.c
dm-snap-persistent.c
dm-snap-transient.c
dm-snap.c dm: fix various targets to dm_register_target after module __init resources created 2019-07-27 21:46:15 +02:00
dm-stripe.c
dm-sysfs.c
dm-table.c dm: discard support requires all targets in a table support discards 2019-07-27 21:46:08 +02:00
dm-target.c
dm-thin-metadata.c
dm-thin-metadata.h
dm-thin.c dm: fix various targets to dm_register_target after module __init resources created 2019-07-27 21:46:15 +02:00
dm-uevent.c
dm-uevent.h
dm-verity-fec.c dm verity: add ignore_zero_blocks feature 2016-05-18 14:34:43 +05:30
dm-verity-fec.h dm verity: add support for forward error correction 2016-05-18 14:34:43 +05:30
dm-verity-target.c Import latest Samsung release 2017-04-18 03:43:52 +02:00
dm-verity.h ANDROID: dm: Add android verity target 2016-05-18 14:36:11 +05:30
dm-zero.c
dm.c dm: fix race between dm_get_from_kobject() and __dm_destroy() 2019-07-27 21:46:07 +02:00
dm.h
faulty.c
linear.c md linear: fix a race between linear_add() and linear_congested() 2019-07-27 21:43:30 +02:00
linear.h md linear: fix a race between linear_add() and linear_congested() 2019-07-27 21:43:30 +02:00
md.c md: fix super_offset endianness in super_1_rdev_size_change 2019-07-27 21:44:23 +02:00
md.h
multipath.c
multipath.h
raid0.c
raid0.h
raid1.c md: don't use flush_signals in userspace processes 2019-07-27 21:44:54 +02:00
raid1.h
raid5.c md: don't use flush_signals in userspace processes 2019-07-27 21:44:54 +02:00
raid5.h
raid10.c md/raid10: submit bio directly to replacement disk 2019-07-27 21:44:23 +02:00
raid10.h