]> Git Repo - linux.git/commitdiff
erofs: kill use_vmap module parameter
authorGao Xiang <[email protected]>
Wed, 4 Sep 2019 02:09:07 +0000 (10:09 +0800)
committerGreg Kroah-Hartman <[email protected]>
Thu, 5 Sep 2019 18:10:09 +0000 (20:10 +0200)
As Christoph said [1],
"vm_map_ram is supposed to generally behave better.  So if
it doesn't please report that that to the arch maintainer
and linux-mm so that they can look into the issue.  Having
user make choices of deep down kernel internals is just
a horrible interface.

Please talk to maintainers of other bits of the kernel
if you see issues and / or need enhancements. "

Let's redo the previous conclusion and kill the vmap
approach.

[1] https://lore.kernel.org/r/20190830165533[email protected]/
Reported-by: Christoph Hellwig <[email protected]>
Signed-off-by: Gao Xiang <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
Documentation/filesystems/erofs.txt
fs/erofs/decompressor.c

index c3b5f603b2b64f4a87bea352699d2cb12ae2ace0..b0c085326e2e68f4ead9063af48beeda0b48dcf9 100644 (file)
@@ -67,10 +67,6 @@ cache_strategy=%s      Select a strategy for cached decompression from now on:
                                    It still does in-place I/O decompression
                                    for the rest compressed physical clusters.
 
-Module parameters
-=================
-use_vmap=[0|1]         Use vmap() instead of vm_map_ram() (default 0).
-
 On-disk details
 ===============
 
index 8ed38504a9f1441faebc06899839f81af88588bb..37177d49d1259eb6f361a4cd469f0bf737aa4a8d 100644 (file)
@@ -28,10 +28,6 @@ struct z_erofs_decompressor {
        char *name;
 };
 
-static bool use_vmap;
-module_param(use_vmap, bool, 0444);
-MODULE_PARM_DESC(use_vmap, "Use vmap() instead of vm_map_ram() (default 0)");
-
 static int z_erofs_lz4_prepare_destpages(struct z_erofs_decompress_req *rq,
                                         struct list_head *pagepool)
 {
@@ -221,32 +217,6 @@ static void copy_from_pcpubuf(struct page **out, const char *dst,
        }
 }
 
-static void *erofs_vmap(struct page **pages, unsigned int count)
-{
-       int i = 0;
-
-       if (use_vmap)
-               return vmap(pages, count, VM_MAP, PAGE_KERNEL);
-
-       while (1) {
-               void *addr = vm_map_ram(pages, count, -1, PAGE_KERNEL);
-
-               /* retry two more times (totally 3 times) */
-               if (addr || ++i >= 3)
-                       return addr;
-               vm_unmap_aliases();
-       }
-       return NULL;
-}
-
-static void erofs_vunmap(const void *mem, unsigned int count)
-{
-       if (!use_vmap)
-               vm_unmap_ram(mem, count);
-       else
-               vunmap(mem);
-}
-
 static int z_erofs_decompress_generic(struct z_erofs_decompress_req *rq,
                                      struct list_head *pagepool)
 {
@@ -255,7 +225,7 @@ static int z_erofs_decompress_generic(struct z_erofs_decompress_req *rq,
        const struct z_erofs_decompressor *alg = decompressors + rq->alg;
        unsigned int dst_maptype;
        void *dst;
-       int ret;
+       int ret, i;
 
        if (nrpages_out == 1 && !rq->inplace_io) {
                DBG_BUGON(!*rq->out);
@@ -293,9 +263,19 @@ static int z_erofs_decompress_generic(struct z_erofs_decompress_req *rq,
                goto dstmap_out;
        }
 
-       dst = erofs_vmap(rq->out, nrpages_out);
+       i = 0;
+       while (1) {
+               dst = vm_map_ram(rq->out, nrpages_out, -1, PAGE_KERNEL);
+
+               /* retry two more times (totally 3 times) */
+               if (dst || ++i >= 3)
+                       break;
+               vm_unmap_aliases();
+       }
+
        if (!dst)
                return -ENOMEM;
+
        dst_maptype = 2;
 
 dstmap_out:
@@ -304,7 +284,7 @@ dstmap_out:
        if (!dst_maptype)
                kunmap_atomic(dst);
        else if (dst_maptype == 2)
-               erofs_vunmap(dst, nrpages_out);
+               vm_unmap_ram(dst, nrpages_out);
        return ret;
 }
 
This page took 0.057035 seconds and 4 git commands to generate.