@@ -135,10 +135,12 @@ static inline void inc_io(struct page *page)
135135 atomic_inc (& mp_anchor (page )-> io_count );
136136}
137137
138- static inline void dec_io (struct page * page , void (* handler ) (struct page * ))
138+ static inline void dec_io (struct folio * folio , void (* handler ) (struct folio * ))
139139{
140- if (atomic_dec_and_test (& mp_anchor (page )-> io_count ))
141- handler (page );
140+ struct meta_anchor * anchor = folio -> private ;
141+
142+ if (atomic_dec_and_test (& anchor -> io_count ))
143+ handler (folio );
142144}
143145
144146#else
@@ -163,7 +165,7 @@ static inline void remove_metapage(struct folio *folio, struct metapage *mp)
163165}
164166
165167#define inc_io (page ) do {} while(0)
166- #define dec_io (page , handler ) handler(page )
168+ #define dec_io (folio , handler ) handler(folio )
167169
168170#endif
169171
@@ -253,11 +255,11 @@ static sector_t metapage_get_blocks(struct inode *inode, sector_t lblock,
253255 return lblock ;
254256}
255257
256- static void last_read_complete (struct page * page )
258+ static void last_read_complete (struct folio * folio )
257259{
258- if (!PageError ( page ))
259- SetPageUptodate ( page );
260- unlock_page ( page );
260+ if (!folio_test_error ( folio ))
261+ folio_mark_uptodate ( folio );
262+ folio_unlock ( folio );
261263}
262264
263265static void metapage_read_end_io (struct bio * bio )
@@ -269,7 +271,7 @@ static void metapage_read_end_io(struct bio *bio)
269271 folio_set_error (folio );
270272 }
271273
272- dec_io (& folio -> page , last_read_complete );
274+ dec_io (folio , last_read_complete );
273275 bio_put (bio );
274276}
275277
@@ -295,13 +297,13 @@ static void remove_from_logsync(struct metapage *mp)
295297 LOGSYNC_UNLOCK (log , flags );
296298}
297299
298- static void last_write_complete (struct page * page )
300+ static void last_write_complete (struct folio * folio )
299301{
300302 struct metapage * mp ;
301303 unsigned int offset ;
302304
303305 for (offset = 0 ; offset < PAGE_SIZE ; offset += PSIZE ) {
304- mp = page_to_mp (page , offset );
306+ mp = page_to_mp (& folio -> page , offset );
305307 if (mp && test_bit (META_io , & mp -> flag )) {
306308 if (mp -> lsn )
307309 remove_from_logsync (mp );
@@ -312,7 +314,7 @@ static void last_write_complete(struct page *page)
312314 * safe unless I have the page locked
313315 */
314316 }
315- end_page_writeback ( page );
317+ folio_end_writeback ( folio );
316318}
317319
318320static void metapage_write_end_io (struct bio * bio )
@@ -326,7 +328,7 @@ static void metapage_write_end_io(struct bio *bio)
326328 printk (KERN_ERR "metapage_write_end_io: I/O error\n" );
327329 mapping_set_error (folio -> mapping , err );
328330 }
329- dec_io (& folio -> page , last_write_complete );
331+ dec_io (folio , last_write_complete );
330332 bio_put (bio );
331333}
332334
@@ -449,10 +451,10 @@ static int metapage_write_folio(struct folio *folio,
449451 4 , bio , sizeof (* bio ), 0 );
450452 bio_put (bio );
451453 folio_unlock (folio );
452- dec_io (& folio -> page , last_write_complete );
454+ dec_io (folio , last_write_complete );
453455err_out :
454456 while (bad_blocks -- )
455- dec_io (& folio -> page , last_write_complete );
457+ dec_io (folio , last_write_complete );
456458 return - EIO ;
457459}
458460
0 commit comments