• Harshad Shirwadkar's avatar
    ext4: fix a race in the ext4 shutdown path · abbc3f93
    Harshad Shirwadkar authored
    This patch fixes a race between the shutdown path and bio completion
    handling. In the ext4 direct io path with async io, after submitting a
    bio to the block layer, if journal starting fails,
    ext4_direct_IO_write() would bail out pretending that the IO
    failed. The caller would have had no way of knowing whether or not the
    IO was successfully submitted. So instead, we return -EIOCBQUEUED in
    this case. Now, the caller knows that the IO was submitted.  The bio
    completion handler takes care of the error.
    
    Tested: Ran the shutdown xfstest test 461 in loop for over 2 hours across
    4 machines resulting in over 400 runs. Verified that the race didn't
    occur. Usually the race was seen in about 20-30 iterations.
    Signed-off-by: default avatarHarshad Shirwadkar <harshads@google.com>
    Signed-off-by: default avatarTheodore Ts'o <tytso@mit.edu>
    Cc: stable@vger.kernel.org
    abbc3f93
inode.c 177 KB