Chao Yu 3afae09ffe f2fs: compress: fix potential deadlock
generic/269 reports a hangtask issue, the root cause is ABBA deadlock
described as below:

Thread A			Thread B
- down_write(&sbi->gc_lock) -- A
				- f2fs_write_data_pages
				 - lock all pages in cluster -- B
				 - f2fs_write_multi_pages
				  - f2fs_write_raw_pages
				   - f2fs_write_single_data_page
				    - f2fs_balance_fs
				     - down_write(&sbi->gc_lock) -- A
- f2fs_gc
 - do_garbage_collect
  - ra_data_block
   - pagecache_get_page -- B

To fix this, it needs to avoid calling f2fs_balance_fs() if there is
still cluster pages been locked in context of cluster writeback, so
instead, let's call f2fs_balance_fs() in the end of
f2fs_write_raw_pages() when all cluster pages were unlocked.

Fixes: 4c8ff7095bef ("f2fs: support data compression")
Signed-off-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
2021-01-27 15:20:05 -08:00
..
2020-12-21 10:28:02 -08:00
2021-01-20 14:15:33 -08:00
2020-12-17 11:18:00 -08:00
2021-01-15 14:54:24 -08:00
2020-12-10 15:33:14 +01:00
2020-12-14 15:26:14 +01:00
2020-12-17 13:22:17 -08:00
\n
2020-12-17 11:00:37 -08:00
2020-09-10 14:03:31 -07:00
2020-12-18 12:50:18 -08:00
2021-01-04 09:06:42 +09:00
2020-12-16 12:57:51 -08:00
2020-12-15 22:46:19 -08:00
\n
2020-10-15 15:03:10 -07:00
2020-12-19 11:18:38 -08:00
2020-08-04 21:02:38 -04:00
2020-12-16 12:57:51 -08:00
2020-07-31 08:16:01 +02:00
2020-08-07 11:33:24 -07:00
2020-10-23 11:33:41 -07:00
2020-08-19 14:14:19 +02:00
2021-01-25 12:32:26 -08:00
2020-10-23 11:33:41 -07:00
2020-07-31 08:16:00 +02:00
2020-10-24 12:40:18 -07:00
2020-09-26 22:55:05 -04:00
2020-12-01 14:53:39 -07:00
2020-12-01 14:53:39 -07:00
2020-06-09 15:40:50 -07:00
2020-07-31 08:16:01 +02:00