@@ -1782,6 +1782,7 @@ static vm_fault_t btrfs_page_mkwrite(struct vm_fault *vmf)
1782
1782
struct extent_changeset * data_reserved = NULL ;
1783
1783
unsigned long zero_start ;
1784
1784
loff_t size ;
1785
+ size_t fsize = folio_size (folio );
1785
1786
vm_fault_t ret ;
1786
1787
int ret2 ;
1787
1788
int reserved = 0 ;
@@ -1792,7 +1793,7 @@ static vm_fault_t btrfs_page_mkwrite(struct vm_fault *vmf)
1792
1793
1793
1794
ASSERT (folio_order (folio ) == 0 );
1794
1795
1795
- reserved_space = PAGE_SIZE ;
1796
+ reserved_space = fsize ;
1796
1797
1797
1798
sb_start_pagefault (inode -> i_sb );
1798
1799
page_start = folio_pos (folio );
@@ -1846,7 +1847,7 @@ static vm_fault_t btrfs_page_mkwrite(struct vm_fault *vmf)
1846
1847
* We can't set the delalloc bits if there are pending ordered
1847
1848
* extents. Drop our locks and wait for them to finish.
1848
1849
*/
1849
- ordered = btrfs_lookup_ordered_range (BTRFS_I (inode ), page_start , PAGE_SIZE );
1850
+ ordered = btrfs_lookup_ordered_range (BTRFS_I (inode ), page_start , fsize );
1850
1851
if (ordered ) {
1851
1852
unlock_extent (io_tree , page_start , page_end , & cached_state );
1852
1853
folio_unlock (folio );
@@ -1858,11 +1859,11 @@ static vm_fault_t btrfs_page_mkwrite(struct vm_fault *vmf)
1858
1859
1859
1860
if (folio -> index == ((size - 1 ) >> PAGE_SHIFT )) {
1860
1861
reserved_space = round_up (size - page_start , fs_info -> sectorsize );
1861
- if (reserved_space < PAGE_SIZE ) {
1862
+ if (reserved_space < fsize ) {
1862
1863
end = page_start + reserved_space - 1 ;
1863
1864
btrfs_delalloc_release_space (BTRFS_I (inode ),
1864
1865
data_reserved , page_start ,
1865
- PAGE_SIZE - reserved_space , true);
1866
+ fsize - reserved_space , true);
1866
1867
}
1867
1868
}
1868
1869
@@ -1889,12 +1890,12 @@ static vm_fault_t btrfs_page_mkwrite(struct vm_fault *vmf)
1889
1890
if (page_start + folio_size (folio ) > size )
1890
1891
zero_start = offset_in_folio (folio , size );
1891
1892
else
1892
- zero_start = PAGE_SIZE ;
1893
+ zero_start = fsize ;
1893
1894
1894
- if (zero_start != PAGE_SIZE )
1895
+ if (zero_start != fsize )
1895
1896
folio_zero_range (folio , zero_start , folio_size (folio ) - zero_start );
1896
1897
1897
- btrfs_folio_clear_checked (fs_info , folio , page_start , PAGE_SIZE );
1898
+ btrfs_folio_clear_checked (fs_info , folio , page_start , fsize );
1898
1899
btrfs_folio_set_dirty (fs_info , folio , page_start , end + 1 - page_start );
1899
1900
btrfs_folio_set_uptodate (fs_info , folio , page_start , end + 1 - page_start );
1900
1901
@@ -1903,7 +1904,7 @@ static vm_fault_t btrfs_page_mkwrite(struct vm_fault *vmf)
1903
1904
unlock_extent (io_tree , page_start , page_end , & cached_state );
1904
1905
up_read (& BTRFS_I (inode )-> i_mmap_lock );
1905
1906
1906
- btrfs_delalloc_release_extents (BTRFS_I (inode ), PAGE_SIZE );
1907
+ btrfs_delalloc_release_extents (BTRFS_I (inode ), fsize );
1907
1908
sb_end_pagefault (inode -> i_sb );
1908
1909
extent_changeset_free (data_reserved );
1909
1910
return VM_FAULT_LOCKED ;
@@ -1912,7 +1913,7 @@ static vm_fault_t btrfs_page_mkwrite(struct vm_fault *vmf)
1912
1913
folio_unlock (folio );
1913
1914
up_read (& BTRFS_I (inode )-> i_mmap_lock );
1914
1915
out :
1915
- btrfs_delalloc_release_extents (BTRFS_I (inode ), PAGE_SIZE );
1916
+ btrfs_delalloc_release_extents (BTRFS_I (inode ), fsize );
1916
1917
btrfs_delalloc_release_space (BTRFS_I (inode ), data_reserved , page_start ,
1917
1918
reserved_space , (ret != 0 ));
1918
1919
out_noreserve :
0 commit comments