Poul-Henning Kamp
7a6b2b6429
Fix a long-standing deadlock issue with vnode backed md(4) devices:
...
On vnode backed md(4) devices over a certain, currently undetermined
size relative to the buffer cache our "lemming-syncer" can provoke
a buffer starvation which puts the md thread to sleep on wdrain.
This generally tends to grind the entire system to a stop because the
event that is supposed to wake up the thread will not happen until a fair
bit of the piled up I/O requests in the system finish, and since a lot
of those are on a md(4) vnode backed device which is currently waiting
on wdrain until a fair amount of the piled up ... you get the picture.
The cure is to issue all VOP_WRITES on the vnode backing the device
with IO_SYNC.
In addition to more closely emulating a real disk device with a
non-lying write-cache, this makes the writes exempt from rate-limited
(there to avoid starving the buffer cache) and consequently prevents
the deadlock.
Unfortunately performance takes a hit.
Add "async" option to give people who know what they are doing the
old behaviour.
2004-03-10 20:41:09 +00:00
..
2003-02-26 20:16:58 +00:00
2004-02-22 00:33:12 +00:00
2004-01-25 01:59:27 +00:00
2004-03-05 08:10:19 +00:00
2004-02-03 22:27:03 +00:00
2002-10-25 19:10:58 +00:00
2004-01-23 20:44:26 +00:00
2003-02-26 16:50:01 +00:00
2002-12-31 04:08:41 +00:00
2003-03-28 15:27:30 +00:00
2004-02-07 17:40:38 +00:00
2003-03-28 15:27:30 +00:00
2003-08-04 02:13:05 +00:00
2003-10-23 18:08:56 +00:00
2003-06-22 22:28:56 +00:00
2003-09-08 08:30:43 +00:00
2004-01-28 08:39:18 +00:00
2003-06-13 19:40:13 +00:00
2003-08-12 23:24:05 +00:00
2003-11-15 09:28:09 +00:00
2003-11-07 23:29:42 +00:00
2003-10-24 22:41:54 +00:00
2003-10-31 05:42:53 +00:00
2003-10-20 09:29:40 +00:00
2002-10-18 22:03:39 +00:00
2003-05-31 16:54:37 +00:00
2004-02-27 18:52:44 +00:00
2004-02-21 21:57:26 +00:00
2004-02-05 17:35:28 +00:00
2002-08-19 16:32:09 +00:00
2003-12-31 22:27:51 +00:00
2002-11-27 18:09:20 +00:00
2003-05-31 21:10:01 +00:00
2002-09-10 18:12:16 +00:00
2003-04-01 18:55:04 +00:00
2003-06-07 09:06:39 +00:00
2003-04-13 21:52:22 +00:00
2003-05-01 14:40:16 +00:00
2003-05-07 15:26:43 +00:00
2003-10-17 15:46:31 +00:00
2003-06-18 16:38:22 +00:00
2002-07-20 02:56:12 +00:00
2003-10-15 20:05:57 +00:00
2002-10-07 06:25:26 +00:00
2003-02-02 19:39:51 +00:00
2004-03-01 22:36:58 +00:00
2003-11-07 21:25:54 +00:00
2003-06-04 04:04:24 +00:00
2003-06-18 17:49:52 +00:00
2003-06-20 07:59:59 +00:00
2003-06-22 08:41:43 +00:00
2004-03-04 11:35:30 +00:00
2002-11-10 20:13:58 +00:00
2003-12-08 08:32:20 +00:00
2002-09-05 07:54:03 +00:00
2003-12-23 02:42:39 +00:00
2002-11-05 17:51:56 +00:00
2003-11-17 06:08:10 +00:00
2003-01-13 23:04:32 +00:00
2004-02-14 18:31:11 +00:00
2003-03-25 01:47:29 +00:00
2004-03-10 09:23:27 +00:00
2002-10-20 17:03:15 +00:00
2003-10-16 09:16:28 +00:00
2003-12-24 00:51:30 +00:00
2002-10-02 07:44:29 +00:00
2003-03-11 20:07:22 +00:00
2003-06-09 17:38:32 +00:00
2004-02-16 21:31:14 +00:00
2004-02-26 03:53:54 +00:00
2004-02-21 21:57:26 +00:00
2002-08-22 20:35:23 +00:00
2003-02-13 17:47:44 +00:00
2002-09-23 06:11:29 +00:00
2003-05-01 03:31:18 +00:00
2004-01-28 20:39:57 +00:00
2003-02-25 03:37:48 +00:00
2004-02-26 20:44:50 +00:00
2004-02-22 12:31:44 +00:00
2003-08-19 16:41:12 +00:00
2003-07-15 08:59:38 +00:00
2004-02-26 03:53:54 +00:00
2003-02-21 16:24:49 +00:00
2004-03-10 20:41:09 +00:00
2002-09-15 15:07:55 +00:00
2003-08-11 07:14:08 +00:00
2004-02-02 18:24:29 +00:00
2003-01-26 20:09:34 +00:00
2004-02-18 02:56:14 +00:00
2004-03-01 22:37:01 +00:00
2003-08-07 15:04:27 +00:00
2002-09-05 08:03:02 +00:00
2004-03-10 19:47:57 +00:00
2004-03-09 03:37:21 +00:00
2002-08-04 01:07:02 +00:00
2004-02-01 05:56:51 +00:00
2002-07-10 04:47:25 +00:00
2003-02-19 05:47:46 +00:00
2002-07-15 14:06:03 +00:00
2004-02-27 18:52:44 +00:00
2003-11-18 00:39:07 +00:00
2003-10-09 10:17:16 +00:00
2003-08-14 14:49:26 +00:00
2002-10-04 20:34:08 +00:00
2003-11-15 10:04:06 +00:00
2004-02-04 21:52:57 +00:00
2004-02-06 19:35:14 +00:00
2003-02-12 07:00:59 +00:00
2002-10-04 09:58:17 +00:00
2004-02-27 18:52:44 +00:00
2002-12-31 04:13:50 +00:00
2003-11-09 09:17:26 +00:00
2003-06-02 17:23:37 +00:00
2004-02-03 22:27:03 +00:00
2003-12-28 09:10:51 +00:00
2003-01-25 21:33:05 +00:00
2003-01-01 01:56:19 +00:00
2003-03-31 23:31:50 +00:00
2003-11-10 03:11:08 +00:00
2004-02-27 18:33:09 +00:00
2003-12-03 14:57:26 +00:00
2002-11-11 10:45:31 +00:00
2004-02-08 07:35:48 +00:00
2004-03-01 03:14:23 +00:00
2004-02-04 02:54:25 +00:00
2003-11-22 03:27:09 +00:00
2003-05-22 17:07:57 +00:00
2002-08-21 16:20:02 +00:00
2003-12-07 21:10:06 +00:00
2002-08-21 16:20:02 +00:00
2003-04-23 08:04:30 +00:00
2004-02-04 14:18:21 +00:00
2004-02-03 05:11:31 +00:00
2004-02-03 05:11:31 +00:00
2003-11-05 01:53:10 +00:00
2004-02-27 17:13:23 +00:00
2003-09-25 01:10:26 +00:00
2003-09-10 19:08:16 +00:00
2002-08-21 16:20:02 +00:00
2004-02-03 05:11:31 +00:00
2004-02-27 18:52:44 +00:00
2004-01-23 20:44:26 +00:00
2003-04-01 00:30:30 +00:00
2004-02-29 10:55:15 +00:00
2003-11-23 18:52:23 +00:00
2002-08-21 16:20:02 +00:00
2002-08-21 16:20:02 +00:00
2003-08-16 08:23:53 +00:00
2003-06-22 02:54:33 +00:00
2004-02-04 17:08:46 +00:00
2004-02-27 16:14:27 +00:00
2003-03-28 15:27:30 +00:00
2003-11-09 20:31:04 +00:00
2003-11-12 15:07:18 +00:00
2004-02-08 03:19:08 +00:00
2003-12-23 02:36:43 +00:00
2002-08-21 16:20:02 +00:00
2002-10-27 18:03:02 +00:00
2003-02-06 01:34:43 +00:00
2004-01-22 06:56:00 +00:00
2003-05-31 16:47:07 +00:00
2003-02-02 07:16:40 +00:00
2004-01-05 18:04:02 +00:00
2004-02-28 20:06:59 +00:00