mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-13 05:20:13 +00:00
gfs2: Convert gfs2_find_jhead() to use a folio
Remove a call to grab_cache_page() by using a folio throughout this function. [agruenba@redhat.com: Adjust to return value difference between bio_add_page() and bio_add_folio().] Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
This commit is contained in:
committed by
Andreas Gruenbacher
parent
e00307e8d4
commit
4082976009
@@ -512,9 +512,9 @@ int gfs2_find_jhead(struct gfs2_jdesc *jd, struct gfs2_log_header_host *head,
|
|||||||
unsigned int shift = PAGE_SHIFT - bsize_shift;
|
unsigned int shift = PAGE_SHIFT - bsize_shift;
|
||||||
unsigned int max_blocks = 2 * 1024 * 1024 >> bsize_shift;
|
unsigned int max_blocks = 2 * 1024 * 1024 >> bsize_shift;
|
||||||
struct gfs2_journal_extent *je;
|
struct gfs2_journal_extent *je;
|
||||||
int sz, ret = 0;
|
int ret = 0;
|
||||||
struct bio *bio = NULL;
|
struct bio *bio = NULL;
|
||||||
struct page *page = NULL;
|
struct folio *folio = NULL;
|
||||||
bool done = false;
|
bool done = false;
|
||||||
errseq_t since;
|
errseq_t since;
|
||||||
|
|
||||||
@@ -527,9 +527,10 @@ int gfs2_find_jhead(struct gfs2_jdesc *jd, struct gfs2_log_header_host *head,
|
|||||||
u64 dblock = je->dblock;
|
u64 dblock = je->dblock;
|
||||||
|
|
||||||
for (; block < je->lblock + je->blocks; block++, dblock++) {
|
for (; block < je->lblock + je->blocks; block++, dblock++) {
|
||||||
if (!page) {
|
if (!folio) {
|
||||||
page = grab_cache_page(mapping, block >> shift);
|
folio = filemap_grab_folio(mapping,
|
||||||
if (!page) {
|
block >> shift);
|
||||||
|
if (!folio) {
|
||||||
ret = -ENOMEM;
|
ret = -ENOMEM;
|
||||||
done = true;
|
done = true;
|
||||||
goto out;
|
goto out;
|
||||||
@@ -541,8 +542,7 @@ int gfs2_find_jhead(struct gfs2_jdesc *jd, struct gfs2_log_header_host *head,
|
|||||||
sector_t sector = dblock << sdp->sd_fsb2bb_shift;
|
sector_t sector = dblock << sdp->sd_fsb2bb_shift;
|
||||||
|
|
||||||
if (bio_end_sector(bio) == sector) {
|
if (bio_end_sector(bio) == sector) {
|
||||||
sz = bio_add_page(bio, page, bsize, off);
|
if (bio_add_folio(bio, folio, bsize, off))
|
||||||
if (sz == bsize)
|
|
||||||
goto block_added;
|
goto block_added;
|
||||||
}
|
}
|
||||||
if (off) {
|
if (off) {
|
||||||
@@ -562,12 +562,12 @@ int gfs2_find_jhead(struct gfs2_jdesc *jd, struct gfs2_log_header_host *head,
|
|||||||
bio = gfs2_log_alloc_bio(sdp, dblock, gfs2_end_log_read);
|
bio = gfs2_log_alloc_bio(sdp, dblock, gfs2_end_log_read);
|
||||||
bio->bi_opf = REQ_OP_READ;
|
bio->bi_opf = REQ_OP_READ;
|
||||||
add_block_to_new_bio:
|
add_block_to_new_bio:
|
||||||
sz = bio_add_page(bio, page, bsize, off);
|
if (!bio_add_folio(bio, folio, bsize, off))
|
||||||
BUG_ON(sz != bsize);
|
BUG();
|
||||||
block_added:
|
block_added:
|
||||||
off += bsize;
|
off += bsize;
|
||||||
if (off == PAGE_SIZE)
|
if (off == folio_size(folio))
|
||||||
page = NULL;
|
folio = NULL;
|
||||||
if (blocks_submitted <= blocks_read + max_blocks) {
|
if (blocks_submitted <= blocks_read + max_blocks) {
|
||||||
/* Keep at least one bio in flight */
|
/* Keep at least one bio in flight */
|
||||||
continue;
|
continue;
|
||||||
|
|||||||
Reference in New Issue
Block a user