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
..
2004-01-21 21:31:19 +00:00
2003-06-08 12:40:50 +00:00
2004-01-11 09:11:10 +00:00
2004-02-23 20:25:27 +00:00
2004-02-23 20:25:27 +00:00
2004-02-23 20:25:27 +00:00
2004-02-23 20:25:27 +00:00
2004-02-23 20:25:27 +00:00
2004-02-23 20:25:27 +00:00
2004-02-23 20:25:27 +00:00
2004-02-23 20:25:27 +00:00
2004-02-23 20:25:27 +00:00
2004-03-03 20:21:15 +00:00
2004-02-23 20:25:27 +00:00
2004-02-23 20:25:27 +00:00
2004-02-23 20:25:27 +00:00
2004-02-23 20:25:27 +00:00
2004-02-23 20:25:27 +00:00
2004-02-23 20:25:27 +00:00
2004-02-23 20:25:27 +00:00
2004-02-23 20:25:27 +00:00
2004-01-27 19:28:13 +00:00
2004-03-04 00:52:16 +00:00
2004-02-23 20:25:27 +00:00
2004-02-23 20:25:27 +00:00
2004-02-23 20:25:27 +00:00
2004-02-23 20:25:27 +00:00
2004-02-23 20:25:27 +00:00
2004-02-23 20:25:27 +00:00
2004-02-23 20:25:27 +00:00
2004-02-23 20:25:27 +00:00
2004-02-23 20:25:27 +00:00
2004-02-23 20:25:27 +00:00
2004-02-23 20:25:27 +00:00
2004-02-23 20:25:27 +00:00
2003-08-12 20:01:10 +00:00
2004-02-23 20:25:27 +00:00
2004-02-23 20:25:27 +00:00
2004-02-23 20:25:27 +00:00
2004-02-23 20:25:27 +00:00
2004-02-23 20:25:27 +00:00
2004-02-23 20:25:27 +00:00
2004-02-23 20:25:27 +00:00
2004-02-23 20:25:27 +00:00
2004-01-21 13:24:38 +00:00
2003-05-05 22:49:23 +00:00
2004-02-23 20:25:27 +00:00
2004-02-23 20:25:27 +00:00
2004-02-01 13:09:26 +00:00
2004-03-04 00:52:16 +00:00
2004-02-23 20:25:27 +00:00
2004-03-08 22:03:29 +00:00