@@ -135,10 +135,12 @@ static inline void inc_io(struct page *page)
135
135
atomic_inc (& mp_anchor (page )-> io_count );
136
136
}
137
137
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 * ))
139
139
{
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 );
142
144
}
143
145
144
146
#else
@@ -163,7 +165,7 @@ static inline void remove_metapage(struct folio *folio, struct metapage *mp)
163
165
}
164
166
165
167
#define inc_io (page ) do {} while(0)
166
- #define dec_io (page , handler ) handler(page )
168
+ #define dec_io (folio , handler ) handler(folio )
167
169
168
170
#endif
169
171
@@ -253,11 +255,11 @@ static sector_t metapage_get_blocks(struct inode *inode, sector_t lblock,
253
255
return lblock ;
254
256
}
255
257
256
- static void last_read_complete (struct page * page )
258
+ static void last_read_complete (struct folio * folio )
257
259
{
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 );
261
263
}
262
264
263
265
static void metapage_read_end_io (struct bio * bio )
@@ -269,7 +271,7 @@ static void metapage_read_end_io(struct bio *bio)
269
271
folio_set_error (folio );
270
272
}
271
273
272
- dec_io (& folio -> page , last_read_complete );
274
+ dec_io (folio , last_read_complete );
273
275
bio_put (bio );
274
276
}
275
277
@@ -295,13 +297,13 @@ static void remove_from_logsync(struct metapage *mp)
295
297
LOGSYNC_UNLOCK (log , flags );
296
298
}
297
299
298
- static void last_write_complete (struct page * page )
300
+ static void last_write_complete (struct folio * folio )
299
301
{
300
302
struct metapage * mp ;
301
303
unsigned int offset ;
302
304
303
305
for (offset = 0 ; offset < PAGE_SIZE ; offset += PSIZE ) {
304
- mp = page_to_mp (page , offset );
306
+ mp = page_to_mp (& folio -> page , offset );
305
307
if (mp && test_bit (META_io , & mp -> flag )) {
306
308
if (mp -> lsn )
307
309
remove_from_logsync (mp );
@@ -312,7 +314,7 @@ static void last_write_complete(struct page *page)
312
314
* safe unless I have the page locked
313
315
*/
314
316
}
315
- end_page_writeback ( page );
317
+ folio_end_writeback ( folio );
316
318
}
317
319
318
320
static void metapage_write_end_io (struct bio * bio )
@@ -326,7 +328,7 @@ static void metapage_write_end_io(struct bio *bio)
326
328
printk (KERN_ERR "metapage_write_end_io: I/O error\n" );
327
329
mapping_set_error (folio -> mapping , err );
328
330
}
329
- dec_io (& folio -> page , last_write_complete );
331
+ dec_io (folio , last_write_complete );
330
332
bio_put (bio );
331
333
}
332
334
@@ -449,10 +451,10 @@ static int metapage_write_folio(struct folio *folio,
449
451
4 , bio , sizeof (* bio ), 0 );
450
452
bio_put (bio );
451
453
folio_unlock (folio );
452
- dec_io (& folio -> page , last_write_complete );
454
+ dec_io (folio , last_write_complete );
453
455
err_out :
454
456
while (bad_blocks -- )
455
- dec_io (& folio -> page , last_write_complete );
457
+ dec_io (folio , last_write_complete );
456
458
return - EIO ;
457
459
}
458
460
0 commit comments