diff options
author | NeilBrown <[email protected]> | 2006-06-23 02:05:48 -0700 |
---|---|---|
committer | Linus Torvalds <[email protected]> | 2006-06-23 07:43:07 -0700 |
commit | e0f23603fb2607315ce52432cc4225df410828cf (patch) | |
tree | 7a32b42a64a64488aee0e91ab016d53c353f9482 /net/lapb/lapb_timer.c | |
parent | 57ae2508610d50893cb3e3bbb869ff70ff724a2a (diff) |
[PATCH] Remove semi-softlockup from invalidate_mapping_pages
If invalidate_mapping_pages is called to invalidate a very large mapping
(e.g. a very large block device) and if the only active page in that
device is near the end (or at least, at a very large index), such as, say,
the superblock of an md array, and if that page happens to be locked when
invalidate_mapping_pages is called, then
pagevec_lookup will return this page and
as it is locked, 'next' will be incremented and pagevec_lookup
will be called again. and again. and again.
while we count from 0 upto a very large number.
We should really always set 'next' to 'page->index+1' before going around
the loop again, not just if the page isn't locked.
Cc: "Steinar H. Gunderson" <[email protected]>
Signed-off-by: Neil Brown <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
Diffstat (limited to 'net/lapb/lapb_timer.c')
0 files changed, 0 insertions, 0 deletions