erofs: clean up erofs_map_blocks tracepoints
authorGao Xiang <hsiangkao@linux.alibaba.com>
Thu, 9 Dec 2021 01:29:18 +0000 (09:29 +0800)
committerGao Xiang <hsiangkao@linux.alibaba.com>
Thu, 9 Dec 2021 02:02:10 +0000 (10:02 +0800)
Since the new type of chunk-based files is introduced, there is no
need to leave flatmode tracepoints.

Rename to erofs_map_blocks instead.

Link: https://lore.kernel.org/r/20211209012918.30337-1-hsiangkao@linux.alibaba.com
Reviewed-by: Yue Hu <huyue2@yulong.com>
Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
fs/erofs/data.c
include/trace/events/erofs.h

index 0e35ef3..4f98c76 100644 (file)
@@ -26,20 +26,16 @@ static int erofs_map_blocks_flatmode(struct inode *inode,
                                     struct erofs_map_blocks *map,
                                     int flags)
 {
-       int err = 0;
        erofs_blk_t nblocks, lastblk;
        u64 offset = map->m_la;
        struct erofs_inode *vi = EROFS_I(inode);
        bool tailendpacking = (vi->datalayout == EROFS_INODE_FLAT_INLINE);
 
-       trace_erofs_map_blocks_flatmode_enter(inode, map, flags);
-
        nblocks = DIV_ROUND_UP(inode->i_size, PAGE_SIZE);
        lastblk = nblocks - tailendpacking;
 
        /* there is no hole in flatmode */
        map->m_flags = EROFS_MAP_MAPPED;
-
        if (offset < blknr_to_addr(lastblk)) {
                map->m_pa = blknr_to_addr(vi->raw_blkaddr) + map->m_la;
                map->m_plen = blknr_to_addr(lastblk) - offset;
@@ -51,30 +47,23 @@ static int erofs_map_blocks_flatmode(struct inode *inode,
                        vi->xattr_isize + erofs_blkoff(map->m_la);
                map->m_plen = inode->i_size - offset;
 
-               /* inline data should be located in one meta block */
-               if (erofs_blkoff(map->m_pa) + map->m_plen > PAGE_SIZE) {
+               /* inline data should be located in the same meta block */
+               if (erofs_blkoff(map->m_pa) + map->m_plen > EROFS_BLKSIZ) {
                        erofs_err(inode->i_sb,
                                  "inline data cross block boundary @ nid %llu",
                                  vi->nid);
                        DBG_BUGON(1);
-                       err = -EFSCORRUPTED;
-                       goto err_out;
+                       return -EFSCORRUPTED;
                }
-
                map->m_flags |= EROFS_MAP_META;
        } else {
                erofs_err(inode->i_sb,
                          "internal error @ nid: %llu (size %llu), m_la 0x%llx",
                          vi->nid, inode->i_size, map->m_la);
                DBG_BUGON(1);
-               err = -EIO;
-               goto err_out;
+               return -EIO;
        }
-
-       map->m_llen = map->m_plen;
-err_out:
-       trace_erofs_map_blocks_flatmode_exit(inode, map, flags, 0);
-       return err;
+       return 0;
 }
 
 static int erofs_map_blocks(struct inode *inode,
@@ -89,6 +78,7 @@ static int erofs_map_blocks(struct inode *inode,
        erofs_off_t pos;
        int err = 0;
 
+       trace_erofs_map_blocks_enter(inode, map, flags);
        map->m_deviceid = 0;
        if (map->m_la >= inode->i_size) {
                /* leave out-of-bound access unmapped */
@@ -97,8 +87,10 @@ static int erofs_map_blocks(struct inode *inode,
                goto out;
        }
 
-       if (vi->datalayout != EROFS_INODE_CHUNK_BASED)
-               return erofs_map_blocks_flatmode(inode, map, flags);
+       if (vi->datalayout != EROFS_INODE_CHUNK_BASED) {
+               err = erofs_map_blocks_flatmode(inode, map, flags);
+               goto out;
+       }
 
        if (vi->chunkformat & EROFS_CHUNK_FORMAT_INDEXES)
                unit = sizeof(*idx);                    /* chunk index */
@@ -110,9 +102,10 @@ static int erofs_map_blocks(struct inode *inode,
                    vi->xattr_isize, unit) + unit * chunknr;
 
        page = erofs_get_meta_page(inode->i_sb, erofs_blknr(pos));
-       if (IS_ERR(page))
-               return PTR_ERR(page);
-
+       if (IS_ERR(page)) {
+               err = PTR_ERR(page);
+               goto out;
+       }
        map->m_la = chunknr << vi->chunkbits;
        map->m_plen = min_t(erofs_off_t, 1UL << vi->chunkbits,
                            roundup(inode->i_size - map->m_la, EROFS_BLKSIZ));
@@ -146,7 +139,9 @@ out_unlock:
        unlock_page(page);
        put_page(page);
 out:
-       map->m_llen = map->m_plen;
+       if (!err)
+               map->m_llen = map->m_plen;
+       trace_erofs_map_blocks_exit(inode, map, flags, 0);
        return err;
 }
 
index 16ae7b6..57de057 100644 (file)
@@ -169,7 +169,7 @@ DECLARE_EVENT_CLASS(erofs__map_blocks_enter,
                  __entry->flags ? show_map_flags(__entry->flags) : "NULL")
 );
 
-DEFINE_EVENT(erofs__map_blocks_enter, erofs_map_blocks_flatmode_enter,
+DEFINE_EVENT(erofs__map_blocks_enter, erofs_map_blocks_enter,
        TP_PROTO(struct inode *inode, struct erofs_map_blocks *map,
                 unsigned flags),
 
@@ -221,7 +221,7 @@ DECLARE_EVENT_CLASS(erofs__map_blocks_exit,
                  show_mflags(__entry->mflags), __entry->ret)
 );
 
-DEFINE_EVENT(erofs__map_blocks_exit, erofs_map_blocks_flatmode_exit,
+DEFINE_EVENT(erofs__map_blocks_exit, erofs_map_blocks_exit,
        TP_PROTO(struct inode *inode, struct erofs_map_blocks *map,
                 unsigned flags, int ret),