Brian Behlendorf
74328ee18f
Fix zfs_putpage() lock inversion
...
There exists a lock inversions involving the zfs range lock and the
individual page writeback bits which can result in a deadlock. To
prevent this we must always manipulate the writeback bit while
holding the range lock. The exact deadlock is as follows:
------ Process A ------ ------ Process B ------
zpl_writepages zpl_fallocate
write_cache_pages zpl_fallocate_common
zpl_putpage zfs_space
zfs_putpage (set bit) zfs_freesp
zfs_range_lock (wait on lock) zfs_free_range (take lock)
[has not yet initiated I/O, truncate_inode_pages_range
the bit will not be cleared] wait_on_page_writeback (wait on bit)
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Tim Chase <tim@chase2k.com>
Signed-off-by: Richard Yao <richard.yao@clusterhq.com>
Issue #2976
2014-12-22 09:31:56 -08:00
..
2014-11-19 12:30:39 -05:00
2014-08-01 14:28:05 -07:00
2013-09-04 16:01:24 -07:00
2014-08-01 14:28:05 -07:00
2014-11-17 11:13:45 -08:00
2014-11-17 15:28:59 -08:00
2014-11-17 11:25:48 -08:00
2013-12-18 16:46:35 -08:00
2014-09-04 09:50:45 -07:00
2014-08-06 14:48:41 -07:00
2014-10-21 15:26:50 -07:00
2014-08-06 14:48:41 -07:00
2014-10-21 16:32:11 -07:00
2014-08-06 14:48:41 -07:00
2014-03-04 12:22:24 -08:00
2014-01-23 12:56:33 -08:00
2014-10-21 16:32:11 -07:00
2014-09-08 09:42:39 -07:00
2014-09-23 10:38:45 -07:00
2014-07-29 10:55:29 -07:00
2014-10-21 15:26:58 -07:00
2013-01-08 10:35:43 -08:00
2013-12-18 16:46:35 -08:00
2014-08-06 14:48:41 -07:00
2014-12-19 10:51:24 -08:00
2014-10-23 15:30:32 -07:00
2014-05-06 10:41:46 -07:00
2014-11-17 11:35:38 -08:00
2014-03-07 10:01:36 -08:00
2014-08-01 14:28:05 -07:00
2014-08-20 10:45:16 -07:00
2013-12-18 16:46:35 -08:00
2014-07-01 14:10:47 -07:00
2013-12-18 16:46:35 -08:00
2014-11-17 11:13:55 -08:00
2014-11-14 15:37:45 -08:00
2014-08-18 08:40:49 -07:00
2013-09-04 16:01:24 -07:00
2013-09-25 15:44:22 -07:00
2014-05-19 11:55:50 -07:00
2010-08-31 13:41:59 -07:00
2010-08-31 13:41:58 -07:00
2014-10-17 14:58:57 -07:00
2014-08-06 14:48:41 -07:00
2014-10-17 14:58:57 -07:00
2014-11-17 11:13:55 -08:00
2014-11-17 15:28:59 -08:00
2014-10-20 16:17:49 -07:00
2014-11-17 11:13:45 -08:00
2014-07-22 09:39:16 -07:00
2014-11-17 11:13:55 -08:00
2014-09-23 13:50:55 -07:00
2013-10-31 14:58:04 -07:00
2012-08-27 12:01:37 -07:00
2014-07-28 14:29:58 -07:00
2014-11-19 12:50:49 -05:00
2014-05-19 13:30:48 -07:00
2014-09-23 10:32:45 -07:00
2014-10-17 14:59:05 -07:00
2013-10-31 14:58:04 -07:00
2014-09-23 13:50:55 -07:00
2013-12-06 09:32:43 -08:00
2013-10-31 14:58:04 -07:00
2014-11-14 15:37:45 -08:00
2014-07-30 09:20:35 -07:00
2014-09-08 09:15:38 -07:00
2014-11-17 11:13:45 -08:00
2014-10-20 16:17:49 -07:00
2014-07-28 14:29:58 -07:00
2014-10-21 09:23:27 -07:00
2010-08-31 13:41:58 -07:00
2014-07-29 10:55:29 -07:00
2014-11-17 11:13:55 -08:00
2014-08-11 16:12:36 -07:00
2014-08-20 10:45:16 -07:00
2013-10-30 14:51:27 -07:00
2014-11-19 12:30:39 -05:00
2013-11-23 15:08:29 -08:00
2013-10-31 14:58:04 -07:00
2014-09-05 15:11:43 -07:00
2013-12-18 16:46:35 -08:00
2013-12-18 16:46:35 -08:00
2014-11-17 11:13:45 -08:00
2014-12-22 09:31:56 -08:00
2014-10-22 11:06:53 -07:00
2014-11-14 14:39:43 -08:00
2014-08-01 14:28:05 -07:00
2014-08-01 14:28:05 -07:00
2014-08-06 14:48:41 -07:00
2014-10-23 15:30:32 -07:00
2010-05-28 13:45:14 -07:00
2013-12-18 16:46:35 -08:00
2013-12-18 16:46:35 -08:00
2014-10-20 16:10:25 -07:00
2013-12-18 16:46:35 -08:00
2014-10-17 14:58:50 -07:00
2014-09-05 15:11:43 -07:00
2010-09-17 16:24:15 -07:00
2014-01-14 14:46:12 -08:00