Theodore Ts'o
b90197b655
ext4: use private version of page_zero_new_buffers() for data=journal mode
...
If there is a error while copying data from userspace into the page
cache during a write(2) system call, in data=journal mode, in
ext4_journalled_write_end() were using page_zero_new_buffers() from
fs/buffer.c. Unfortunately, this sets the buffer dirty flag, which is
no good if journalling is enabled. This is a long-standing bug that
goes back for years and years in ext3, but a combination of (a)
data=journal not being very common, (b) in many case it only results
in a warning message. and (c) only very rarely causes the kernel hang,
means that we only really noticed this as a problem when commit
998ef75ddb caused this failure to happen frequently enough to cause
generic/208 to fail when run in data=journal mode.
The fix is to have our own version of this function that doesn't call
mark_dirty_buffer(), since we will end up calling
ext4_handle_dirty_metadata() on the buffer head(s) in questions very
shortly afterwards in ext4_journalled_write_end().
Thanks to Dave Hansen and Linus Torvalds for helping to identify the
root cause of the problem.
Signed-off-by: Theodore Ts'o <tytso@mit.edu >
Reviewed-by: Jan Kara <jack@suse.com >
2015-10-15 10:29:05 -04:00
..
2015-08-23 14:21:36 -05:00
2015-06-30 19:44:57 -07:00
2015-09-10 13:29:01 -07:00
2015-05-11 10:50:17 -04:00
2015-06-23 18:02:01 -04:00
2015-07-04 19:36:06 -07:00
2015-04-26 17:22:07 -07:00
2015-09-11 12:38:25 -07:00
2015-06-23 18:01:30 -04:00
2015-09-11 12:33:03 -07:00
2015-09-11 19:37:06 -05:00
2015-09-10 13:29:01 -07:00
2015-07-17 16:39:53 -07:00
2014-08-08 15:57:25 -07:00
2015-07-20 18:44:50 +01:00
2015-06-30 19:44:58 -07:00
2015-09-03 12:57:48 -07:00
2015-09-08 11:26:17 -07:00
2015-05-06 10:57:37 -07:00
2015-06-25 17:00:42 -07:00
2015-06-23 18:02:00 -04:00
2015-02-22 11:38:41 -05:00
2015-09-08 15:35:28 -07:00
2015-10-15 10:29:05 -04:00
2015-09-03 13:10:22 -07:00
2015-06-02 08:33:34 -06:00
2015-08-07 13:59:24 +02:00
2015-04-02 14:28:53 +01:00
2015-08-16 12:35:44 -07:00
2015-09-11 12:23:51 -07:00
2015-09-10 13:29:01 -07:00
2015-09-10 13:29:01 -07:00
2015-09-04 16:54:41 -07:00
2015-09-03 11:55:30 -07:00
2015-09-08 15:35:28 -07:00
2015-04-15 15:06:57 -04:00
2015-08-04 11:21:52 -04:00
2015-07-04 19:36:06 -07:00
2015-09-03 12:28:30 -07:00
2015-08-18 15:49:15 -07:00
2015-08-13 10:22:06 -04:00
2015-08-13 12:32:04 -06:00
2015-07-04 19:36:06 -07:00
2015-06-14 11:31:39 -04:00
2015-09-07 14:02:24 -07:00
2015-08-13 10:22:06 -04:00
2015-09-07 14:02:24 -07:00
2015-08-13 12:32:04 -06:00
2015-09-05 20:34:28 -07:00
2015-09-04 16:54:41 -07:00
2015-09-11 15:21:34 -07:00
2015-05-28 18:25:19 -07:00
2015-09-04 16:54:41 -07:00
2015-09-10 13:29:01 -07:00
2015-07-03 15:20:57 -07:00
2015-06-23 18:02:00 -04:00
2015-09-05 20:34:28 -07:00
2015-04-15 15:06:57 -04:00
2015-09-04 16:54:41 -07:00
2015-04-11 22:29:40 -04:00
2015-06-23 18:01:59 -04:00
2015-07-10 10:39:25 -05:00
2015-06-23 18:02:00 -04:00
2015-07-04 19:36:06 -07:00
2015-06-25 14:11:34 -07:00
2015-08-20 14:58:35 +02:00
2015-09-09 10:43:12 -07:00
2015-09-08 15:35:28 -07:00
2015-09-04 16:54:41 -07:00
2014-06-10 13:57:22 -07:00
2015-02-20 04:03:58 -05:00
2014-11-19 13:01:20 -05:00
2014-10-09 02:39:00 -04:00
2015-07-04 19:36:06 -07:00
2014-12-13 12:42:51 -08:00
2014-06-04 16:54:21 -07:00
2015-04-26 17:22:07 -07:00
2014-12-13 12:42:51 -08:00
2015-09-15 20:08:05 -04:00
2015-08-13 12:32:00 -06:00
2015-08-05 13:49:35 -07:00
2015-07-09 11:42:21 -07:00
2014-10-31 17:48:54 -04:00
2015-09-10 13:29:01 -07:00
2015-09-15 20:07:35 -04:00
2015-08-21 02:34:37 -04:00
2015-08-13 12:32:04 -06:00
2015-08-17 18:39:46 -04:00
2015-02-17 14:34:52 -08:00
2015-02-13 21:21:40 -08:00
2015-07-10 10:39:25 -05:00
2015-01-08 15:10:52 -08:00
2015-06-02 10:29:07 -07:00
2015-08-07 04:39:40 +03:00
2015-07-01 02:31:08 -04:00
2015-04-09 11:39:55 -05:00
2015-09-19 18:50:19 -07:00
2015-08-18 10:20:09 -07:00
2015-08-17 23:38:10 -04:00
2015-02-10 14:30:30 -08:00
2015-07-23 20:59:40 +02:00
2015-04-14 16:49:05 -07:00
2015-08-12 15:28:45 -05:00
2015-08-31 16:27:25 -04:00
2015-09-04 16:54:41 -07:00
2014-06-25 22:08:29 -04:00
2015-06-30 19:44:56 -07:00
2015-08-13 12:32:04 -06:00
2015-09-10 13:29:01 -07:00
2015-09-01 16:13:25 -07:00
2015-09-11 15:21:34 -07:00
2015-07-10 10:39:25 -05:00
2015-04-15 15:06:58 -04:00
2015-04-02 20:34:20 -05:00
2015-07-22 20:33:27 -05:00
2015-06-23 18:01:07 -04:00
2015-06-30 19:44:56 -07:00
2015-04-11 22:29:46 -04:00
2014-10-31 17:48:54 -04:00
2015-05-19 08:32:00 +02:00
2015-09-11 15:21:34 -07:00
2015-08-07 04:39:40 +03:00
2015-06-24 20:47:21 -07:00
2014-08-26 09:35:56 +02:00
2015-04-15 15:06:59 -04:00
2015-08-21 02:31:20 -04:00
2015-02-05 02:45:00 -05:00
2014-11-05 14:13:23 -05:00
2015-09-17 21:16:07 -07:00
2015-05-21 13:28:47 -04:00