file.c (04f0b2eaa3b3ee243df6040617b4bfbbc0404854) file.c (dcbb4c10e6d9693cc9d6fa493b4d130b66a60c7d)
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * fs/f2fs/file.c
4 *
5 * Copyright (c) 2012 Samsung Electronics Co., Ltd.
6 * http://www.samsung.com/
7 */
8#include <linux/fs.h>

--- 1823 unchanged lines hidden (view full) ---

1832
1833 down_write(&F2FS_I(inode)->i_gc_rwsem[WRITE]);
1834
1835 /*
1836 * Should wait end_io to count F2FS_WB_CP_DATA correctly by
1837 * f2fs_is_atomic_file.
1838 */
1839 if (get_dirty_pages(inode))
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * fs/f2fs/file.c
4 *
5 * Copyright (c) 2012 Samsung Electronics Co., Ltd.
6 * http://www.samsung.com/
7 */
8#include <linux/fs.h>

--- 1823 unchanged lines hidden (view full) ---

1832
1833 down_write(&F2FS_I(inode)->i_gc_rwsem[WRITE]);
1834
1835 /*
1836 * Should wait end_io to count F2FS_WB_CP_DATA correctly by
1837 * f2fs_is_atomic_file.
1838 */
1839 if (get_dirty_pages(inode))
1840 f2fs_msg(F2FS_I_SB(inode)->sb, KERN_WARNING,
1841 "Unexpected flush for atomic writes: ino=%lu, npages=%u",
1842 inode->i_ino, get_dirty_pages(inode));
1840 f2fs_warn(F2FS_I_SB(inode), "Unexpected flush for atomic writes: ino=%lu, npages=%u",
1841 inode->i_ino, get_dirty_pages(inode));
1843 ret = filemap_write_and_wait_range(inode->i_mapping, 0, LLONG_MAX);
1844 if (ret) {
1845 up_write(&F2FS_I(inode)->i_gc_rwsem[WRITE]);
1846 goto out;
1847 }
1848
1849 set_inode_flag(inode, FI_ATOMIC_FILE);
1850 clear_inode_flag(inode, FI_ATOMIC_REVOKE_REQUEST);

--- 418 unchanged lines hidden (view full) ---

2269
2270 if (!capable(CAP_SYS_ADMIN))
2271 return -EPERM;
2272
2273 if (f2fs_readonly(sbi->sb))
2274 return -EROFS;
2275
2276 if (unlikely(is_sbi_flag_set(sbi, SBI_CP_DISABLED))) {
1842 ret = filemap_write_and_wait_range(inode->i_mapping, 0, LLONG_MAX);
1843 if (ret) {
1844 up_write(&F2FS_I(inode)->i_gc_rwsem[WRITE]);
1845 goto out;
1846 }
1847
1848 set_inode_flag(inode, FI_ATOMIC_FILE);
1849 clear_inode_flag(inode, FI_ATOMIC_REVOKE_REQUEST);

--- 418 unchanged lines hidden (view full) ---

2268
2269 if (!capable(CAP_SYS_ADMIN))
2270 return -EPERM;
2271
2272 if (f2fs_readonly(sbi->sb))
2273 return -EROFS;
2274
2275 if (unlikely(is_sbi_flag_set(sbi, SBI_CP_DISABLED))) {
2277 f2fs_msg(sbi->sb, KERN_INFO,
2278 "Skipping Checkpoint. Checkpoints currently disabled.");
2276 f2fs_info(sbi, "Skipping Checkpoint. Checkpoints currently disabled.");
2279 return -EINVAL;
2280 }
2281
2282 ret = mnt_want_write_file(filp);
2283 if (ret)
2284 return ret;
2285
2286 ret = f2fs_sync_fs(sbi->sb, 1);

--- 368 unchanged lines hidden (view full) ---

2655 return -EINVAL;
2656
2657 if (copy_from_user(&range, (struct f2fs_flush_device __user *)arg,
2658 sizeof(range)))
2659 return -EFAULT;
2660
2661 if (!f2fs_is_multi_device(sbi) || sbi->s_ndevs - 1 <= range.dev_num ||
2662 __is_large_section(sbi)) {
2277 return -EINVAL;
2278 }
2279
2280 ret = mnt_want_write_file(filp);
2281 if (ret)
2282 return ret;
2283
2284 ret = f2fs_sync_fs(sbi->sb, 1);

--- 368 unchanged lines hidden (view full) ---

2653 return -EINVAL;
2654
2655 if (copy_from_user(&range, (struct f2fs_flush_device __user *)arg,
2656 sizeof(range)))
2657 return -EFAULT;
2658
2659 if (!f2fs_is_multi_device(sbi) || sbi->s_ndevs - 1 <= range.dev_num ||
2660 __is_large_section(sbi)) {
2663 f2fs_msg(sbi->sb, KERN_WARNING,
2664 "Can't flush %u in %d for segs_per_sec %u != 1",
2665 range.dev_num, sbi->s_ndevs,
2666 sbi->segs_per_sec);
2661 f2fs_warn(sbi, "Can't flush %u in %d for segs_per_sec %u != 1",
2662 range.dev_num, sbi->s_ndevs, sbi->segs_per_sec);
2667 return -EINVAL;
2668 }
2669
2670 ret = mnt_want_write_file(filp);
2671 if (ret)
2672 return ret;
2673
2674 if (range.dev_num != 0)

--- 268 unchanged lines hidden (view full) ---

2943 struct f2fs_sb_info *sbi = F2FS_I_SB(inode);
2944
2945 /* Use i_gc_failures for normal file as a risk signal. */
2946 if (inc)
2947 f2fs_i_gc_failures_write(inode,
2948 fi->i_gc_failures[GC_FAILURE_PIN] + 1);
2949
2950 if (fi->i_gc_failures[GC_FAILURE_PIN] > sbi->gc_pin_file_threshold) {
2663 return -EINVAL;
2664 }
2665
2666 ret = mnt_want_write_file(filp);
2667 if (ret)
2668 return ret;
2669
2670 if (range.dev_num != 0)

--- 268 unchanged lines hidden (view full) ---

2939 struct f2fs_sb_info *sbi = F2FS_I_SB(inode);
2940
2941 /* Use i_gc_failures for normal file as a risk signal. */
2942 if (inc)
2943 f2fs_i_gc_failures_write(inode,
2944 fi->i_gc_failures[GC_FAILURE_PIN] + 1);
2945
2946 if (fi->i_gc_failures[GC_FAILURE_PIN] > sbi->gc_pin_file_threshold) {
2951 f2fs_msg(sbi->sb, KERN_WARNING,
2952 "%s: Enable GC = ino %lx after %x GC trials",
2953 __func__, inode->i_ino,
2954 fi->i_gc_failures[GC_FAILURE_PIN]);
2947 f2fs_warn(sbi, "%s: Enable GC = ino %lx after %x GC trials",
2948 __func__, inode->i_ino,
2949 fi->i_gc_failures[GC_FAILURE_PIN]);
2955 clear_inode_flag(inode, FI_PIN_FILE);
2956 return -EAGAIN;
2957 }
2958 return 0;
2959}
2960
2961static int f2fs_ioc_set_pin_file(struct file *filp, unsigned long arg)
2962{

--- 317 unchanged lines hidden ---
2950 clear_inode_flag(inode, FI_PIN_FILE);
2951 return -EAGAIN;
2952 }
2953 return 0;
2954}
2955
2956static int f2fs_ioc_set_pin_file(struct file *filp, unsigned long arg)
2957{

--- 317 unchanged lines hidden ---