open-cas-linux/configure.d/1_get_free_memory.conf
Robert Baldyga b00de9c940 Use available memory statistic when possible
Update function returning size of free memory to use available statistic
if that's supported by given kernel. This function is used to check
whether there is enough memory to start cache, and available statistic is
preferred for this check over free statistic, as it does include size of
page cache allocations which can be easily reclaimed by the system.

Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-10-12 08:12:42 +02:00

52 lines
1.2 KiB
Bash

#!/bin/bash
#
# Copyright(c) 2012-2022 Intel Corporation
# SPDX-License-Identifier: BSD-3-Clause
#
. $(dirname $3)/conf_framework.sh
check() {
cur_name=$(basename $2)
config_file_path=$1
if compile_module $cur_name "si_mem_available();" "linux/mm.h"
then
echo $cur_name "1" >> $config_file_path
elif compile_module $cur_name "global_zone_page_state(1);" "linux/mm.h"
then
echo $cur_name "2" >> $config_file_path
elif compile_module $cur_name "global_page_state(1);" "linux/mm.h"
then
echo $cur_name "3" >> $config_file_path
else
echo $cur_name "X" >> $config_file_path
fi
}
apply() {
case "$1" in
"1")
add_function "
static inline unsigned long cas_get_free_memory(void)
{
return si_mem_available() << PAGE_SHIFT;
}" ;;
"2")
add_function "
static inline unsigned long cas_get_free_memory(void)
{
return global_zone_page_state(NR_FREE_PAGES) << PAGE_SHIFT;
}" ;;
"3")
add_function "
static inline unsigned long cas_get_free_memory(void)
{
return global_page_state(NR_FREE_PAGES) << PAGE_SHIFT;
}" ;;
*)
exit 1
esac
}
conf_run $@