aboutsummaryrefslogtreecommitdiff
path: root/fs/erofs/namei.c
diff options
context:
space:
mode:
authorGravatar Gao Xiang <hsiangkao@linux.alibaba.com> 2023-04-07 22:17:04 +0800
committerGravatar Gao Xiang <hsiangkao@linux.alibaba.com> 2023-04-17 01:15:50 +0800
commiteb2c5e41be1495cf7a20ff49df473b1c45b82e77 (patch)
tree939ee6fc72404440e86150d19e797acbcc1e7d3b /fs/erofs/namei.c
parenterofs: initialize packed inode after root inode is assigned (diff)
downloadlinux-eb2c5e41be1495cf7a20ff49df473b1c45b82e77.tar.gz
linux-eb2c5e41be1495cf7a20ff49df473b1c45b82e77.tar.bz2
linux-eb2c5e41be1495cf7a20ff49df473b1c45b82e77.zip
erofs: keep meta inode into erofs_buf
So that erofs_read_metadata() can read metadata from other inodes (e.g. packed inode) as well. Signed-off-by: Jingbo Xu <jefflexu@linux.alibaba.com> Acked-by: Chao Yu <chao@kernel.org> Link: https://lore.kernel.org/r/20230407141710.113882-2-jefflexu@linux.alibaba.com Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
Diffstat (limited to 'fs/erofs/namei.c')
-rw-r--r--fs/erofs/namei.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/fs/erofs/namei.c b/fs/erofs/namei.c
index f091e9a0f0a1..43096bac4c99 100644
--- a/fs/erofs/namei.c
+++ b/fs/erofs/namei.c
@@ -99,7 +99,8 @@ static void *erofs_find_target_block(struct erofs_buf *target,
struct erofs_buf buf = __EROFS_BUF_INITIALIZER;
struct erofs_dirent *de;
- de = erofs_bread(&buf, dir, mid, EROFS_KMAP);
+ buf.inode = dir;
+ de = erofs_bread(&buf, mid, EROFS_KMAP);
if (!IS_ERR(de)) {
const int nameoff = nameoff_from_disk(de->nameoff, bsz);
const int ndirents = nameoff / sizeof(*de);
@@ -170,6 +171,7 @@ int erofs_namei(struct inode *dir, const struct qstr *name, erofs_nid_t *nid,
qn.name = name->name;
qn.end = name->name + name->len;
+ buf.inode = dir;
ndirents = 0;
de = erofs_find_target_block(&buf, dir, &qn, &ndirents);