nilfs2: convert ifile to use kmap_local
Convert deprecated kmap() and kmap_atomic() to use kmap_local for the ifile metadata file used to manage disk inodes. In some usages, calls to kmap_local and kunmap_local are split into different helpers, but those usages can be safely changed to local thread kmap. Link: https://lkml.kernel.org/r/20240122140202.6950-11-konishi.ryusuke@gmail.com Signed-off-by: Ryusuke Konishi <konishi.ryusuke@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
97d3e94031
commit
7282f2ae81
@ -115,11 +115,11 @@ int nilfs_ifile_delete_inode(struct inode *ifile, ino_t ino)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
kaddr = kmap_atomic(req.pr_entry_bh->b_page);
|
kaddr = kmap_local_page(req.pr_entry_bh->b_page);
|
||||||
raw_inode = nilfs_palloc_block_get_entry(ifile, req.pr_entry_nr,
|
raw_inode = nilfs_palloc_block_get_entry(ifile, req.pr_entry_nr,
|
||||||
req.pr_entry_bh, kaddr);
|
req.pr_entry_bh, kaddr);
|
||||||
raw_inode->i_flags = 0;
|
raw_inode->i_flags = 0;
|
||||||
kunmap_atomic(kaddr);
|
kunmap_local(kaddr);
|
||||||
|
|
||||||
mark_buffer_dirty(req.pr_entry_bh);
|
mark_buffer_dirty(req.pr_entry_bh);
|
||||||
brelse(req.pr_entry_bh);
|
brelse(req.pr_entry_bh);
|
||||||
|
@ -21,15 +21,14 @@
|
|||||||
static inline struct nilfs_inode *
|
static inline struct nilfs_inode *
|
||||||
nilfs_ifile_map_inode(struct inode *ifile, ino_t ino, struct buffer_head *ibh)
|
nilfs_ifile_map_inode(struct inode *ifile, ino_t ino, struct buffer_head *ibh)
|
||||||
{
|
{
|
||||||
void *kaddr = kmap(ibh->b_page);
|
void *kaddr = kmap_local_page(ibh->b_page);
|
||||||
|
|
||||||
return nilfs_palloc_block_get_entry(ifile, ino, ibh, kaddr);
|
return nilfs_palloc_block_get_entry(ifile, ino, ibh, kaddr);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void nilfs_ifile_unmap_inode(struct inode *ifile, ino_t ino,
|
static inline void nilfs_ifile_unmap_inode(struct nilfs_inode *raw_inode)
|
||||||
struct buffer_head *ibh)
|
|
||||||
{
|
{
|
||||||
kunmap(ibh->b_page);
|
kunmap_local(raw_inode);
|
||||||
}
|
}
|
||||||
|
|
||||||
int nilfs_ifile_create_inode(struct inode *, ino_t *, struct buffer_head **);
|
int nilfs_ifile_create_inode(struct inode *, ino_t *, struct buffer_head **);
|
||||||
|
@ -520,7 +520,7 @@ static int __nilfs_read_inode(struct super_block *sb,
|
|||||||
inode, inode->i_mode,
|
inode, inode->i_mode,
|
||||||
huge_decode_dev(le64_to_cpu(raw_inode->i_device_code)));
|
huge_decode_dev(le64_to_cpu(raw_inode->i_device_code)));
|
||||||
}
|
}
|
||||||
nilfs_ifile_unmap_inode(root->ifile, ino, bh);
|
nilfs_ifile_unmap_inode(raw_inode);
|
||||||
brelse(bh);
|
brelse(bh);
|
||||||
up_read(&NILFS_MDT(nilfs->ns_dat)->mi_sem);
|
up_read(&NILFS_MDT(nilfs->ns_dat)->mi_sem);
|
||||||
nilfs_set_inode_flags(inode);
|
nilfs_set_inode_flags(inode);
|
||||||
@ -529,7 +529,7 @@ static int __nilfs_read_inode(struct super_block *sb,
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
failed_unmap:
|
failed_unmap:
|
||||||
nilfs_ifile_unmap_inode(root->ifile, ino, bh);
|
nilfs_ifile_unmap_inode(raw_inode);
|
||||||
brelse(bh);
|
brelse(bh);
|
||||||
|
|
||||||
bad_inode:
|
bad_inode:
|
||||||
@ -814,7 +814,7 @@ void nilfs_update_inode(struct inode *inode, struct buffer_head *ibh, int flags)
|
|||||||
raw_inode->i_device_code =
|
raw_inode->i_device_code =
|
||||||
cpu_to_le64(huge_encode_dev(inode->i_rdev));
|
cpu_to_le64(huge_encode_dev(inode->i_rdev));
|
||||||
|
|
||||||
nilfs_ifile_unmap_inode(ifile, ino, ibh);
|
nilfs_ifile_unmap_inode(raw_inode);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define NILFS_MAX_TRUNCATE_BLOCKS 16384 /* 64MB for 4KB block */
|
#define NILFS_MAX_TRUNCATE_BLOCKS 16384 /* 64MB for 4KB block */
|
||||||
|
@ -966,7 +966,7 @@ static void nilfs_fill_in_file_bmap(struct inode *ifile,
|
|||||||
raw_inode = nilfs_ifile_map_inode(ifile, ii->vfs_inode.i_ino,
|
raw_inode = nilfs_ifile_map_inode(ifile, ii->vfs_inode.i_ino,
|
||||||
ibh);
|
ibh);
|
||||||
nilfs_bmap_write(ii->i_bmap, raw_inode);
|
nilfs_bmap_write(ii->i_bmap, raw_inode);
|
||||||
nilfs_ifile_unmap_inode(ifile, ii->vfs_inode.i_ino, ibh);
|
nilfs_ifile_unmap_inode(raw_inode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user