• NeilBrown's avatar
    [PATCH] Remove semi-softlockup from invalidate_mapping_pages · e0f23603
    NeilBrown authored
    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" <sgunderson@bigfoot.com>
    Signed-off-by: default avatarNeil Brown <neilb@suse.de>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
truncate.c 9.66 KB