Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

f2fs: refactor f2fs_move_node_folio function

This patch refactor the f2fs_move_node_folio() function. No logical
changes.

Cc: stable@kernel.org
Signed-off-by: Yongpeng Yang <yangyongpeng@xiaomi.com>
Reviewed-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>

authored by

Yongpeng Yang and committed by
Jaegeuk Kim
92c20989 be09d78b

+33 -23
+33 -23
fs/f2fs/node.c
··· 1841 1841 return false; 1842 1842 } 1843 1843 1844 - int f2fs_move_node_folio(struct folio *node_folio, int gc_type) 1844 + static int f2fs_write_single_node_folio(struct folio *node_folio, int sync_mode, 1845 + bool mark_dirty, enum iostat_type io_type) 1845 1846 { 1846 1847 int err = 0; 1848 + struct writeback_control wbc = { 1849 + .sync_mode = WB_SYNC_ALL, 1850 + .nr_to_write = 1, 1851 + }; 1847 1852 1848 - if (gc_type == FG_GC) { 1849 - struct writeback_control wbc = { 1850 - .sync_mode = WB_SYNC_ALL, 1851 - .nr_to_write = 1, 1852 - }; 1853 - 1854 - f2fs_folio_wait_writeback(node_folio, NODE, true, true); 1855 - 1856 - folio_mark_dirty(node_folio); 1857 - 1858 - if (!folio_clear_dirty_for_io(node_folio)) { 1859 - err = -EAGAIN; 1860 - goto out_page; 1861 - } 1862 - 1863 - if (!__write_node_folio(node_folio, false, NULL, 1864 - &wbc, false, FS_GC_NODE_IO, NULL)) 1865 - err = -EAGAIN; 1866 - goto release_page; 1867 - } else { 1853 + if (!sync_mode) { 1868 1854 /* set page dirty and write it */ 1869 1855 if (!folio_test_writeback(node_folio)) 1870 1856 folio_mark_dirty(node_folio); 1857 + goto out_folio; 1871 1858 } 1872 - out_page: 1859 + 1860 + f2fs_folio_wait_writeback(node_folio, NODE, true, true); 1861 + 1862 + if (mark_dirty) 1863 + folio_mark_dirty(node_folio); 1864 + else if (!folio_test_dirty(node_folio)) 1865 + goto out_folio; 1866 + 1867 + if (!folio_clear_dirty_for_io(node_folio)) { 1868 + err = -EAGAIN; 1869 + goto out_folio; 1870 + } 1871 + 1872 + if (!__write_node_folio(node_folio, false, NULL, 1873 + &wbc, false, FS_GC_NODE_IO, NULL)) 1874 + err = -EAGAIN; 1875 + goto release_folio; 1876 + out_folio: 1873 1877 folio_unlock(node_folio); 1874 - release_page: 1878 + release_folio: 1875 1879 f2fs_folio_put(node_folio, false); 1876 1880 return err; 1881 + } 1882 + 1883 + int f2fs_move_node_folio(struct folio *node_folio, int gc_type) 1884 + { 1885 + return f2fs_write_single_node_folio(node_folio, gc_type == FG_GC, 1886 + true, FS_GC_NODE_IO); 1877 1887 } 1878 1888 1879 1889 int f2fs_fsync_node_pages(struct f2fs_sb_info *sbi, struct inode *inode,