]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - fs/f2fs/segment.c
Merge tag 'tag-chrome-platform-for-v5.6' of git://git.kernel.org/pub/scm/linux/kernel...
[linux.git] / fs / f2fs / segment.c
index 72cf2574a00d670e74ea8f7d21ce8d0aed0c1754..cf0eb002cfd40ced0bd135ab9593f9d30df68af0 100644 (file)
@@ -504,7 +504,7 @@ void f2fs_balance_fs(struct f2fs_sb_info *sbi, bool need)
         * dir/node pages without enough free segments.
         */
        if (has_not_enough_free_secs(sbi, 0, 0)) {
-               mutex_lock(&sbi->gc_mutex);
+               down_write(&sbi->gc_lock);
                f2fs_gc(sbi, false, false, NULL_SEGNO);
        }
 }
@@ -2860,9 +2860,9 @@ int f2fs_trim_fs(struct f2fs_sb_info *sbi, struct fstrim_range *range)
        if (sbi->discard_blks == 0)
                goto out;
 
-       mutex_lock(&sbi->gc_mutex);
+       down_write(&sbi->gc_lock);
        err = f2fs_write_checkpoint(sbi, &cpc);
-       mutex_unlock(&sbi->gc_mutex);
+       up_write(&sbi->gc_lock);
        if (err)
                goto out;
 
@@ -3289,7 +3289,7 @@ int f2fs_inplace_write_data(struct f2fs_io_info *fio)
 
        stat_inc_inplace_blocks(fio->sbi);
 
-       if (fio->bio)
+       if (fio->bio && !(SM_I(sbi)->ipu_policy & (1 << F2FS_IPU_NOCACHE)))
                err = f2fs_merge_page_bio(fio);
        else
                err = f2fs_submit_page_bio(fio);