diff options
| author | Andrew Morton <akpm@digeo.com> | 2002-09-09 21:09:04 -0700 |
|---|---|---|
| committer | Linus Torvalds <torvalds@penguin.transmeta.com> | 2002-09-09 21:09:04 -0700 |
| commit | 95b883004339d4b68acd2bc5643984bd6dbb7571 (patch) | |
| tree | 29031738a49f349beeeb1eba9a5496f4f654ab69 /include/linux | |
| parent | 0d8b3b444a5bd3cde29d0670597f54df4ba1affa (diff) | |
[PATCH] writer throttling fix
The patch fixes a few problems in the writer throttling code. Mainly
in the situation where a single large file is being written out.
That file could be parked on sb->locked_inodes due to pdflush
writeback, and the writer throttling path coming out of
balance_dirty_pages() forgot to look for inodes on ->locked_inodes.
The net effect was that the amount of dirty memory was exceeding the
limit set in /proc/sys/vm/dirty_async_ratio, possibly to the point
where the system gets seriously choked.
The patch removes sb->locked_inodes altogether and teaches the
throttling code to look for inodes on sb->s_io as well as sb->s_dirty.
Also, just leave unwritten dirty pages on mapping->io_pages, and
unwritten dirty inodes on sb->s_io. Putting them back onto
->dirty_pages and ->dirty_inodes was fairly pointless, given that both
lists need to be looked at.
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/fs.h | 1 |
1 files changed, 0 insertions, 1 deletions
diff --git a/include/linux/fs.h b/include/linux/fs.h index f67b149a06ee..1b4bf7d463a9 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -660,7 +660,6 @@ struct super_block { struct list_head s_dirty; /* dirty inodes */ struct list_head s_io; /* parked for writeback */ - struct list_head s_locked_inodes;/* inodes being synced */ struct list_head s_anon; /* anonymous dentries for (nfs) exporting */ struct list_head s_files; |
