• Linus Torvalds's avatar
    Revert "ext4: allow readdir()'s of large empty directories to be interrupted" · 9f2394c9
    Linus Torvalds authored
    This reverts commit 1028b55b.
    
    It's broken: it makes ext4 return an error at an invalid point, causing
    the readdir wrappers to write the the position of the last successful
    directory entry into the position field, which means that the next
    readdir will now return that last successful entry _again_.
    
    You can only return fatal errors (that terminate the readdir directory
    walk) from within the filesystem readdir functions, the "normal" errors
    (that happen when the readdir buffer fills up, for example) happen in
    the iterorator where we know the position of the actual failing entry.
    
    I do have a very different patch that does the "signal_pending()"
    handling inside the iterator function where it is allowable, but while
    that one passes all the sanity checks, I screwed up something like four
    times while emailing it out, so I'm not going to commit it today.
    
    So my track record is not good enough, and the stars will have to align
    better before that one gets committed.  And it would be good to get some
    review too, of course, since celestial alignments are always an iffy
    debugging model.
    
    IOW, let's just revert the commit that caused the problem for now.
    Reported-by: default avatarGreg Thelen <gthelen@google.com>
    Cc: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    9f2394c9
dir.c 16.8 KB