Tejun Heo 7fc5854f8c writeback: synchronize sync(2) against cgroup writeback membership switches
sync_inodes_sb() can race against cgwb (cgroup writeback) membership
switches and fail to writeback some inodes.  For example, if an inode
switches to another wb while sync_inodes_sb() is in progress, the new
wb might not be visible to bdi_split_work_to_wbs() at all or the inode
might jump from a wb which hasn't issued writebacks yet to one which
already has.

This patch adds backing_dev_info->wb_switch_rwsem to synchronize cgwb
switch path against sync_inodes_sb() so that sync_inodes_sb() is
guaranteed to see all the target wbs and inodes can't jump wbs to
escape syncing.

v2: Fixed misplaced rwsem init.  Spotted by Jiufei.

Signed-off-by: Tejun Heo <tj@kernel.org>
Reported-by: Jiufei Xue <xuejiufei@gmail.com>
Link: http://lkml.kernel.org/r/dc694ae2-f07f-61e1-7097-7c8411cee12d@gmail.com
Acked-by: Jan Kara <jack@suse.cz>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2019-01-22 14:39:38 -07:00
..
2018-09-04 11:35:03 +08:00
2018-08-21 23:54:17 -04:00
2018-12-03 15:30:24 -06:00
\n
2018-12-27 17:00:35 -08:00
2018-12-28 13:19:59 -08:00
2018-12-31 09:41:37 -08:00
2018-12-27 17:12:30 -08:00
2018-11-30 14:56:14 -08:00
2018-08-17 16:20:28 -07:00
2018-09-29 22:47:48 -04:00
2019-01-02 16:35:23 -08:00
2018-05-22 14:27:52 -04:00
2019-01-02 16:35:23 -08:00
2019-01-02 16:35:23 -08:00
2018-11-05 14:57:05 -05:00
2018-05-22 14:27:52 -04:00
\n
2018-12-27 17:00:35 -08:00
2018-07-03 16:44:45 -04:00
2018-10-29 14:29:58 -07:00
2018-06-05 19:23:26 +02:00
2018-12-31 09:46:39 -08:00
2018-10-31 08:54:16 -07:00
2018-12-06 17:22:53 +01:00
2018-12-28 20:54:57 -08:00
2018-12-28 12:45:04 -08:00
2018-08-21 18:19:09 -07:00
2018-06-11 08:22:34 -07:00
2018-12-17 07:19:46 -05:00
2018-02-15 15:34:42 -05:00
2018-08-21 18:19:09 -07:00
2018-12-06 17:23:18 +01:00
2018-09-03 15:14:01 +02:00
2018-04-04 12:44:02 -07:00