[ let's fold in to the original patch. ]
Cc: Huang Jianan <[email protected]>
Signed-off-by: Gao Xiang <[email protected]>
---
 fuse/namei.c  | 4 ++--
 fuse/read.c   | 2 +-
 fuse/readir.c | 2 +-
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/fuse/namei.c b/fuse/namei.c
index 510fcfda5a76..0b71072027ce 100644
--- a/fuse/namei.c
+++ b/fuse/namei.c
@@ -172,8 +172,8 @@ struct dcache_entry *disk_lookup(struct dcache_entry 
*parent, const char *name,
 
        if (v.datalayout == EROFS_INODE_FLAT_INLINE) {
                uint32_t dir_off = erofs_blkoff(dirsize);
-               off_t dir_addr = nid2addr(dcache_get_nid(parent))
-                       + sizeof(struct erofs_inode_compact) + v.xattr_isize;
+               off_t dir_addr = nid2addr(dcache_get_nid(parent)) +
+                       v.inode_isize + v.xattr_isize;
 
                memset(buf, 0, sizeof(buf));
                ret = dev_read(buf, dir_off, dir_addr);
diff --git a/fuse/read.c b/fuse/read.c
index dd44adaa1c40..3f2e49c390de 100644
--- a/fuse/read.c
+++ b/fuse/read.c
@@ -65,7 +65,7 @@ size_t erofs_read_data_inline(struct erofs_vnode *vnode, char 
*buffer,
        if (!suminline)
                goto finished;
 
-       addr = nid2addr(vnode->nid) + sizeof(struct erofs_inode_compact)
+       addr = nid2addr(vnode->nid) + vnode->inode_isize +
                + vnode->xattr_isize;
        ret = dev_read(buffer + rdsz, suminline, addr);
        if (ret < 0 || (size_t)ret != suminline)
diff --git a/fuse/readir.c b/fuse/readir.c
index 9589685c9122..46ceb1d90a7f 100644
--- a/fuse/readir.c
+++ b/fuse/readir.c
@@ -108,7 +108,7 @@ int erofs_readdir(const char *path, void *buf, 
fuse_fill_dir_t filler,
        if (v.datalayout == EROFS_INODE_FLAT_INLINE) {
                off_t addr;
 
-               addr = nid2addr(nid) + sizeof(struct erofs_inode_compact)
+               addr = nid2addr(nid) + v.inode_isize
                        + v.xattr_isize;
 
                memset(dirsbuf, 0, sizeof(dirsbuf));
-- 
2.24.0

Reply via email to