Konstantin Belousov
b2c3df842b
Handle errors from background write of the cylinder group blocks.
...
First, on the write error, bufdone() call from ffs_backgroundwrite()
panics because pbrelvp() cleared bp->b_bufobj, while brelse() would
try to re-dirty the copy of the cg buffer. Handle this by setting
B_INVAL for the case of BIO_ERROR.
Second, we must re-dirty the real buffer containing the cylinder group
block data when background write failed. Real cg buffer was already
marked clean in ffs_bufwrite(). After the BV_BKGRDINPROG flag is
cleared on the real cg buffer in ffs_backgroundwrite(), buffer scan
may reuse the buffer at any moment. The result is lost write, and if
the write error was only transient, we get corrupted bitmaps.
We cannot re-dirty the original cg buffer in the
ffs_backgroundwritedone(), since the context is not sleepable,
preventing us from sleeping for origbp' lock. Add BV_BKGDERR flag
(protected by the buffer object lock), which is converted into delayed
write by brelse(), bqrelse() and buffer scan.
In collaboration with: Conrad Meyer <cse.cem@gmail.com>
Reviewed by: mckusick
Sponsored by: The FreeBSD Foundation (kib),
EMC/Isilon storage division (Conrad)
MFC after: 2 weeks
2015-06-27 09:44:14 +00:00
..
2014-10-09 05:33:25 +00:00
2015-01-23 21:07:08 +00:00
2015-01-08 21:46:28 +00:00
2015-06-10 10:48:12 +00:00
2015-06-24 15:52:26 +00:00
2015-06-10 10:48:12 +00:00
2015-06-10 10:48:12 +00:00
2014-09-04 21:31:25 +00:00
2015-06-10 10:43:59 +00:00
2015-04-18 21:50:53 +00:00
2013-06-30 19:08:06 +00:00
2014-04-05 16:54:47 +00:00
2015-02-05 01:43:21 +00:00
2015-02-04 14:49:47 +00:00
2015-05-21 16:43:26 +00:00
2015-03-22 13:11:56 +00:00
2015-05-22 17:05:21 +00:00
2014-06-28 03:56:17 +00:00
2015-06-26 04:14:05 +00:00
2015-02-20 20:49:00 +00:00
2015-06-16 09:52:36 +00:00
2014-05-29 01:42:22 +00:00
2015-01-07 01:01:39 +00:00
2014-10-23 18:23:50 +00:00
2015-03-16 19:29:19 +00:00
2015-06-10 10:48:12 +00:00
2015-06-12 11:32:20 +00:00
2015-05-29 13:24:17 +00:00
2015-03-16 19:18:45 +00:00
2014-10-28 12:00:39 +00:00
2015-06-10 10:48:12 +00:00
2015-04-22 14:38:58 +00:00
2013-06-15 10:08:34 +00:00
2015-04-30 15:48:48 +00:00
2015-06-17 13:15:54 +00:00
2013-06-15 06:45:17 +00:00
2015-06-10 10:43:59 +00:00
2015-05-22 11:09:41 +00:00
2014-06-28 03:56:17 +00:00
2015-06-08 18:06:00 +00:00
2015-01-22 11:12:42 +00:00
2015-01-10 06:48:35 +00:00
2013-11-25 07:38:45 +00:00
2015-03-16 00:10:03 +00:00
2015-05-09 20:08:36 +00:00
2015-04-01 12:42:26 +00:00
2015-02-27 16:28:55 +00:00
2014-05-02 07:57:40 +00:00
2015-06-12 10:01:24 +00:00
2014-06-28 03:56:17 +00:00
2014-06-28 03:56:17 +00:00
2015-04-21 10:55:53 +00:00
2014-06-28 03:56:17 +00:00
2015-04-14 14:22:34 +00:00
2014-06-28 03:56:17 +00:00
2015-06-10 10:48:12 +00:00
2015-02-15 08:44:30 +00:00
2015-06-10 10:43:59 +00:00
2015-06-14 08:33:14 +00:00
2013-08-15 20:19:17 +00:00
2015-04-29 10:23:02 +00:00
2015-06-25 00:15:37 +00:00
2014-12-13 21:00:10 +00:00
2015-06-12 10:01:24 +00:00
2014-02-22 01:41:45 +00:00
2013-08-22 07:39:53 +00:00
2015-05-19 16:23:47 +00:00
2015-06-10 10:48:12 +00:00
2015-01-22 11:12:42 +00:00
2015-06-12 10:01:24 +00:00
2015-05-29 13:24:17 +00:00
2015-06-10 10:48:12 +00:00
2015-03-25 08:55:34 +00:00
2015-06-11 04:41:54 +00:00
2015-06-10 10:43:59 +00:00
2015-06-10 10:48:12 +00:00
2015-01-11 20:48:29 +00:00
2015-04-14 00:02:39 +00:00
2015-03-28 21:21:40 +00:00
2014-02-13 22:24:36 +00:00
2015-04-22 14:38:58 +00:00
2015-04-22 14:38:58 +00:00
2014-03-14 06:29:43 +00:00
2013-12-15 23:19:42 +00:00
2015-05-24 14:44:06 +00:00
2015-04-29 10:23:02 +00:00
2015-03-14 18:42:30 +00:00
2015-06-16 20:19:00 +00:00
2013-10-27 21:39:16 +00:00
2015-04-15 16:22:05 +00:00
2015-04-01 12:42:26 +00:00
2014-06-26 13:57:44 +00:00
2014-12-12 09:37:18 +00:00
2014-02-10 19:59:46 +00:00
2014-10-21 07:31:21 +00:00
2015-04-29 22:57:04 +00:00
2015-01-20 03:54:30 +00:00
2014-12-21 05:07:11 +00:00
2015-02-06 16:09:01 +00:00
2014-10-21 07:31:21 +00:00
2014-12-13 21:00:10 +00:00
2014-07-11 13:58:48 +00:00
2014-12-30 02:39:47 +00:00
2014-06-28 03:56:17 +00:00
2015-05-20 17:48:22 +00:00
2015-05-20 17:47:01 +00:00
2015-04-30 15:48:48 +00:00
2014-02-10 19:59:46 +00:00
2015-06-09 21:39:38 +00:00
2014-11-26 14:10:00 +00:00
2014-07-16 22:18:19 +00:00
2015-03-17 21:00:31 +00:00
2014-08-11 15:06:07 +00:00
2015-01-26 16:26:28 +00:00
2015-01-22 11:12:42 +00:00
2014-06-28 03:56:17 +00:00
2015-06-10 10:43:59 +00:00
2015-05-26 01:40:33 +00:00
2014-11-01 17:05:15 +00:00
2015-06-10 10:43:59 +00:00
2015-05-21 15:16:18 +00:00
2015-06-10 10:48:12 +00:00
2013-08-30 07:37:45 +00:00
2015-05-22 17:05:21 +00:00
2015-06-07 18:59:47 +00:00
2015-03-16 00:10:03 +00:00
2015-04-18 21:50:13 +00:00
2015-04-11 15:40:28 +00:00
2014-09-22 16:20:47 +00:00
2015-06-02 18:37:04 +00:00
2014-11-12 09:57:15 +00:00
2015-04-18 21:50:53 +00:00
2015-04-18 21:50:13 +00:00
2015-04-18 21:50:53 +00:00
2015-04-29 10:23:02 +00:00
2015-04-29 10:23:02 +00:00
2015-06-10 10:48:12 +00:00
2015-06-10 10:48:12 +00:00
2015-02-17 23:54:06 +00:00
2014-07-26 19:27:34 +00:00
2014-11-30 12:52:33 +00:00
2015-05-22 17:05:21 +00:00
2015-01-09 12:08:51 +00:00
2015-05-07 18:35:01 +00:00
2015-03-17 14:16:50 +00:00
2015-04-11 15:40:28 +00:00
2015-04-11 15:40:28 +00:00
2015-06-12 11:32:20 +00:00
2015-06-10 10:48:12 +00:00
2015-02-23 15:24:43 +00:00
2015-06-12 11:32:20 +00:00
2015-06-14 14:08:52 +00:00
2015-06-16 13:09:18 +00:00
2015-04-22 18:11:34 +00:00
2015-06-27 09:44:14 +00:00
2015-04-21 13:55:24 +00:00
2015-05-29 13:24:17 +00:00
2014-12-25 14:44:04 +00:00
2014-11-06 12:19:39 +00:00
2015-06-16 13:09:18 +00:00
2014-12-30 21:40:45 +00:00
2015-05-29 13:24:17 +00:00
2014-11-02 13:10:31 +00:00
2015-05-27 09:22:50 +00:00
2014-11-13 18:01:51 +00:00
2015-06-23 18:40:20 +00:00
2015-06-16 13:09:18 +00:00
2015-06-10 10:48:12 +00:00
2015-03-30 22:49:26 +00:00