Commit 7282f2ae authored by Ryusuke Konishi's avatar Ryusuke Konishi Committed by Andrew Morton
Browse files

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: default avatarRyusuke Konishi <konishi.ryusuke@gmail.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
parent 97d3e940
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -115,11 +115,11 @@ int nilfs_ifile_delete_inode(struct inode *ifile, ino_t ino)
		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,
						 req.pr_entry_bh, kaddr);
	raw_inode->i_flags = 0;
	kunmap_atomic(kaddr);
	kunmap_local(kaddr);

	mark_buffer_dirty(req.pr_entry_bh);
	brelse(req.pr_entry_bh);
+3 −4
Original line number Diff line number Diff line
@@ -21,15 +21,14 @@
static inline struct nilfs_inode *
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);
}

static inline void nilfs_ifile_unmap_inode(struct inode *ifile, ino_t ino,
					   struct buffer_head *ibh)
static inline void nilfs_ifile_unmap_inode(struct nilfs_inode *raw_inode)
{
	kunmap(ibh->b_page);
	kunmap_local(raw_inode);
}

int nilfs_ifile_create_inode(struct inode *, ino_t *, struct buffer_head **);
+3 −3
Original line number Diff line number Diff line
@@ -520,7 +520,7 @@ static int __nilfs_read_inode(struct super_block *sb,
			inode, inode->i_mode,
			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);
	up_read(&NILFS_MDT(nilfs->ns_dat)->mi_sem);
	nilfs_set_inode_flags(inode);
@@ -529,7 +529,7 @@ static int __nilfs_read_inode(struct super_block *sb,
	return 0;

 failed_unmap:
	nilfs_ifile_unmap_inode(root->ifile, ino, bh);
	nilfs_ifile_unmap_inode(raw_inode);
	brelse(bh);

 bad_inode:
@@ -814,7 +814,7 @@ void nilfs_update_inode(struct inode *inode, struct buffer_head *ibh, int flags)
		raw_inode->i_device_code =
			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 */
+1 −1
Original line number Diff line number Diff line
@@ -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,
						  ibh);
		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);
	}
}