Skip to content

Commit 1f0dc61

Browse files
Matthew Wilcox (Oracle)kleikamp
authored andcommitted
jfs: Convert dec_io to take a folio
This means also converting the two handlers to take a folio. Saves four calls to compound_head(). Signed-off-by: Matthew Wilcox (Oracle) <[email protected]> Signed-off-by: Dave Kleikamp <[email protected]>
1 parent dd23bf3 commit 1f0dc61

File tree

1 file changed

+17
-15
lines changed

1 file changed

+17
-15
lines changed

fs/jfs/jfs_metapage.c

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -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

263265
static 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

318320
static 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);
453455
err_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

Comments
 (0)