mirror of https://github.com/torvalds/linux.git
ext4/jbd2: convert jbd2_journal_blocks_per_page() to support large folio
jbd2_journal_blocks_per_page() returns the number of blocks in a single page. Rename it to jbd2_journal_blocks_per_folio() and make it returns the number of blocks in the largest folio, preparing for the calculation of journal credits blocks when allocating blocks within a large folio in the writeback path. Signed-off-by: Zhang Yi <yi.zhang@huawei.com> Link: https://patch.msgid.link/20250512063319.3539411-5-yi.zhang@huaweicloud.com Signed-off-by: Theodore Ts'o <tytso@mit.edu>
This commit is contained in:
parent
2e9466fc5d
commit
d6bf294773
|
|
@ -319,10 +319,10 @@ static inline int ext4_journal_ensure_credits(handle_t *handle, int credits,
|
|||
revoke_creds, 0);
|
||||
}
|
||||
|
||||
static inline int ext4_journal_blocks_per_page(struct inode *inode)
|
||||
static inline int ext4_journal_blocks_per_folio(struct inode *inode)
|
||||
{
|
||||
if (EXT4_JOURNAL(inode) != NULL)
|
||||
return jbd2_journal_blocks_per_page(inode);
|
||||
return jbd2_journal_blocks_per_folio(inode);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2406,7 +2406,7 @@ static int mpage_map_and_submit_extent(handle_t *handle,
|
|||
*/
|
||||
static int ext4_da_writepages_trans_blocks(struct inode *inode)
|
||||
{
|
||||
int bpp = ext4_journal_blocks_per_page(inode);
|
||||
int bpp = ext4_journal_blocks_per_folio(inode);
|
||||
|
||||
return ext4_meta_trans_blocks(inode,
|
||||
MAX_WRITEPAGES_EXTENT_LEN + bpp - 1, bpp);
|
||||
|
|
@ -2484,7 +2484,7 @@ static int mpage_prepare_extent_to_map(struct mpage_da_data *mpd)
|
|||
ext4_lblk_t lblk;
|
||||
struct buffer_head *head;
|
||||
handle_t *handle = NULL;
|
||||
int bpp = ext4_journal_blocks_per_page(mpd->inode);
|
||||
int bpp = ext4_journal_blocks_per_folio(mpd->inode);
|
||||
|
||||
if (mpd->wbc->sync_mode == WB_SYNC_ALL || mpd->wbc->tagged_writepages)
|
||||
tag = PAGECACHE_TAG_TOWRITE;
|
||||
|
|
@ -5883,7 +5883,7 @@ static int ext4_meta_trans_blocks(struct inode *inode, int lblocks,
|
|||
*/
|
||||
int ext4_writepage_trans_blocks(struct inode *inode)
|
||||
{
|
||||
int bpp = ext4_journal_blocks_per_page(inode);
|
||||
int bpp = ext4_journal_blocks_per_folio(inode);
|
||||
int ret;
|
||||
|
||||
ret = ext4_meta_trans_blocks(inode, bpp, bpp);
|
||||
|
|
|
|||
|
|
@ -83,7 +83,7 @@ EXPORT_SYMBOL(jbd2_log_wait_commit);
|
|||
EXPORT_SYMBOL(jbd2_journal_start_commit);
|
||||
EXPORT_SYMBOL(jbd2_journal_force_commit_nested);
|
||||
EXPORT_SYMBOL(jbd2_journal_wipe);
|
||||
EXPORT_SYMBOL(jbd2_journal_blocks_per_page);
|
||||
EXPORT_SYMBOL(jbd2_journal_blocks_per_folio);
|
||||
EXPORT_SYMBOL(jbd2_journal_invalidate_folio);
|
||||
EXPORT_SYMBOL(jbd2_journal_try_to_free_buffers);
|
||||
EXPORT_SYMBOL(jbd2_journal_force_commit);
|
||||
|
|
@ -2655,9 +2655,10 @@ void jbd2_journal_ack_err(journal_t *journal)
|
|||
write_unlock(&journal->j_state_lock);
|
||||
}
|
||||
|
||||
int jbd2_journal_blocks_per_page(struct inode *inode)
|
||||
int jbd2_journal_blocks_per_folio(struct inode *inode)
|
||||
{
|
||||
return 1 << (PAGE_SHIFT - inode->i_sb->s_blocksize_bits);
|
||||
return 1 << (PAGE_SHIFT + mapping_max_folio_order(inode->i_mapping) -
|
||||
inode->i_sb->s_blocksize_bits);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -1723,7 +1723,7 @@ static inline int tid_geq(tid_t x, tid_t y)
|
|||
return (difference >= 0);
|
||||
}
|
||||
|
||||
extern int jbd2_journal_blocks_per_page(struct inode *inode);
|
||||
extern int jbd2_journal_blocks_per_folio(struct inode *inode);
|
||||
extern size_t journal_tag_bytes(journal_t *journal);
|
||||
|
||||
static inline int jbd2_journal_has_csum_v2or3(journal_t *journal)
|
||||
|
|
|
|||
Loading…
Reference in New Issue