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

btrfs: utilize folio more in btrfs_page_mkwrite()

We already have a folio that we're using in btrfs_page_mkwrite, update
the rest of the function to use folio everywhere else. This will make
it easier on Willy when he drops page->index.

Signed-off-by: Josef Bacik <josef@toxicpanda.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>

authored by

Josef Bacik and committed by
David Sterba
7e755aa7 c808c1dc

+12 -12
+12 -12
fs/btrfs/file.c
··· 1920 1920 reserved_space = PAGE_SIZE; 1921 1921 1922 1922 sb_start_pagefault(inode->i_sb); 1923 - page_start = page_offset(page); 1924 - page_end = page_start + PAGE_SIZE - 1; 1923 + page_start = folio_pos(folio); 1924 + page_end = page_start + folio_size(folio) - 1; 1925 1925 end = page_end; 1926 1926 1927 1927 /* ··· 1949 1949 ret = VM_FAULT_NOPAGE; 1950 1950 again: 1951 1951 down_read(&BTRFS_I(inode)->i_mmap_lock); 1952 - lock_page(page); 1952 + folio_lock(folio); 1953 1953 size = i_size_read(inode); 1954 1954 1955 - if ((page->mapping != inode->i_mapping) || 1955 + if ((folio->mapping != inode->i_mapping) || 1956 1956 (page_start >= size)) { 1957 1957 /* Page got truncated out from underneath us. */ 1958 1958 goto out_unlock; 1959 1959 } 1960 - wait_on_page_writeback(page); 1960 + folio_wait_writeback(folio); 1961 1961 1962 1962 lock_extent(io_tree, page_start, page_end, &cached_state); 1963 - ret2 = set_page_extent_mapped(page); 1963 + ret2 = set_folio_extent_mapped(folio); 1964 1964 if (ret2 < 0) { 1965 1965 ret = vmf_error(ret2); 1966 1966 unlock_extent(io_tree, page_start, page_end, &cached_state); ··· 1974 1974 ordered = btrfs_lookup_ordered_range(BTRFS_I(inode), page_start, PAGE_SIZE); 1975 1975 if (ordered) { 1976 1976 unlock_extent(io_tree, page_start, page_end, &cached_state); 1977 - unlock_page(page); 1977 + folio_unlock(folio); 1978 1978 up_read(&BTRFS_I(inode)->i_mmap_lock); 1979 1979 btrfs_start_ordered_extent(ordered); 1980 1980 btrfs_put_ordered_extent(ordered); 1981 1981 goto again; 1982 1982 } 1983 1983 1984 - if (page->index == ((size - 1) >> PAGE_SHIFT)) { 1984 + if (folio->index == ((size - 1) >> PAGE_SHIFT)) { 1985 1985 reserved_space = round_up(size - page_start, fs_info->sectorsize); 1986 1986 if (reserved_space < PAGE_SIZE) { 1987 1987 end = page_start + reserved_space - 1; ··· 2011 2011 } 2012 2012 2013 2013 /* Page is wholly or partially inside EOF. */ 2014 - if (page_start + PAGE_SIZE > size) 2015 - zero_start = offset_in_page(size); 2014 + if (page_start + folio_size(folio) > size) 2015 + zero_start = offset_in_folio(folio, size); 2016 2016 else 2017 2017 zero_start = PAGE_SIZE; 2018 2018 2019 2019 if (zero_start != PAGE_SIZE) 2020 - memzero_page(page, zero_start, PAGE_SIZE - zero_start); 2020 + folio_zero_range(folio, zero_start, folio_size(folio) - zero_start); 2021 2021 2022 2022 btrfs_folio_clear_checked(fs_info, folio, page_start, PAGE_SIZE); 2023 2023 btrfs_folio_set_dirty(fs_info, folio, page_start, end + 1 - page_start); ··· 2034 2034 return VM_FAULT_LOCKED; 2035 2035 2036 2036 out_unlock: 2037 - unlock_page(page); 2037 + folio_unlock(folio); 2038 2038 up_read(&BTRFS_I(inode)->i_mmap_lock); 2039 2039 out: 2040 2040 btrfs_delalloc_release_extents(BTRFS_I(inode), PAGE_SIZE);