forked from luck/tmp_suning_uos_patched
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: David Sterba <dsterba@suse.cz> Reviewed-by: Chao Yu <yuchao0@huawei.com> Signed-off-by: Gao Xiang <gaoxiang25@huawei.com> Link: https://lore.kernel.org/r/20190731155752.210602-15-gaoxiang25@huawei.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
b25a15191c
commit
46c2d14943
|
@ -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,
|
||||
|
|
Loading…
Reference in New Issue
Block a user