OSDN Git Service

Merge android-4.4-p.195 (4af3204) into msm-4.4
[sagit-ice-cold/kernel_xiaomi_msm8998.git] / fs / f2fs / segment.c
index 5ee3d91..8f1af57 100644 (file)
@@ -1573,6 +1573,10 @@ static int __issue_discard_cmd(struct f2fs_sb_info *sbi,
                list_for_each_entry_safe(dc, tmp, pend_list, list) {
                        f2fs_bug_on(sbi, dc->state != D_PREP);
 
+                       if (dpolicy->timeout != 0 &&
+                               f2fs_time_over(sbi, dpolicy->timeout))
+                               break;
+
                        if (dpolicy->io_aware && i < dpolicy->io_aware_gran &&
                                                !is_idle(sbi, DISCARD_TIME)) {
                                io_interrupted = true;
@@ -2895,7 +2899,7 @@ int f2fs_trim_fs(struct f2fs_sb_info *sbi, struct fstrim_range *range)
 
        if (is_sbi_flag_set(sbi, SBI_NEED_FSCK)) {
                f2fs_warn(sbi, "Found FS corruption, run fsck to fix.");
-               return -EIO;
+               return -EFSCORRUPTED;
        }
 
        /* start/end segment number in main_area */
@@ -3321,7 +3325,7 @@ int f2fs_inplace_write_data(struct f2fs_io_info *fio)
                set_sbi_flag(sbi, SBI_NEED_FSCK);
                f2fs_warn(sbi, "%s: incorrect segment(%u) type, run fsck to fix.",
                          __func__, segno);
-               return -EFAULT;
+               return -EFSCORRUPTED;
        }
 
        stat_inc_inplace_blocks(fio->sbi);
@@ -4230,7 +4234,7 @@ static int build_sit_entries(struct f2fs_sb_info *sbi)
                        f2fs_err(sbi, "Wrong journal entry on segno %u",
                                 start);
                        set_sbi_flag(sbi, SBI_NEED_FSCK);
-                       err = -EINVAL;
+                       err = -EFSCORRUPTED;
                        break;
                }
 
@@ -4270,7 +4274,7 @@ static int build_sit_entries(struct f2fs_sb_info *sbi)
                f2fs_err(sbi, "SIT is corrupted node# %u vs %u",
                         total_node_blocks, valid_node_count(sbi));
                set_sbi_flag(sbi, SBI_NEED_FSCK);
-               err = -EINVAL;
+               err = -EFSCORRUPTED;
        }
 
        return err;
@@ -4385,10 +4389,12 @@ static int sanity_check_curseg(struct f2fs_sb_info *sbi)
                                continue;
 out:
                        f2fs_err(sbi,
-                                "Current segment's next free block offset is inconsistent with bitmap, logtype:%u, segno:%u, type:%u, next_blkoff:%u, blkofs:%u",
+                                "Current segment's next free block offset is "
+                                "inconsistent with bitmap, logtype:%u, "
+                                "segno:%u, type:%u, next_blkoff:%u, blkofs:%u",
                                 i, curseg->segno, curseg->alloc_type,
                                 curseg->next_blkoff, blkofs);
-                       return -EINVAL;
+                       return -EFSCORRUPTED;
                }
        }
        return 0;