]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - fs/ext4/ioctl.c
ext4: remove EXT4_STATE_DIOREAD_LOCK flag
[linux.git] / fs / ext4 / ioctl.c
index 7e99ad02f1baaca241a2d04c5b01d6d9eba7a12f..a7074115d6f68a6d552660c82af91f6009ee510f 100644 (file)
@@ -124,8 +124,6 @@ static long swap_inode_boot_loader(struct super_block *sb,
        truncate_inode_pages(&inode_bl->i_data, 0);
 
        /* Wait for all existing dio workers */
-       ext4_inode_block_unlocked_dio(inode);
-       ext4_inode_block_unlocked_dio(inode_bl);
        inode_dio_wait(inode);
        inode_dio_wait(inode_bl);
 
@@ -186,8 +184,6 @@ static long swap_inode_boot_loader(struct super_block *sb,
        ext4_double_up_write_data_sem(inode, inode_bl);
 
 journal_err_out:
-       ext4_inode_resume_unlocked_dio(inode);
-       ext4_inode_resume_unlocked_dio(inode_bl);
        unlock_two_nondirectories(inode, inode_bl);
        iput(inode_bl);
        return err;
@@ -481,6 +477,7 @@ static int ext4_shutdown(struct super_block *sb, unsigned long arg)
                return 0;
 
        ext4_msg(sb, KERN_ALERT, "shut down requested (%d)", flags);
+       trace_ext4_shutdown(sb, flags);
 
        switch (flags) {
        case EXT4_GOING_FLAGS_DEFAULT:
@@ -492,15 +489,13 @@ static int ext4_shutdown(struct super_block *sb, unsigned long arg)
                set_bit(EXT4_FLAGS_SHUTDOWN, &sbi->s_ext4_flags);
                if (sbi->s_journal && !is_journal_aborted(sbi->s_journal)) {
                        (void) ext4_force_commit(sb);
-                       jbd2_journal_abort(sbi->s_journal, 0);
+                       jbd2_journal_abort(sbi->s_journal, -ESHUTDOWN);
                }
                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);
-                       jbd2_journal_abort(sbi->s_journal, 0);
-               }
+               if (sbi->s_journal && !is_journal_aborted(sbi->s_journal))
+                       jbd2_journal_abort(sbi->s_journal, -ESHUTDOWN);
                break;
        default:
                return -EINVAL;