Commit 46c2d149 authored by Gao Xiang's avatar Gao Xiang Committed by Greg Kroah-Hartman

staging: erofs: kill CONFIG_EROFS_FS_USE_VM_MAP_RAM

Turn into a module parameter ("use_vmap") as it
can be set at runtime.
Suggested-by: default avatarDavid Sterba <dsterba@suse.cz>
Reviewed-by: default avatarChao Yu <yuchao0@huawei.com>
Signed-off-by: default avatarGao Xiang <gaoxiang25@huawei.com>
Link: https://lore.kernel.org/r/20190731155752.210602-15-gaoxiang25@huawei.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent b25a1519
......@@ -66,6 +66,10 @@ fault_injection=%d Enable fault injection in all supported types with
(no)acl Setup POSIX Access Control List. Note: acl is enabled
by default if CONFIG_EROFS_FS_POSIX_ACL is selected.
Module parameters
=================
use_vmap=[0|1] Use vmap() instead of vm_map_ram() (default 0).
On-disk details
===============
......
......@@ -63,14 +63,6 @@ config EROFS_FS_SECURITY
If you are not using a security module, say N.
config EROFS_FS_USE_VM_MAP_RAM
bool "EROFS VM_MAP_RAM Support"
depends on EROFS_FS
help
use vm_map_ram/vm_unmap_ram instead of vmap/vunmap.
If you don't know what these are, say N.
config EROFS_FAULT_INJECTION
bool "EROFS fault injection facility"
depends on EROFS_FS
......
......@@ -7,6 +7,7 @@
* Created by Gao Xiang <gaoxiang25@huawei.com>
*/
#include "compress.h"
#include <linux/module.h>
#include <linux/lz4.h>
#ifndef LZ4_DISTANCE_MAX /* history window size */
......@@ -29,6 +30,10 @@ 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 lz4_prepare_destpages(struct z_erofs_decompress_req *rq,
struct list_head *pagepool)
{
......@@ -219,29 +224,28 @@ static void copy_from_pcpubuf(struct page **out, const char *dst,
static void *erofs_vmap(struct page **pages, unsigned int count)
{
#ifdef CONFIG_EROFS_FS_USE_VM_MAP_RAM
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;
#else
return vmap(pages, count, VM_MAP, PAGE_KERNEL);
#endif
}
static void erofs_vunmap(const void *mem, unsigned int count)
{
#ifdef CONFIG_EROFS_FS_USE_VM_MAP_RAM
vm_unmap_ram(mem, count);
#else
vunmap(mem);
#endif
if (!use_vmap)
vm_unmap_ram(mem, count);
else
vunmap(mem);
}
static int decompress_generic(struct z_erofs_decompress_req *rq,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment