mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
synced 2025-09-05 20:30:41 +00:00
erofs: use kmap_local_page() only for erofs_bread()
Convert all mapped erofs_bread() users to use kmap_local_page() instead of kmap() or kmap_atomic(). Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com> Reviewed-and-tested-by: Jingbo Xu <jefflexu@linux.alibaba.com> Reviewed-by: Chao Yu <chao@kernel.org> Link: https://lore.kernel.org/r/20221018105313.4940-1-hsiangkao@linux.alibaba.com Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
This commit is contained in:
parent
e6687b8922
commit
927e5010ff
@ -13,9 +13,7 @@
|
|||||||
void erofs_unmap_metabuf(struct erofs_buf *buf)
|
void erofs_unmap_metabuf(struct erofs_buf *buf)
|
||||||
{
|
{
|
||||||
if (buf->kmap_type == EROFS_KMAP)
|
if (buf->kmap_type == EROFS_KMAP)
|
||||||
kunmap(buf->page);
|
kunmap_local(buf->base);
|
||||||
else if (buf->kmap_type == EROFS_KMAP_ATOMIC)
|
|
||||||
kunmap_atomic(buf->base);
|
|
||||||
buf->base = NULL;
|
buf->base = NULL;
|
||||||
buf->kmap_type = EROFS_NO_KMAP;
|
buf->kmap_type = EROFS_NO_KMAP;
|
||||||
}
|
}
|
||||||
@ -54,9 +52,7 @@ void *erofs_bread(struct erofs_buf *buf, struct inode *inode,
|
|||||||
}
|
}
|
||||||
if (buf->kmap_type == EROFS_NO_KMAP) {
|
if (buf->kmap_type == EROFS_NO_KMAP) {
|
||||||
if (type == EROFS_KMAP)
|
if (type == EROFS_KMAP)
|
||||||
buf->base = kmap(page);
|
buf->base = kmap_local_page(page);
|
||||||
else if (type == EROFS_KMAP_ATOMIC)
|
|
||||||
buf->base = kmap_atomic(page);
|
|
||||||
buf->kmap_type = type;
|
buf->kmap_type = type;
|
||||||
} else if (buf->kmap_type != type) {
|
} else if (buf->kmap_type != type) {
|
||||||
DBG_BUGON(1);
|
DBG_BUGON(1);
|
||||||
|
@ -268,6 +268,7 @@ static int erofs_fill_inode(struct inode *inode)
|
|||||||
case S_IFDIR:
|
case S_IFDIR:
|
||||||
inode->i_op = &erofs_dir_iops;
|
inode->i_op = &erofs_dir_iops;
|
||||||
inode->i_fop = &erofs_dir_fops;
|
inode->i_fop = &erofs_dir_fops;
|
||||||
|
inode_nohighmem(inode);
|
||||||
break;
|
break;
|
||||||
case S_IFLNK:
|
case S_IFLNK:
|
||||||
err = erofs_fill_symlink(inode, kaddr, ofs);
|
err = erofs_fill_symlink(inode, kaddr, ofs);
|
||||||
|
@ -255,8 +255,7 @@ static inline int erofs_wait_on_workgroup_freezed(struct erofs_workgroup *grp)
|
|||||||
|
|
||||||
enum erofs_kmap_type {
|
enum erofs_kmap_type {
|
||||||
EROFS_NO_KMAP, /* don't map the buffer */
|
EROFS_NO_KMAP, /* don't map the buffer */
|
||||||
EROFS_KMAP, /* use kmap() to map the buffer */
|
EROFS_KMAP, /* use kmap_local_page() to map the buffer */
|
||||||
EROFS_KMAP_ATOMIC, /* use kmap_atomic() to map the buffer */
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct erofs_buf {
|
struct erofs_buf {
|
||||||
|
@ -148,7 +148,7 @@ static inline int xattr_iter_fixup(struct xattr_iter *it)
|
|||||||
|
|
||||||
it->blkaddr += erofs_blknr(it->ofs);
|
it->blkaddr += erofs_blknr(it->ofs);
|
||||||
it->kaddr = erofs_read_metabuf(&it->buf, it->sb, it->blkaddr,
|
it->kaddr = erofs_read_metabuf(&it->buf, it->sb, it->blkaddr,
|
||||||
EROFS_KMAP_ATOMIC);
|
EROFS_KMAP);
|
||||||
if (IS_ERR(it->kaddr))
|
if (IS_ERR(it->kaddr))
|
||||||
return PTR_ERR(it->kaddr);
|
return PTR_ERR(it->kaddr);
|
||||||
it->ofs = erofs_blkoff(it->ofs);
|
it->ofs = erofs_blkoff(it->ofs);
|
||||||
@ -174,7 +174,7 @@ static int inline_xattr_iter_begin(struct xattr_iter *it,
|
|||||||
it->ofs = erofs_blkoff(iloc(sbi, vi->nid) + inline_xattr_ofs);
|
it->ofs = erofs_blkoff(iloc(sbi, vi->nid) + inline_xattr_ofs);
|
||||||
|
|
||||||
it->kaddr = erofs_read_metabuf(&it->buf, inode->i_sb, it->blkaddr,
|
it->kaddr = erofs_read_metabuf(&it->buf, inode->i_sb, it->blkaddr,
|
||||||
EROFS_KMAP_ATOMIC);
|
EROFS_KMAP);
|
||||||
if (IS_ERR(it->kaddr))
|
if (IS_ERR(it->kaddr))
|
||||||
return PTR_ERR(it->kaddr);
|
return PTR_ERR(it->kaddr);
|
||||||
return vi->xattr_isize - xattr_header_sz;
|
return vi->xattr_isize - xattr_header_sz;
|
||||||
@ -368,7 +368,7 @@ static int shared_getxattr(struct inode *inode, struct getxattr_iter *it)
|
|||||||
|
|
||||||
it->it.ofs = xattrblock_offset(sbi, vi->xattr_shared_xattrs[i]);
|
it->it.ofs = xattrblock_offset(sbi, vi->xattr_shared_xattrs[i]);
|
||||||
it->it.kaddr = erofs_read_metabuf(&it->it.buf, sb, blkaddr,
|
it->it.kaddr = erofs_read_metabuf(&it->it.buf, sb, blkaddr,
|
||||||
EROFS_KMAP_ATOMIC);
|
EROFS_KMAP);
|
||||||
if (IS_ERR(it->it.kaddr))
|
if (IS_ERR(it->it.kaddr))
|
||||||
return PTR_ERR(it->it.kaddr);
|
return PTR_ERR(it->it.kaddr);
|
||||||
it->it.blkaddr = blkaddr;
|
it->it.blkaddr = blkaddr;
|
||||||
@ -580,7 +580,7 @@ static int shared_listxattr(struct listxattr_iter *it)
|
|||||||
|
|
||||||
it->it.ofs = xattrblock_offset(sbi, vi->xattr_shared_xattrs[i]);
|
it->it.ofs = xattrblock_offset(sbi, vi->xattr_shared_xattrs[i]);
|
||||||
it->it.kaddr = erofs_read_metabuf(&it->it.buf, sb, blkaddr,
|
it->it.kaddr = erofs_read_metabuf(&it->it.buf, sb, blkaddr,
|
||||||
EROFS_KMAP_ATOMIC);
|
EROFS_KMAP);
|
||||||
if (IS_ERR(it->it.kaddr))
|
if (IS_ERR(it->it.kaddr))
|
||||||
return PTR_ERR(it->it.kaddr);
|
return PTR_ERR(it->it.kaddr);
|
||||||
it->it.blkaddr = blkaddr;
|
it->it.blkaddr = blkaddr;
|
||||||
|
@ -178,7 +178,7 @@ static int legacy_load_cluster_from_disk(struct z_erofs_maprecorder *m,
|
|||||||
unsigned int advise, type;
|
unsigned int advise, type;
|
||||||
|
|
||||||
m->kaddr = erofs_read_metabuf(&m->map->buf, inode->i_sb,
|
m->kaddr = erofs_read_metabuf(&m->map->buf, inode->i_sb,
|
||||||
erofs_blknr(pos), EROFS_KMAP_ATOMIC);
|
erofs_blknr(pos), EROFS_KMAP);
|
||||||
if (IS_ERR(m->kaddr))
|
if (IS_ERR(m->kaddr))
|
||||||
return PTR_ERR(m->kaddr);
|
return PTR_ERR(m->kaddr);
|
||||||
|
|
||||||
@ -416,7 +416,7 @@ static int compacted_load_cluster_from_disk(struct z_erofs_maprecorder *m,
|
|||||||
out:
|
out:
|
||||||
pos += lcn * (1 << amortizedshift);
|
pos += lcn * (1 << amortizedshift);
|
||||||
m->kaddr = erofs_read_metabuf(&m->map->buf, inode->i_sb,
|
m->kaddr = erofs_read_metabuf(&m->map->buf, inode->i_sb,
|
||||||
erofs_blknr(pos), EROFS_KMAP_ATOMIC);
|
erofs_blknr(pos), EROFS_KMAP);
|
||||||
if (IS_ERR(m->kaddr))
|
if (IS_ERR(m->kaddr))
|
||||||
return PTR_ERR(m->kaddr);
|
return PTR_ERR(m->kaddr);
|
||||||
return unpack_compacted_index(m, amortizedshift, pos, lookahead);
|
return unpack_compacted_index(m, amortizedshift, pos, lookahead);
|
||||||
|
Loading…
Reference in New Issue
Block a user