mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-24 11:20:49 +07:00
nilfs2: separate function for creating new btree node block
Adds a separate routine for creating a btree node block. This is a preparation to reduce the depth of function calls during submitting btree node buffer. Signed-off-by: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
This commit is contained in:
parent
b34a65069c
commit
d501d73689
@ -68,6 +68,32 @@ void nilfs_btnode_cache_clear(struct address_space *btnc)
|
|||||||
truncate_inode_pages(btnc, 0);
|
truncate_inode_pages(btnc, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct buffer_head *
|
||||||
|
nilfs_btnode_create_block(struct address_space *btnc, __u64 blocknr)
|
||||||
|
{
|
||||||
|
struct inode *inode = NILFS_BTNC_I(btnc);
|
||||||
|
struct buffer_head *bh;
|
||||||
|
|
||||||
|
bh = nilfs_grab_buffer(inode, btnc, blocknr, 1 << BH_NILFS_Node);
|
||||||
|
if (unlikely(!bh))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
if (unlikely(buffer_mapped(bh) || buffer_uptodate(bh) ||
|
||||||
|
buffer_dirty(bh))) {
|
||||||
|
brelse(bh);
|
||||||
|
BUG();
|
||||||
|
}
|
||||||
|
memset(bh->b_data, 0, 1 << inode->i_blkbits);
|
||||||
|
bh->b_bdev = NILFS_I_NILFS(inode)->ns_bdev;
|
||||||
|
bh->b_blocknr = blocknr;
|
||||||
|
set_buffer_mapped(bh);
|
||||||
|
set_buffer_uptodate(bh);
|
||||||
|
|
||||||
|
unlock_page(bh->b_page);
|
||||||
|
page_cache_release(bh->b_page);
|
||||||
|
return bh;
|
||||||
|
}
|
||||||
|
|
||||||
int nilfs_btnode_submit_block(struct address_space *btnc, __u64 blocknr,
|
int nilfs_btnode_submit_block(struct address_space *btnc, __u64 blocknr,
|
||||||
sector_t pblocknr, struct buffer_head **pbh,
|
sector_t pblocknr, struct buffer_head **pbh,
|
||||||
int newblk)
|
int newblk)
|
||||||
|
@ -40,6 +40,8 @@ struct nilfs_btnode_chkey_ctxt {
|
|||||||
void nilfs_btnode_cache_init_once(struct address_space *);
|
void nilfs_btnode_cache_init_once(struct address_space *);
|
||||||
void nilfs_btnode_cache_init(struct address_space *, struct backing_dev_info *);
|
void nilfs_btnode_cache_init(struct address_space *, struct backing_dev_info *);
|
||||||
void nilfs_btnode_cache_clear(struct address_space *);
|
void nilfs_btnode_cache_clear(struct address_space *);
|
||||||
|
struct buffer_head *nilfs_btnode_create_block(struct address_space *btnc,
|
||||||
|
__u64 blocknr);
|
||||||
int nilfs_btnode_submit_block(struct address_space *, __u64, sector_t,
|
int nilfs_btnode_submit_block(struct address_space *, __u64, sector_t,
|
||||||
struct buffer_head **, int);
|
struct buffer_head **, int);
|
||||||
int nilfs_btnode_get(struct address_space *, __u64, sector_t,
|
int nilfs_btnode_get(struct address_space *, __u64, sector_t,
|
||||||
|
Loading…
Reference in New Issue
Block a user