@@ -93,7 +93,6 @@ int ecryptfs_write_lower_page_segment(struct inode *ecryptfs_inode,
93
93
int ecryptfs_write (struct inode * ecryptfs_inode , char * data , loff_t offset ,
94
94
size_t size )
95
95
{
96
- struct page * ecryptfs_page ;
97
96
struct ecryptfs_crypt_stat * crypt_stat ;
98
97
char * ecryptfs_page_virt ;
99
98
loff_t ecryptfs_file_size = i_size_read (ecryptfs_inode );
@@ -111,6 +110,7 @@ int ecryptfs_write(struct inode *ecryptfs_inode, char *data, loff_t offset,
111
110
else
112
111
pos = offset ;
113
112
while (pos < (offset + size )) {
113
+ struct folio * ecryptfs_folio ;
114
114
pgoff_t ecryptfs_page_idx = (pos >> PAGE_SHIFT );
115
115
size_t start_offset_in_page = (pos & ~PAGE_MASK );
116
116
size_t num_bytes = (PAGE_SIZE - start_offset_in_page );
@@ -130,17 +130,18 @@ int ecryptfs_write(struct inode *ecryptfs_inode, char *data, loff_t offset,
130
130
if (num_bytes > total_remaining_zeros )
131
131
num_bytes = total_remaining_zeros ;
132
132
}
133
- ecryptfs_page = ecryptfs_get_locked_page (ecryptfs_inode ,
134
- ecryptfs_page_idx );
135
- if (IS_ERR (ecryptfs_page )) {
136
- rc = PTR_ERR (ecryptfs_page );
133
+ ecryptfs_folio = read_mapping_folio (ecryptfs_inode -> i_mapping ,
134
+ ecryptfs_page_idx , NULL );
135
+ if (IS_ERR (ecryptfs_folio )) {
136
+ rc = PTR_ERR (ecryptfs_folio );
137
137
printk (KERN_ERR "%s: Error getting page at "
138
138
"index [%ld] from eCryptfs inode "
139
139
"mapping; rc = [%d]\n" , __func__ ,
140
140
ecryptfs_page_idx , rc );
141
141
goto out ;
142
142
}
143
- ecryptfs_page_virt = kmap_local_page (ecryptfs_page );
143
+ folio_lock (ecryptfs_folio );
144
+ ecryptfs_page_virt = kmap_local_folio (ecryptfs_folio , 0 );
144
145
145
146
/*
146
147
* pos: where we're now writing, offset: where the request was
@@ -164,17 +165,17 @@ int ecryptfs_write(struct inode *ecryptfs_inode, char *data, loff_t offset,
164
165
data_offset += num_bytes ;
165
166
}
166
167
kunmap_local (ecryptfs_page_virt );
167
- flush_dcache_page ( ecryptfs_page );
168
- SetPageUptodate ( ecryptfs_page );
169
- unlock_page ( ecryptfs_page );
168
+ flush_dcache_folio ( ecryptfs_folio );
169
+ folio_mark_uptodate ( ecryptfs_folio );
170
+ folio_unlock ( ecryptfs_folio );
170
171
if (crypt_stat -> flags & ECRYPTFS_ENCRYPTED )
171
- rc = ecryptfs_encrypt_page (ecryptfs_page );
172
+ rc = ecryptfs_encrypt_page (& ecryptfs_folio -> page );
172
173
else
173
174
rc = ecryptfs_write_lower_page_segment (ecryptfs_inode ,
174
- ecryptfs_page ,
175
+ & ecryptfs_folio -> page ,
175
176
start_offset_in_page ,
176
177
data_offset );
177
- put_page ( ecryptfs_page );
178
+ folio_put ( ecryptfs_folio );
178
179
if (rc ) {
179
180
printk (KERN_ERR "%s: Error encrypting "
180
181
"page; rc = [%d]\n" , __func__ , rc );
0 commit comments