Skip to content
  • Theodore Ts'o's avatar
    ext4: allow readdir()'s of large empty directories to be interrupted · 1f60fbe7
    Theodore Ts'o authored
    If a directory has a large number of empty blocks, iterating over all
    of them can take a long time, leading to scheduler warnings and users
    getting irritated when they can't kill a process in the middle of one
    of these long-running readdir operations.  Fix this by adding checks to
    ext4_readdir() and ext4_htree_fill_tree().
    
    This was reverted earlier due to a typo in the original commit where I
    experimented with using signal_pending() instead of
    fatal_signal_pending().  The test was in the wrong place if we were
    going to return signal_pending() since we would end up returning
    duplicant entries.  See 9f2394c9
    
     for a more detailed explanation.
    
    Added fix as suggested by Linus to check for signal_pending() in
    in the filldir() functions.
    
    Reported-by: default avatarBenjamin LaHaise <bcrl@kvack.org>
    Google-Bug-Id: 27880676
    Signed-off-by: default avatarTheodore Ts'o <tytso@mit.edu>
    1f60fbe7