ext4: eliminate sleep from shutdown ioctl
authorTheodore Ts'o <tytso@mit.edu>
Mon, 19 Feb 2018 04:16:28 +0000 (23:16 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 24 Apr 2018 07:36:30 +0000 (09:36 +0200)
commit a6d9946bb925293fda9f5ed6d33d8580b001f006 upstream.

The msleep() when processing EXT4_GOING_FLAGS_NOLOGFLUSH was a hack to
avoid some races (that are now fixed), but in fact it introduced its
own race.

Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Cc: stable@vger.kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/ext4/ioctl.c

index d97f40396765f9101fd7d37feb4556473c789478..7f889b1e4db0f62b7a590ea7de62a23d1f5cc9e7 100644 (file)
@@ -498,10 +498,8 @@ static int ext4_shutdown(struct super_block *sb, unsigned long arg)
                break;
        case EXT4_GOING_FLAGS_NOLOGFLUSH:
                set_bit(EXT4_FLAGS_SHUTDOWN, &sbi->s_ext4_flags);
-               if (sbi->s_journal && !is_journal_aborted(sbi->s_journal)) {
-                       msleep(100);
+               if (sbi->s_journal && !is_journal_aborted(sbi->s_journal))
                        jbd2_journal_abort(sbi->s_journal, 0);
-               }
                break;
        default:
                return -EINVAL;