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

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.com


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent b25a1519
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -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
===============

+0 −8
Original line number Diff line number Diff line
@@ -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
+13 −9
Original line number Diff line number Diff line
@@ -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
	if (!use_vmap)
		vm_unmap_ram(mem, count);
#else
	else
		vunmap(mem);
#endif
}

static int decompress_generic(struct z_erofs_decompress_req *rq,