Merge tag 'v3.10.103' into update
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / fs / ext4 / super.c
index 063eb5094a63cf3480c18ec5cf60cb85753e0ab7..dffff7953d9d68028029c649aee1d83f93d6ee6a 100644 (file)
@@ -2153,6 +2153,16 @@ static void ext4_orphan_cleanup(struct super_block *sb,
        while (es->s_last_orphan) {
                struct inode *inode;
 
+               /*
+                * We may have encountered an error during cleanup; if
+                * so, skip the rest.
+                */
+               if (EXT4_SB(sb)->s_mount_state & EXT4_ERROR_FS) {
+                       jbd_debug(1, "Skipping orphan recovery on fs with errors.\n");
+                       es->s_last_orphan = 0;
+                       break;
+               }
+
                inode = ext4_orphan_get(sb, le32_to_cpu(es->s_last_orphan));
                if (IS_ERR(inode)) {
                        es->s_last_orphan = 0;
@@ -2820,6 +2830,7 @@ static int ext4_lazyinit_thread(void *arg)
        unsigned long next_wakeup, cur;
 
        BUG_ON(NULL == eli);
+       set_freezable();
 
 cont_thread:
        while (true) {
@@ -2859,7 +2870,7 @@ cont_thread:
 
                schedule_timeout_interruptible(next_wakeup - cur);
 
-               if (kthread_should_stop()) {
+               if (kthread_freezable_should_stop(NULL)) {
                        ext4_clear_request_list();
                        goto exit_thread;
                }