mirror of
git://sourceware.org/git/lvm2.git
synced 2025-01-02 01:18:26 +03:00
cache: add tool support
Introducing cache tool support.
This commit is contained in:
parent
5c3d894013
commit
f9d80c9d31
@ -1,5 +1,6 @@
|
|||||||
Version 2.02.108 -
|
Version 2.02.108 -
|
||||||
=================================
|
=================================
|
||||||
|
Add initial code to use cache tools (cache_check|dump|repair|restore).
|
||||||
Add "degraded" activation mode and make it the default.
|
Add "degraded" activation mode and make it the default.
|
||||||
Add separate lv_active_{locally,remotely,exclusively} LV reporting fields.
|
Add separate lv_active_{locally,remotely,exclusively} LV reporting fields.
|
||||||
Recognize "auto"/"unmanaged" values in selection for appropriate fields only.
|
Recognize "auto"/"unmanaged" values in selection for appropriate fields only.
|
||||||
|
@ -744,6 +744,36 @@ global {
|
|||||||
# external_origin_extend
|
# external_origin_extend
|
||||||
#
|
#
|
||||||
# thin_disabled_features = [ "discards", "block_size" ]
|
# thin_disabled_features = [ "discards", "block_size" ]
|
||||||
|
|
||||||
|
# Full path of the utility called to check that a cache metadata device
|
||||||
|
# is in a state that allows it to be used.
|
||||||
|
# Each time a cached LV needs to be used or after it is deactivated
|
||||||
|
# this utility is executed. The activation will only proceed if the utility
|
||||||
|
# has an exit status of 0.
|
||||||
|
# Set to "" to skip this check. (Not recommended.)
|
||||||
|
# The cache tools are available as part of the device-mapper-persistent-data
|
||||||
|
# package from https://github.com/jthornber/thin-provisioning-tools.
|
||||||
|
#
|
||||||
|
# cache_check_executable = "@CACHE_CHECK_CMD@"
|
||||||
|
|
||||||
|
# Array of string options passed with cache_check command. By default,
|
||||||
|
# option "-q" is for quiet output.
|
||||||
|
#
|
||||||
|
# cache_check_options = [ "-q" ]
|
||||||
|
|
||||||
|
# Full path of the utility called to repair a cache metadata device.
|
||||||
|
# Each time a cache metadata needs repair this utility is executed.
|
||||||
|
# See cache_check_executable how to obtain binaries.
|
||||||
|
#
|
||||||
|
# cache_repair_executable = "@CACHE_REPAIR_CMD@"
|
||||||
|
|
||||||
|
# Array of extra string options passed with cache_repair command.
|
||||||
|
# cache_repair_options = [ "" ]
|
||||||
|
|
||||||
|
# Full path of the utility called to dump cache metadata content.
|
||||||
|
# See cache_check_executable how to obtain binaries.
|
||||||
|
#
|
||||||
|
# cache_dump_executable = "@CACHE_DUMP_CMD@"
|
||||||
}
|
}
|
||||||
|
|
||||||
activation {
|
activation {
|
||||||
|
89
configure.in
89
configure.in
@ -447,7 +447,7 @@ case "$THIN" in
|
|||||||
THIN_CHECK_NEEDS_CHECK=no
|
THIN_CHECK_NEEDS_CHECK=no
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
# Empty means a config way to ignore thin checking
|
# Empty means a config way to ignore thin dumping
|
||||||
if test "$THIN_DUMP_CMD" = "autodetect"; then
|
if test "$THIN_DUMP_CMD" = "autodetect"; then
|
||||||
AC_PATH_TOOL(THIN_DUMP_CMD, thin_dump)
|
AC_PATH_TOOL(THIN_DUMP_CMD, thin_dump)
|
||||||
test -z "$THIN_DUMP_CMD" && {
|
test -z "$THIN_DUMP_CMD" && {
|
||||||
@ -456,7 +456,7 @@ case "$THIN" in
|
|||||||
THIN_CONFIGURE_WARN=y
|
THIN_CONFIGURE_WARN=y
|
||||||
}
|
}
|
||||||
fi
|
fi
|
||||||
# Empty means a config way to ignore thin checking
|
# Empty means a config way to ignore thin repairing
|
||||||
if test "$THIN_REPAIR_CMD" = "autodetect"; then
|
if test "$THIN_REPAIR_CMD" = "autodetect"; then
|
||||||
AC_PATH_TOOL(THIN_REPAIR_CMD, thin_repair)
|
AC_PATH_TOOL(THIN_REPAIR_CMD, thin_repair)
|
||||||
test -z "$THIN_REPAIR_CMD" && {
|
test -z "$THIN_REPAIR_CMD" && {
|
||||||
@ -465,7 +465,7 @@ case "$THIN" in
|
|||||||
THIN_CONFIGURE_WARN=y
|
THIN_CONFIGURE_WARN=y
|
||||||
}
|
}
|
||||||
fi
|
fi
|
||||||
# Empty means a config way to ignore thin checking
|
# Empty means a config way to ignore thin restoring
|
||||||
if test "$THIN_RESTORE_CMD" = "autodetect"; then
|
if test "$THIN_RESTORE_CMD" = "autodetect"; then
|
||||||
AC_PATH_TOOL(THIN_RESTORE_CMD, thin_restore)
|
AC_PATH_TOOL(THIN_RESTORE_CMD, thin_restore)
|
||||||
test -z "$THIN_RESTORE_CMD" && {
|
test -z "$THIN_RESTORE_CMD" && {
|
||||||
@ -500,9 +500,24 @@ dnl -- cache inclusion type
|
|||||||
AC_MSG_CHECKING(whether to include cache)
|
AC_MSG_CHECKING(whether to include cache)
|
||||||
AC_ARG_WITH(cache,
|
AC_ARG_WITH(cache,
|
||||||
AC_HELP_STRING([--with-cache=TYPE],
|
AC_HELP_STRING([--with-cache=TYPE],
|
||||||
[cache support: internal/shared/none
|
[cache support: internal/shared/none [[TYPE=none]]]),
|
||||||
[[TYPE=none]]]),
|
CACHE=$withval, CACHE="none")
|
||||||
CACHE=$withval, CACHE=none)
|
AC_ARG_WITH(cache-check,
|
||||||
|
AC_HELP_STRING([--with-cache-check=PATH],
|
||||||
|
[cache_check tool: [[autodetect]]]),
|
||||||
|
CACHE_CHECK_CMD=$withval, CACHE_CHECK_CMD="autodetect")
|
||||||
|
AC_ARG_WITH(cache-dump,
|
||||||
|
AC_HELP_STRING([--with-cache-dump=PATH],
|
||||||
|
[cache_dump tool: [[autodetect]]]),
|
||||||
|
CACHE_DUMP_CMD=$withval, CACHE_DUMP_CMD="autodetect")
|
||||||
|
AC_ARG_WITH(cache-repair,
|
||||||
|
AC_HELP_STRING([--with-cache-repair=PATH],
|
||||||
|
[cache_repair tool: [[autodetect]]]),
|
||||||
|
CACHE_REPAIR_CMD=$withval, CACHE_REPAIR_CMD="autodetect")
|
||||||
|
AC_ARG_WITH(cache-restore,
|
||||||
|
AC_HELP_STRING([--with-cache-restore=PATH],
|
||||||
|
[cache_restore tool: [[autodetect]]]),
|
||||||
|
CACHE_RESTORE_CMD=$withval, CACHE_RESTORE_CMD="autodetect")
|
||||||
AC_MSG_RESULT($CACHE)
|
AC_MSG_RESULT($CACHE)
|
||||||
|
|
||||||
case "$CACHE" in
|
case "$CACHE" in
|
||||||
@ -511,6 +526,62 @@ case "$CACHE" in
|
|||||||
*) AC_MSG_ERROR([--with-cache parameter invalid]) ;;
|
*) AC_MSG_ERROR([--with-cache parameter invalid]) ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
# Test if necessary cache tools are available
|
||||||
|
# if not - use plain defaults and warn user
|
||||||
|
case "$CACHE" in
|
||||||
|
internal|shared)
|
||||||
|
# Empty means a config way to ignore cache checking
|
||||||
|
if test "$CACHE_CHECK_CMD" = "autodetect"; then
|
||||||
|
AC_PATH_TOOL(CACHE_CHECK_CMD, cache_check)
|
||||||
|
if test -z "$CACHE_CHECK_CMD"; then
|
||||||
|
AC_MSG_WARN([cache_check not found in path $PATH])
|
||||||
|
CACHE_CHECK_CMD=/usr/sbin/cache_check
|
||||||
|
CACHE_CONFIGURE_WARN=y
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
# Empty means a config way to ignore cache dumping
|
||||||
|
if test "$CACHE_DUMP_CMD" = "autodetect"; then
|
||||||
|
AC_PATH_TOOL(CACHE_DUMP_CMD, cache_dump)
|
||||||
|
test -z "$CACHE_DUMP_CMD" && {
|
||||||
|
AC_MSG_WARN(cache_dump not found in path $PATH)
|
||||||
|
CACHE_DUMP_CMD=/usr/sbin/cache_dump
|
||||||
|
CACHE_CONFIGURE_WARN=y
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
# Empty means a config way to ignore cache repairing
|
||||||
|
if test "$CACHE_REPAIR_CMD" = "autodetect"; then
|
||||||
|
AC_PATH_TOOL(CACHE_REPAIR_CMD, cache_repair)
|
||||||
|
test -z "$CACHE_REPAIR_CMD" && {
|
||||||
|
AC_MSG_WARN(cache_repair not found in path $PATH)
|
||||||
|
CACHE_REPAIR_CMD=/usr/sbin/cache_repair
|
||||||
|
CACHE_CONFIGURE_WARN=y
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
# Empty means a config way to ignore cache restoring
|
||||||
|
if test "$CACHE_RESTORE_CMD" = "autodetect"; then
|
||||||
|
AC_PATH_TOOL(CACHE_RESTORE_CMD, cache_restore)
|
||||||
|
test -z "$CACHE_RESTORE_CMD" && {
|
||||||
|
AC_MSG_WARN(cache_restore not found in path $PATH)
|
||||||
|
CACHE_RESTORE_CMD=/usr/sbin/cache_restore
|
||||||
|
CACHE_CONFIGURE_WARN=y
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
AC_DEFINE_UNQUOTED([CACHE_CHECK_CMD], ["$CACHE_CHECK_CMD"],
|
||||||
|
[The path to 'cache_check', if available.])
|
||||||
|
|
||||||
|
AC_DEFINE_UNQUOTED([CACHE_DUMP_CMD], ["$CACHE_DUMP_CMD"],
|
||||||
|
[The path to 'cache_dump', if available.])
|
||||||
|
|
||||||
|
AC_DEFINE_UNQUOTED([CACHE_REPAIR_CMD], ["$CACHE_REPAIR_CMD"],
|
||||||
|
[The path to 'cache_repair', if available.])
|
||||||
|
|
||||||
|
AC_DEFINE_UNQUOTED([CACHE_RESTORE_CMD], ["$CACHE_RESTORE_CMD"],
|
||||||
|
[The path to 'cache_restore', if available.])
|
||||||
|
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
dnl -- Disable readline
|
dnl -- Disable readline
|
||||||
AC_MSG_CHECKING(whether to enable readline)
|
AC_MSG_CHECKING(whether to enable readline)
|
||||||
@ -1660,6 +1731,10 @@ AC_SUBST(THIN_CHECK_CMD)
|
|||||||
AC_SUBST(THIN_DUMP_CMD)
|
AC_SUBST(THIN_DUMP_CMD)
|
||||||
AC_SUBST(THIN_REPAIR_CMD)
|
AC_SUBST(THIN_REPAIR_CMD)
|
||||||
AC_SUBST(THIN_RESTORE_CMD)
|
AC_SUBST(THIN_RESTORE_CMD)
|
||||||
|
AC_SUBST(CACHE_CHECK_CMD)
|
||||||
|
AC_SUBST(CACHE_DUMP_CMD)
|
||||||
|
AC_SUBST(CACHE_REPAIR_CMD)
|
||||||
|
AC_SUBST(CACHE_RESTORE_CMD)
|
||||||
AC_SUBST(UDEV_PC)
|
AC_SUBST(UDEV_PC)
|
||||||
AC_SUBST(UDEV_RULES)
|
AC_SUBST(UDEV_RULES)
|
||||||
AC_SUBST(UDEV_SYNC)
|
AC_SUBST(UDEV_SYNC)
|
||||||
@ -1764,4 +1839,6 @@ test -n "$THIN_CONFIGURE_WARN" && AC_MSG_WARN([Support for thin provisioning is
|
|||||||
|
|
||||||
test -n "$THIN_CHECK_VERSION_WARN" && AC_MSG_WARN([You should also install thin_check vsn 0.3.2 (or later) to use lvm2 thin provisioning])
|
test -n "$THIN_CHECK_VERSION_WARN" && AC_MSG_WARN([You should also install thin_check vsn 0.3.2 (or later) to use lvm2 thin provisioning])
|
||||||
|
|
||||||
|
test -n "$CACHE_CONFIGURE_WARN" && AC_MSG_WARN([Support for cache is limited since some cache tools are missing!])
|
||||||
|
|
||||||
test "$ODIRECT" = yes || AC_MSG_WARN([O_DIRECT disabled: low-memory pvmove may lock up])
|
test "$ODIRECT" = yes || AC_MSG_WARN([O_DIRECT disabled: low-memory pvmove may lock up])
|
||||||
|
@ -182,6 +182,11 @@ cfg_array(global_thin_disabled_features_CFG, "thin_disabled_features", global_CF
|
|||||||
cfg(global_thin_dump_executable_CFG, "thin_dump_executable", global_CFG_SECTION, CFG_ALLOW_EMPTY, CFG_TYPE_STRING, THIN_DUMP_CMD, vsn(2, 2, 100), NULL)
|
cfg(global_thin_dump_executable_CFG, "thin_dump_executable", global_CFG_SECTION, CFG_ALLOW_EMPTY, CFG_TYPE_STRING, THIN_DUMP_CMD, vsn(2, 2, 100), NULL)
|
||||||
cfg(global_thin_repair_executable_CFG, "thin_repair_executable", global_CFG_SECTION, CFG_ALLOW_EMPTY, CFG_TYPE_STRING, THIN_REPAIR_CMD, vsn(2, 2, 100), NULL)
|
cfg(global_thin_repair_executable_CFG, "thin_repair_executable", global_CFG_SECTION, CFG_ALLOW_EMPTY, CFG_TYPE_STRING, THIN_REPAIR_CMD, vsn(2, 2, 100), NULL)
|
||||||
cfg_array(global_thin_repair_options_CFG, "thin_repair_options", global_CFG_SECTION, 0, CFG_TYPE_STRING, "#S" DEFAULT_THIN_REPAIR_OPTIONS, vsn(2, 2, 100), NULL)
|
cfg_array(global_thin_repair_options_CFG, "thin_repair_options", global_CFG_SECTION, 0, CFG_TYPE_STRING, "#S" DEFAULT_THIN_REPAIR_OPTIONS, vsn(2, 2, 100), NULL)
|
||||||
|
cfg(global_cache_check_executable_CFG, "cache_check_executable", global_CFG_SECTION, CFG_ALLOW_EMPTY, CFG_TYPE_STRING, CACHE_CHECK_CMD, vsn(2, 2, 108), NULL)
|
||||||
|
cfg_array(global_cache_check_options_CFG, "cache_check_options", global_CFG_SECTION, 0, CFG_TYPE_STRING, "#S" DEFAULT_CACHE_CHECK_OPTIONS, vsn(2, 2, 108), NULL)
|
||||||
|
cfg(global_cache_dump_executable_CFG, "cache_dump_executable", global_CFG_SECTION, CFG_ALLOW_EMPTY, CFG_TYPE_STRING, CACHE_DUMP_CMD, vsn(2, 2, 108), NULL)
|
||||||
|
cfg(global_cache_repair_executable_CFG, "cache_repair_executable", global_CFG_SECTION, CFG_ALLOW_EMPTY, CFG_TYPE_STRING, CACHE_REPAIR_CMD, vsn(2, 2, 108), NULL)
|
||||||
|
cfg_array(global_cache_repair_options_CFG, "cache_repair_options", global_CFG_SECTION, 0, CFG_TYPE_STRING, "#S" DEFAULT_CACHE_REPAIR_OPTIONS, vsn(2, 2, 108), NULL)
|
||||||
|
|
||||||
cfg(activation_checks_CFG, "checks", activation_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_ACTIVATION_CHECKS, vsn(2, 2, 86), NULL)
|
cfg(activation_checks_CFG, "checks", activation_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_ACTIVATION_CHECKS, vsn(2, 2, 86), NULL)
|
||||||
cfg(activation_udev_sync_CFG, "udev_sync", activation_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_UDEV_SYNC, vsn(2, 2, 51), NULL)
|
cfg(activation_udev_sync_CFG, "udev_sync", activation_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_UDEV_SYNC, vsn(2, 2, 51), NULL)
|
||||||
|
@ -90,6 +90,8 @@
|
|||||||
#define DEFAULT_THIN_POOL_ZERO 1
|
#define DEFAULT_THIN_POOL_ZERO 1
|
||||||
#define DEFAULT_POOL_METADATA_SPARE 1 /* thin + cache */
|
#define DEFAULT_POOL_METADATA_SPARE 1 /* thin + cache */
|
||||||
|
|
||||||
|
#define DEFAULT_CACHE_CHECK_OPTIONS "-q"
|
||||||
|
#define DEFAULT_CACHE_REPAIR_OPTIONS ""
|
||||||
#define DEFAULT_CACHE_POOL_METADATA_REQUIRE_SEPARATE_PVS 0
|
#define DEFAULT_CACHE_POOL_METADATA_REQUIRE_SEPARATE_PVS 0
|
||||||
#define DEFAULT_CACHE_POOL_CHUNK_SIZE 64 /* KB */
|
#define DEFAULT_CACHE_POOL_CHUNK_SIZE 64 /* KB */
|
||||||
#define DEFAULT_CACHE_POOL_MIN_METADATA_SIZE 2048 /* KB */
|
#define DEFAULT_CACHE_POOL_MIN_METADATA_SIZE 2048 /* KB */
|
||||||
|
@ -3,9 +3,21 @@
|
|||||||
/* Define to 1 to use libblkid detection of signatures when wiping. */
|
/* Define to 1 to use libblkid detection of signatures when wiping. */
|
||||||
#undef BLKID_WIPING_SUPPORT
|
#undef BLKID_WIPING_SUPPORT
|
||||||
|
|
||||||
|
/* The path to 'cache_check', if available. */
|
||||||
|
#undef CACHE_CHECK_CMD
|
||||||
|
|
||||||
|
/* The path to 'cache_dump', if available. */
|
||||||
|
#undef CACHE_DUMP_CMD
|
||||||
|
|
||||||
/* Define to 1 to include built-in support for cache. */
|
/* Define to 1 to include built-in support for cache. */
|
||||||
#undef CACHE_INTERNAL
|
#undef CACHE_INTERNAL
|
||||||
|
|
||||||
|
/* The path to 'cache_repair', if available. */
|
||||||
|
#undef CACHE_REPAIR_CMD
|
||||||
|
|
||||||
|
/* The path to 'cache_restore', if available. */
|
||||||
|
#undef CACHE_RESTORE_CMD
|
||||||
|
|
||||||
/* Define to 1 if the `closedir' function returns void instead of `int'. */
|
/* Define to 1 if the `closedir' function returns void instead of `int'. */
|
||||||
#undef CLOSEDIR_VOID
|
#undef CLOSEDIR_VOID
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user