staging: erofs: clean up erofs_map_blocks_iter
authorChao Yu <yuchao0@huawei.com>
Tue, 15 Jan 2019 01:42:21 +0000 (09:42 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 15 Jan 2019 14:52:26 +0000 (15:52 +0100)
This patch cleans up erofs_map_blocks* function and structure family,
just simply the code, no logic change.

Reviewed-by: Gao Xiang <gaoxiang25@huawei.com>
Signed-off-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Gao Xiang <gaoxiang25@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/erofs/data.c
drivers/staging/erofs/internal.h
drivers/staging/erofs/unzip_vle.c

index 329fa4fa3e9c5f9963dae105f5e5363702881abe..9c471f08ffd4112a97b7ef06897e965ed043a3d8 100644 (file)
@@ -165,37 +165,16 @@ err_out:
        return err;
 }
 
-int erofs_map_blocks_iter(struct inode *inode,
-                         struct erofs_map_blocks *map,
-                         struct page **mpage_ret, int flags)
-{
-       /* by default, reading raw data never use erofs_map_blocks_iter */
-       if (unlikely(!is_inode_layout_compression(inode))) {
-               if (*mpage_ret)
-                       put_page(*mpage_ret);
-               *mpage_ret = NULL;
-
-               return erofs_map_blocks(inode, map, flags);
-       }
-
-#ifdef CONFIG_EROFS_FS_ZIP
-       return z_erofs_map_blocks_iter(inode, map, mpage_ret, flags);
-#else
-       /* data compression is not available */
-       return -ENOTSUPP;
-#endif
-}
-
 int erofs_map_blocks(struct inode *inode,
                     struct erofs_map_blocks *map, int flags)
 {
        if (unlikely(is_inode_layout_compression(inode))) {
-               struct page *mpage = NULL;
-               int err;
+               int err = z_erofs_map_blocks_iter(inode, map, flags);
 
-               err = erofs_map_blocks_iter(inode, map, &mpage, flags);
-               if (mpage)
-                       put_page(mpage);
+               if (map->mpage) {
+                       put_page(map->mpage);
+                       map->mpage = NULL;
+               }
                return err;
        }
        return erofs_map_blocks_flatmode(inode, map, flags);
index 99b50b98133561470dcc4ac34356adaa0125e680..c3de24e7fb670ef50571112fd7546e35b1256528 100644 (file)
@@ -461,11 +461,26 @@ struct erofs_map_blocks {
        u64 m_plen, m_llen;
 
        unsigned int m_flags;
+
+       struct page *mpage;
 };
 
 /* Flags used by erofs_map_blocks() */
 #define EROFS_GET_BLOCKS_RAW    0x0001
 
+#ifdef CONFIG_EROFS_FS_ZIP
+int z_erofs_map_blocks_iter(struct inode *inode,
+                           struct erofs_map_blocks *map,
+                           int flags);
+#else
+static inline int z_erofs_map_blocks_iter(struct inode *inode,
+                                         struct erofs_map_blocks *map,
+                                         int flags)
+{
+       return -ENOTSUPP;
+}
+#endif
+
 /* data.c */
 static inline struct bio *
 erofs_grab_bio(struct super_block *sb,
@@ -522,19 +537,6 @@ static inline struct page *erofs_get_meta_page_nofail(struct super_block *sb,
 }
 
 extern int erofs_map_blocks(struct inode *, struct erofs_map_blocks *, int);
-extern int erofs_map_blocks_iter(struct inode *, struct erofs_map_blocks *,
-       struct page **, int);
-
-struct erofs_map_blocks_iter {
-       struct erofs_map_blocks map;
-       struct page *mpage;
-};
-
-#ifdef CONFIG_EROFS_FS_ZIP
-extern int z_erofs_map_blocks_iter(struct inode *,
-                                  struct erofs_map_blocks *,
-                                  struct page **, int);
-#endif
 
 static inline struct page *
 erofs_get_inline_page(struct inode *inode,
index 584612b47369fe04d869428f2893997809478e5b..29b3b1dc67f11f4b99507ac039424b9047990b54 100644 (file)
@@ -636,7 +636,7 @@ struct z_erofs_vle_frontend {
        struct inode *const inode;
 
        struct z_erofs_vle_work_builder builder;
-       struct erofs_map_blocks_iter m_iter;
+       struct erofs_map_blocks map;
 
        z_erofs_vle_owned_workgrp_t owned_head;
 
@@ -647,8 +647,9 @@ struct z_erofs_vle_frontend {
 
 #define VLE_FRONTEND_INIT(__i) { \
        .inode = __i, \
-       .m_iter = { \
-               { .m_llen = 0, .m_plen = 0 }, \
+       .map = { \
+               .m_llen = 0, \
+               .m_plen = 0, \
                .mpage = NULL \
        }, \
        .builder = VLE_WORK_BUILDER_INIT(), \
@@ -681,8 +682,7 @@ static int z_erofs_do_read_page(struct z_erofs_vle_frontend *fe,
 {
        struct super_block *const sb = fe->inode->i_sb;
        struct erofs_sb_info *const sbi __maybe_unused = EROFS_SB(sb);
-       struct erofs_map_blocks_iter *const m = &fe->m_iter;
-       struct erofs_map_blocks *const map = &m->map;
+       struct erofs_map_blocks *const map = &fe->map;
        struct z_erofs_vle_work_builder *const builder = &fe->builder;
        const loff_t offset = page_offset(page);
 
@@ -715,7 +715,7 @@ repeat:
 
        map->m_la = offset + cur;
        map->m_llen = 0;
-       err = erofs_map_blocks_iter(fe->inode, map, &m->mpage, 0);
+       err = z_erofs_map_blocks_iter(fe->inode, map, 0);
        if (unlikely(err))
                goto err_out;
 
@@ -1484,8 +1484,8 @@ static int z_erofs_vle_normalaccess_readpage(struct file *file,
 
        z_erofs_submit_and_unzip(&f, &pagepool, true);
 out:
-       if (f.m_iter.mpage)
-               put_page(f.m_iter.mpage);
+       if (f.map.mpage)
+               put_page(f.map.mpage);
 
        /* clean up the remaining free pages */
        put_pages_list(&pagepool);
@@ -1555,8 +1555,8 @@ static int z_erofs_vle_normalaccess_readpages(struct file *filp,
 
        z_erofs_submit_and_unzip(&f, &pagepool, sync);
 
-       if (f.m_iter.mpage)
-               put_page(f.m_iter.mpage);
+       if (f.map.mpage)
+               put_page(f.map.mpage);
 
        /* clean up the remaining free pages */
        put_pages_list(&pagepool);
@@ -1701,14 +1701,14 @@ vle_get_logical_extent_head(const struct vle_map_blocks_iter_ctx *ctx,
 
 int z_erofs_map_blocks_iter(struct inode *inode,
        struct erofs_map_blocks *map,
-       struct page **mpage_ret, int flags)
+       int flags)
 {
        void *kaddr;
        const struct vle_map_blocks_iter_ctx ctx = {
                .inode = inode,
                .sb = inode->i_sb,
                .clusterbits = EROFS_I_SB(inode)->clusterbits,
-               .mpage_ret = mpage_ret,
+               .mpage_ret = &map->mpage,
                .kaddr_ret = &kaddr
        };
        const unsigned int clustersize = 1 << ctx.clusterbits;
@@ -1722,7 +1722,7 @@ int z_erofs_map_blocks_iter(struct inode *inode,
 
        /* initialize `pblk' to keep gcc from printing foolish warnings */
        erofs_blk_t mblk, pblk = 0;
-       struct page *mpage = *mpage_ret;
+       struct page *mpage = map->mpage;
        struct z_erofs_vle_decompressed_index *di;
        unsigned int cluster_type, logical_cluster_ofs;
        int err = 0;
@@ -1758,7 +1758,7 @@ int z_erofs_map_blocks_iter(struct inode *inode,
                        err = PTR_ERR(mpage);
                        goto out;
                }
-               *mpage_ret = mpage;
+               map->mpage = mpage;
        } else {
                lock_page(mpage);
                DBG_BUGON(!PageUptodate(mpage));
@@ -1818,7 +1818,7 @@ int z_erofs_map_blocks_iter(struct inode *inode,
                /* get the correspoinding first chunk */
                err = vle_get_logical_extent_head(&ctx, lcn, &ofs,
                                                  &pblk, &map->m_flags);
-               mpage = *mpage_ret;
+               mpage = map->mpage;
 
                if (unlikely(err)) {
                        if (mpage)