]> git.baikalelectronics.ru Git - kernel.git/commit
writeback: permit through good bdi even when global dirty exceeded
authorWu Fengguang <fengguang.wu@intel.com>
Fri, 2 Dec 2011 16:21:33 +0000 (10:21 -0600)
committerWu Fengguang <fengguang.wu@intel.com>
Thu, 8 Dec 2011 02:49:27 +0000 (10:49 +0800)
commit214cf24e5addb94f119593d2c518953ccff94f9f
treee31d6d748b347314d7ef64fac8f14acc36dfb701
parent10b05a138318be06e1635c64e675450ac5f62a8e
writeback: permit through good bdi even when global dirty exceeded

On a system with 1 local mount and 1 NFS mount, if the NFS server
becomes not responding when dd to the NFS mount, the NFS dirty pages may
exceed the global dirty limit and _every_ task involving writing will be
blocked. The whole system appears unresponsive.

The workaround is to permit through the bdi's that only has a small
number of dirty pages. The number chosen (bdi_stat_error pages) is not
enough to enable the local disk to run in optimal throughput, however is
enough to make the system responsive on a broken NFS mount. The user can
then kill the dirtiers on the NFS mount and increase the global dirty
limit to bring up the local disk's throughput.

It risks allowing dirty pages to grow much larger than the global dirty
limit when there are 1000+ mounts, however that's very unlikely to happen,
especially in low memory profiles.

Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
mm/page-writeback.c