mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-21 13:34:40 +03:00
Make SIZE_SHORT the default for display_size().
Fix some memory leaks in error paths found by coverity. Use C99 struct initialisers. Move DEFS into configure.h. Clean-ups to remove miscellaneous compiler warnings.
This commit is contained in:
parent
b810c54700
commit
72b2cb613a
@ -1,6 +1,10 @@
|
|||||||
Version 2.02.06 -
|
Version 2.02.06 -
|
||||||
=================================
|
=================================
|
||||||
Some signed fixes.
|
Make SIZE_SHORT the default for display_size().
|
||||||
|
Fix some memory leaks in error paths found by coverity.
|
||||||
|
Use C99 struct initialisers.
|
||||||
|
Move DEFS into configure.h.
|
||||||
|
Clean-ups to remove miscellaneous compiler warnings.
|
||||||
Improve stripe size validation.
|
Improve stripe size validation.
|
||||||
Increase maximum stripe size limit to physical extent size for lvm2 metadata.
|
Increase maximum stripe size limit to physical extent size for lvm2 metadata.
|
||||||
Fix activation code to check for pre-existing mirror logs.
|
Fix activation code to check for pre-existing mirror logs.
|
||||||
|
407
configure
vendored
407
configure
vendored
@ -310,7 +310,7 @@ ac_includes_default="\
|
|||||||
#endif"
|
#endif"
|
||||||
|
|
||||||
ac_default_prefix=/usr
|
ac_default_prefix=/usr
|
||||||
ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os AWK CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN_S SET_MAKE RANLIB ac_ct_RANLIB CFLOW_CMD CSCOPE_CMD CPP EGREP ALLOCA LIBOBJS POW_LIB MSGFMT MODPROBE_CMD JOBS STATIC_LINK LVM1 POOL SNAPSHOTS MIRRORS OWNER GROUP LVM_DEFS COPTIMISE_FLAG CLDFLAGS CLDWHOLEARCHIVE CLDNOWHOLEARCHIVE LDDEPS LIB_SUFFIX LVM_VERSION LVM1_FALLBACK DEBUG DEVMAPPER HAVE_LIBDL HAVE_SELINUX CMDLIB LOCALEDIR CONFDIR STATICDIR INTL_PACKAGE INTL CLVMD CLUSTER FSADM DMEVENTD LTLIBOBJS'
|
ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os AWK CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN_S SET_MAKE RANLIB ac_ct_RANLIB CFLOW_CMD CSCOPE_CMD CPP EGREP ALLOCA LIBOBJS POW_LIB MSGFMT MODPROBE_CMD JOBS STATIC_LINK LVM1 POOL SNAPSHOTS MIRRORS OWNER GROUP COPTIMISE_FLAG CLDFLAGS CLDWHOLEARCHIVE CLDNOWHOLEARCHIVE LDDEPS LIB_SUFFIX LVM_VERSION LVM1_FALLBACK DEBUG DEVMAPPER HAVE_LIBDL HAVE_SELINUX CMDLIB LOCALEDIR CONFDIR STATICDIR INTL_PACKAGE INTL CLVMD CLUSTER FSADM DMEVENTD LTLIBOBJS'
|
||||||
ac_subst_files=''
|
ac_subst_files=''
|
||||||
|
|
||||||
# Initialize some variables set by options.
|
# Initialize some variables set by options.
|
||||||
@ -1331,6 +1331,10 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
ac_config_headers="$ac_config_headers lib/misc/configure.h"
|
||||||
|
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
ac_aux_dir=
|
ac_aux_dir=
|
||||||
for ac_dir in autoconf $srcdir/autoconf; do
|
for ac_dir in autoconf $srcdir/autoconf; do
|
||||||
@ -7227,7 +7231,11 @@ echo "$as_me:$LINENO: result: $LVM1_FALLBACK" >&5
|
|||||||
echo "${ECHO_T}$LVM1_FALLBACK" >&6
|
echo "${ECHO_T}$LVM1_FALLBACK" >&6
|
||||||
|
|
||||||
if test x$LVM1_FALLBACK = xyes; then
|
if test x$LVM1_FALLBACK = xyes; then
|
||||||
LVM_DEFS="$LVM_DEFS -DLVM1_FALLBACK"
|
|
||||||
|
cat >>confdefs.h <<\_ACEOF
|
||||||
|
#define LVM1_FALLBACK 1
|
||||||
|
_ACEOF
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
@ -7253,7 +7261,11 @@ echo "$as_me: error: --with-lvm1 parameter invalid
|
|||||||
fi;
|
fi;
|
||||||
|
|
||||||
if test x$LVM1 = xinternal; then
|
if test x$LVM1 = xinternal; then
|
||||||
LVM_DEFS="$LVM_DEFS -DLVM1_INTERNAL"
|
|
||||||
|
cat >>confdefs.h <<\_ACEOF
|
||||||
|
#define LVM1_INTERNAL 1
|
||||||
|
_ACEOF
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
@ -7279,7 +7291,11 @@ echo "$as_me: error: --with-pool parameter invalid
|
|||||||
fi;
|
fi;
|
||||||
|
|
||||||
if test x$POOL = xinternal; then
|
if test x$POOL = xinternal; then
|
||||||
LVM_DEFS="$LVM_DEFS -DPOOL_INTERNAL"
|
|
||||||
|
cat >>confdefs.h <<\_ACEOF
|
||||||
|
#define POOL_INTERNAL 1
|
||||||
|
_ACEOF
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
@ -7303,7 +7319,11 @@ echo "$as_me: error: --with-cluster parameter invalid
|
|||||||
fi;
|
fi;
|
||||||
|
|
||||||
if test x$CLUSTER = xinternal; then
|
if test x$CLUSTER = xinternal; then
|
||||||
LVM_DEFS="$LVM_DEFS -DCLUSTER_LOCKING_INTERNAL"
|
|
||||||
|
cat >>confdefs.h <<\_ACEOF
|
||||||
|
#define CLUSTER_LOCKING_INTERNAL 1
|
||||||
|
_ACEOF
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
@ -7329,7 +7349,11 @@ echo "$as_me: error: --with-snapshots parameter invalid
|
|||||||
fi;
|
fi;
|
||||||
|
|
||||||
if test x$SNAPSHOTS = xinternal; then
|
if test x$SNAPSHOTS = xinternal; then
|
||||||
LVM_DEFS="$LVM_DEFS -DSNAPSHOT_INTERNAL"
|
|
||||||
|
cat >>confdefs.h <<\_ACEOF
|
||||||
|
#define SNAPSHOT_INTERNAL 1
|
||||||
|
_ACEOF
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
@ -7355,7 +7379,11 @@ echo "$as_me: error: --with-mirrors parameter invalid
|
|||||||
fi;
|
fi;
|
||||||
|
|
||||||
if test x$MIRRORS = xinternal; then
|
if test x$MIRRORS = xinternal; then
|
||||||
LVM_DEFS="$LVM_DEFS -DMIRRORED_INTERNAL"
|
|
||||||
|
cat >>confdefs.h <<\_ACEOF
|
||||||
|
#define MIRRORED_INTERNAL 1
|
||||||
|
_ACEOF
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
@ -7385,7 +7413,11 @@ echo "$as_me:$LINENO: result: $READLINE" >&5
|
|||||||
echo "${ECHO_T}$READLINE" >&6
|
echo "${ECHO_T}$READLINE" >&6
|
||||||
|
|
||||||
if test x$READLINE = xyes; then
|
if test x$READLINE = xyes; then
|
||||||
LVM_DEFS="$LVM_DEFS -DREADLINE_SUPPORT"
|
|
||||||
|
cat >>confdefs.h <<\_ACEOF
|
||||||
|
#define READLINE_SUPPORT 1
|
||||||
|
_ACEOF
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
@ -7463,7 +7495,11 @@ echo "$as_me:$LINENO: result: $DEVMAPPER" >&5
|
|||||||
echo "${ECHO_T}$DEVMAPPER" >&6
|
echo "${ECHO_T}$DEVMAPPER" >&6
|
||||||
|
|
||||||
if test x$DEVMAPPER = xyes; then
|
if test x$DEVMAPPER = xyes; then
|
||||||
LVM_DEFS="$LVM_DEFS -DDEVMAPPER_SUPPORT"
|
|
||||||
|
cat >>confdefs.h <<\_ACEOF
|
||||||
|
#define DEVMAPPER_SUPPORT 1
|
||||||
|
_ACEOF
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
@ -7478,7 +7514,11 @@ echo "$as_me:$LINENO: result: $ODIRECT" >&5
|
|||||||
echo "${ECHO_T}$ODIRECT" >&6
|
echo "${ECHO_T}$ODIRECT" >&6
|
||||||
|
|
||||||
if test x$ODIRECT = xyes; then
|
if test x$ODIRECT = xyes; then
|
||||||
LVM_DEFS="$LVM_DEFS -DO_DIRECT_SUPPORT"
|
|
||||||
|
cat >>confdefs.h <<\_ACEOF
|
||||||
|
#define O_DIRECT_SUPPORT 1
|
||||||
|
_ACEOF
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
@ -7495,7 +7535,11 @@ echo "$as_me:$LINENO: result: $CMDLIB" >&5
|
|||||||
echo "${ECHO_T}$CMDLIB" >&6
|
echo "${ECHO_T}$CMDLIB" >&6
|
||||||
|
|
||||||
if test x$CMDLIB = xyes; then
|
if test x$CMDLIB = xyes; then
|
||||||
LVM_DEFS="$LVM_DEFS -DCMDLIB"
|
|
||||||
|
cat >>confdefs.h <<\_ACEOF
|
||||||
|
#define CMDLIB 1
|
||||||
|
_ACEOF
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
@ -7529,7 +7573,11 @@ echo "$as_me: error: --enable-dmeventd currently requires --with-mirrors=interna
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if test x$DMEVENTD = xyes; then
|
if test x$DMEVENTD = xyes; then
|
||||||
LVM_DEFS="$LVM_DEFS -DDMEVENTD"
|
|
||||||
|
cat >>confdefs.h <<\_ACEOF
|
||||||
|
#define DMEVENTD 1
|
||||||
|
_ACEOF
|
||||||
|
|
||||||
fi
|
fi
|
||||||
################################################################################
|
################################################################################
|
||||||
if [ "x$exec_prefix" = xNONE -a "x$prefix" = xNONE ];
|
if [ "x$exec_prefix" = xNONE -a "x$prefix" = xNONE ];
|
||||||
@ -8190,7 +8238,11 @@ fi
|
|||||||
|
|
||||||
|
|
||||||
if [ "x$HAVE_LIBDL" = xyes ]; then
|
if [ "x$HAVE_LIBDL" = xyes ]; then
|
||||||
LVM_DEFS="$LVM_DEFS -DHAVE_LIBDL"
|
|
||||||
|
cat >>confdefs.h <<\_ACEOF
|
||||||
|
#define HAVE_LIBDL 1
|
||||||
|
_ACEOF
|
||||||
|
|
||||||
LIBS="-ldl $LIBS"
|
LIBS="-ldl $LIBS"
|
||||||
else
|
else
|
||||||
HAVE_LIBDL=no
|
HAVE_LIBDL=no
|
||||||
@ -8364,7 +8416,11 @@ fi
|
|||||||
echo "${ECHO_T}$HAVE_SELINUX" >&6
|
echo "${ECHO_T}$HAVE_SELINUX" >&6
|
||||||
|
|
||||||
if test x$HAVE_SELINUX = xyes; then
|
if test x$HAVE_SELINUX = xyes; then
|
||||||
LVM_DEFS="$LVM_DEFS -DHAVE_SELINUX"
|
|
||||||
|
cat >>confdefs.h <<\_ACEOF
|
||||||
|
#define HAVE_SELINUX 1
|
||||||
|
_ACEOF
|
||||||
|
|
||||||
LIBS="-lselinux $LIBS"
|
LIBS="-lselinux $LIBS"
|
||||||
else
|
else
|
||||||
{ echo "$as_me:$LINENO: WARNING: Disabling selinux" >&5
|
{ echo "$as_me:$LINENO: WARNING: Disabling selinux" >&5
|
||||||
@ -8518,7 +8574,11 @@ if test `eval echo '${'$as_ac_Header'}'` = yes; then
|
|||||||
cat >>confdefs.h <<_ACEOF
|
cat >>confdefs.h <<_ACEOF
|
||||||
#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
|
#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
|
||||||
_ACEOF
|
_ACEOF
|
||||||
LVM_DEFS="$LVM_DEFS -DHAVE_GETOPTLONG"
|
|
||||||
|
cat >>confdefs.h <<\_ACEOF
|
||||||
|
#define HAVE_GETOPTLONG 1
|
||||||
|
_ACEOF
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
done
|
done
|
||||||
@ -8708,9 +8768,12 @@ fi
|
|||||||
echo "$as_me:$LINENO: result: $ac_cv_func_rl_completion_matches" >&5
|
echo "$as_me:$LINENO: result: $ac_cv_func_rl_completion_matches" >&5
|
||||||
echo "${ECHO_T}$ac_cv_func_rl_completion_matches" >&6
|
echo "${ECHO_T}$ac_cv_func_rl_completion_matches" >&6
|
||||||
if test $ac_cv_func_rl_completion_matches = yes; then
|
if test $ac_cv_func_rl_completion_matches = yes; then
|
||||||
LVM_DEFS="$LVM_DEFS -DHAVE_RL_COMPLETION_MATCHES"
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
cat >>confdefs.h <<\_ACEOF
|
||||||
|
#define HAVE_RL_COMPLETION_MATCHES 1
|
||||||
|
_ACEOF
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -10990,9 +11053,52 @@ else
|
|||||||
echo "${ECHO_T}no" >&6
|
echo "${ECHO_T}no" >&6
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Extract the first word of "ifconfig", so it can be a program name with args.
|
||||||
|
set dummy ifconfig; ac_word=$2
|
||||||
|
echo "$as_me:$LINENO: checking for $ac_word" >&5
|
||||||
|
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
|
||||||
|
if test "${ac_cv_path_MODPROBE_CMD+set}" = set; then
|
||||||
|
echo $ECHO_N "(cached) $ECHO_C" >&6
|
||||||
|
else
|
||||||
|
case $MODPROBE_CMD in
|
||||||
|
[\\/]* | ?:[\\/]*)
|
||||||
|
ac_cv_path_MODPROBE_CMD="$MODPROBE_CMD" # Let the user override the test with a path.
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
|
||||||
|
for as_dir in $PATH
|
||||||
|
do
|
||||||
|
IFS=$as_save_IFS
|
||||||
|
test -z "$as_dir" && as_dir=.
|
||||||
|
for ac_exec_ext in '' $ac_executable_extensions; do
|
||||||
|
if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
|
||||||
|
ac_cv_path_MODPROBE_CMD="$as_dir/$ac_word$ac_exec_ext"
|
||||||
|
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
|
||||||
|
break 2
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done
|
||||||
|
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
MODPROBE_CMD=$ac_cv_path_MODPROBE_CMD
|
||||||
|
|
||||||
|
if test -n "$MODPROBE_CMD"; then
|
||||||
|
echo "$as_me:$LINENO: result: $MODPROBE_CMD" >&5
|
||||||
|
echo "${ECHO_T}$MODPROBE_CMD" >&6
|
||||||
|
else
|
||||||
|
echo "$as_me:$LINENO: result: no" >&5
|
||||||
|
echo "${ECHO_T}no" >&6
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
if test x$MODPROBE_CMD != x; then
|
if test x$MODPROBE_CMD != x; then
|
||||||
LVM_DEFS="$LVM_DEFS -DMODPROBE_CMD=\\\"$MODPROBE_CMD\\\""
|
|
||||||
|
cat >>confdefs.h <<_ACEOF
|
||||||
|
#define MODPROBE_CMD "$MODPROBE_CMD"
|
||||||
|
_ACEOF
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
@ -11038,7 +11144,6 @@ fi
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
@ -11117,38 +11222,7 @@ s/^[^=]*=[ ]*$//;
|
|||||||
}'
|
}'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Transform confdefs.h into DEFS.
|
DEFS=-DHAVE_CONFIG_H
|
||||||
# Protect against shell expansion while executing Makefile rules.
|
|
||||||
# Protect against Makefile macro expansion.
|
|
||||||
#
|
|
||||||
# If the first sed substitution is executed (which looks for macros that
|
|
||||||
# take arguments), then we branch to the quote section. Otherwise,
|
|
||||||
# look for a macro that doesn't take arguments.
|
|
||||||
cat >confdef2opt.sed <<\_ACEOF
|
|
||||||
t clear
|
|
||||||
: clear
|
|
||||||
s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g
|
|
||||||
t quote
|
|
||||||
s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g
|
|
||||||
t quote
|
|
||||||
d
|
|
||||||
: quote
|
|
||||||
s,[ `~#$^&*(){}\\|;'"<>?],\\&,g
|
|
||||||
s,\[,\\&,g
|
|
||||||
s,\],\\&,g
|
|
||||||
s,\$,$$,g
|
|
||||||
p
|
|
||||||
_ACEOF
|
|
||||||
# We use echo to avoid assuming a particular line-breaking character.
|
|
||||||
# The extra dot is to prevent the shell from consuming trailing
|
|
||||||
# line-breaks from the sub-command output. A line-break within
|
|
||||||
# single-quotes doesn't work because, if this script is created in a
|
|
||||||
# platform that uses two characters for line-breaks (e.g., DOS), tr
|
|
||||||
# would break.
|
|
||||||
ac_LF_and_DOT=`echo; echo .`
|
|
||||||
DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'`
|
|
||||||
rm -f confdef2opt.sed
|
|
||||||
|
|
||||||
|
|
||||||
ac_libobjs=
|
ac_libobjs=
|
||||||
ac_ltlibobjs=
|
ac_ltlibobjs=
|
||||||
@ -11482,10 +11556,15 @@ Usage: $0 [OPTIONS] [FILE]...
|
|||||||
--recheck update $as_me by reconfiguring in the same conditions
|
--recheck update $as_me by reconfiguring in the same conditions
|
||||||
--file=FILE[:TEMPLATE]
|
--file=FILE[:TEMPLATE]
|
||||||
instantiate the configuration file FILE
|
instantiate the configuration file FILE
|
||||||
|
--header=FILE[:TEMPLATE]
|
||||||
|
instantiate the configuration header FILE
|
||||||
|
|
||||||
Configuration files:
|
Configuration files:
|
||||||
$config_files
|
$config_files
|
||||||
|
|
||||||
|
Configuration headers:
|
||||||
|
$config_headers
|
||||||
|
|
||||||
Report bugs to <bug-autoconf@gnu.org>."
|
Report bugs to <bug-autoconf@gnu.org>."
|
||||||
_ACEOF
|
_ACEOF
|
||||||
|
|
||||||
@ -11618,6 +11697,7 @@ do
|
|||||||
"test/format1/Makefile" ) CONFIG_FILES="$CONFIG_FILES test/format1/Makefile" ;;
|
"test/format1/Makefile" ) CONFIG_FILES="$CONFIG_FILES test/format1/Makefile" ;;
|
||||||
"test/regex/Makefile" ) CONFIG_FILES="$CONFIG_FILES test/regex/Makefile" ;;
|
"test/regex/Makefile" ) CONFIG_FILES="$CONFIG_FILES test/regex/Makefile" ;;
|
||||||
"test/filters/Makefile" ) CONFIG_FILES="$CONFIG_FILES test/filters/Makefile" ;;
|
"test/filters/Makefile" ) CONFIG_FILES="$CONFIG_FILES test/filters/Makefile" ;;
|
||||||
|
"lib/misc/configure.h" ) CONFIG_HEADERS="$CONFIG_HEADERS lib/misc/configure.h" ;;
|
||||||
*) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
|
*) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
|
||||||
echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
|
echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
|
||||||
{ (exit 1); exit 1; }; };;
|
{ (exit 1); exit 1; }; };;
|
||||||
@ -11630,6 +11710,7 @@ done
|
|||||||
# bizarre bug on SunOS 4.1.3.
|
# bizarre bug on SunOS 4.1.3.
|
||||||
if $ac_need_defaults; then
|
if $ac_need_defaults; then
|
||||||
test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
|
test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
|
||||||
|
test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Have a temporary directory for convenience. Make it in the build tree
|
# Have a temporary directory for convenience. Make it in the build tree
|
||||||
@ -11745,7 +11826,6 @@ s,@SNAPSHOTS@,$SNAPSHOTS,;t t
|
|||||||
s,@MIRRORS@,$MIRRORS,;t t
|
s,@MIRRORS@,$MIRRORS,;t t
|
||||||
s,@OWNER@,$OWNER,;t t
|
s,@OWNER@,$OWNER,;t t
|
||||||
s,@GROUP@,$GROUP,;t t
|
s,@GROUP@,$GROUP,;t t
|
||||||
s,@LVM_DEFS@,$LVM_DEFS,;t t
|
|
||||||
s,@COPTIMISE_FLAG@,$COPTIMISE_FLAG,;t t
|
s,@COPTIMISE_FLAG@,$COPTIMISE_FLAG,;t t
|
||||||
s,@CLDFLAGS@,$CLDFLAGS,;t t
|
s,@CLDFLAGS@,$CLDFLAGS,;t t
|
||||||
s,@CLDWHOLEARCHIVE@,$CLDWHOLEARCHIVE,;t t
|
s,@CLDWHOLEARCHIVE@,$CLDWHOLEARCHIVE,;t t
|
||||||
@ -12007,6 +12087,229 @@ s,@INSTALL@,$ac_INSTALL,;t t
|
|||||||
|
|
||||||
done
|
done
|
||||||
_ACEOF
|
_ACEOF
|
||||||
|
cat >>$CONFIG_STATUS <<\_ACEOF
|
||||||
|
|
||||||
|
#
|
||||||
|
# CONFIG_HEADER section.
|
||||||
|
#
|
||||||
|
|
||||||
|
# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
|
||||||
|
# NAME is the cpp macro being defined and VALUE is the value it is being given.
|
||||||
|
#
|
||||||
|
# ac_d sets the value in "#define NAME VALUE" lines.
|
||||||
|
ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)'
|
||||||
|
ac_dB='[ ].*$,\1#\2'
|
||||||
|
ac_dC=' '
|
||||||
|
ac_dD=',;t'
|
||||||
|
# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
|
||||||
|
ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
|
||||||
|
ac_uB='$,\1#\2define\3'
|
||||||
|
ac_uC=' '
|
||||||
|
ac_uD=',;t'
|
||||||
|
|
||||||
|
for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
|
||||||
|
# Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
|
||||||
|
case $ac_file in
|
||||||
|
- | *:- | *:-:* ) # input from stdin
|
||||||
|
cat >$tmp/stdin
|
||||||
|
ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
|
||||||
|
ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
|
||||||
|
*:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
|
||||||
|
ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
|
||||||
|
* ) ac_file_in=$ac_file.in ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5
|
||||||
|
echo "$as_me: creating $ac_file" >&6;}
|
||||||
|
|
||||||
|
# First look for the input files in the build tree, otherwise in the
|
||||||
|
# src tree.
|
||||||
|
ac_file_inputs=`IFS=:
|
||||||
|
for f in $ac_file_in; do
|
||||||
|
case $f in
|
||||||
|
-) echo $tmp/stdin ;;
|
||||||
|
[\\/$]*)
|
||||||
|
# Absolute (can't be DOS-style, as IFS=:)
|
||||||
|
test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
|
||||||
|
echo "$as_me: error: cannot find input file: $f" >&2;}
|
||||||
|
{ (exit 1); exit 1; }; }
|
||||||
|
# Do quote $f, to prevent DOS paths from being IFS'd.
|
||||||
|
echo "$f";;
|
||||||
|
*) # Relative
|
||||||
|
if test -f "$f"; then
|
||||||
|
# Build tree
|
||||||
|
echo "$f"
|
||||||
|
elif test -f "$srcdir/$f"; then
|
||||||
|
# Source tree
|
||||||
|
echo "$srcdir/$f"
|
||||||
|
else
|
||||||
|
# /dev/null tree
|
||||||
|
{ { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
|
||||||
|
echo "$as_me: error: cannot find input file: $f" >&2;}
|
||||||
|
{ (exit 1); exit 1; }; }
|
||||||
|
fi;;
|
||||||
|
esac
|
||||||
|
done` || { (exit 1); exit 1; }
|
||||||
|
# Remove the trailing spaces.
|
||||||
|
sed 's/[ ]*$//' $ac_file_inputs >$tmp/in
|
||||||
|
|
||||||
|
_ACEOF
|
||||||
|
|
||||||
|
# Transform confdefs.h into two sed scripts, `conftest.defines' and
|
||||||
|
# `conftest.undefs', that substitutes the proper values into
|
||||||
|
# config.h.in to produce config.h. The first handles `#define'
|
||||||
|
# templates, and the second `#undef' templates.
|
||||||
|
# And first: Protect against being on the right side of a sed subst in
|
||||||
|
# config.status. Protect against being in an unquoted here document
|
||||||
|
# in config.status.
|
||||||
|
rm -f conftest.defines conftest.undefs
|
||||||
|
# Using a here document instead of a string reduces the quoting nightmare.
|
||||||
|
# Putting comments in sed scripts is not portable.
|
||||||
|
#
|
||||||
|
# `end' is used to avoid that the second main sed command (meant for
|
||||||
|
# 0-ary CPP macros) applies to n-ary macro definitions.
|
||||||
|
# See the Autoconf documentation for `clear'.
|
||||||
|
cat >confdef2sed.sed <<\_ACEOF
|
||||||
|
s/[\\&,]/\\&/g
|
||||||
|
s,[\\$`],\\&,g
|
||||||
|
t clear
|
||||||
|
: clear
|
||||||
|
s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp
|
||||||
|
t end
|
||||||
|
s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp
|
||||||
|
: end
|
||||||
|
_ACEOF
|
||||||
|
# If some macros were called several times there might be several times
|
||||||
|
# the same #defines, which is useless. Nevertheless, we may not want to
|
||||||
|
# sort them, since we want the *last* AC-DEFINE to be honored.
|
||||||
|
uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines
|
||||||
|
sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs
|
||||||
|
rm -f confdef2sed.sed
|
||||||
|
|
||||||
|
# This sed command replaces #undef with comments. This is necessary, for
|
||||||
|
# example, in the case of _POSIX_SOURCE, which is predefined and required
|
||||||
|
# on some systems where configure will not decide to define it.
|
||||||
|
cat >>conftest.undefs <<\_ACEOF
|
||||||
|
s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
|
||||||
|
_ACEOF
|
||||||
|
|
||||||
|
# Break up conftest.defines because some shells have a limit on the size
|
||||||
|
# of here documents, and old seds have small limits too (100 cmds).
|
||||||
|
echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS
|
||||||
|
echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS
|
||||||
|
echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS
|
||||||
|
echo ' :' >>$CONFIG_STATUS
|
||||||
|
rm -f conftest.tail
|
||||||
|
while grep . conftest.defines >/dev/null
|
||||||
|
do
|
||||||
|
# Write a limited-size here document to $tmp/defines.sed.
|
||||||
|
echo ' cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS
|
||||||
|
# Speed up: don't consider the non `#define' lines.
|
||||||
|
echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS
|
||||||
|
# Work around the forget-to-reset-the-flag bug.
|
||||||
|
echo 't clr' >>$CONFIG_STATUS
|
||||||
|
echo ': clr' >>$CONFIG_STATUS
|
||||||
|
sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS
|
||||||
|
echo 'CEOF
|
||||||
|
sed -f $tmp/defines.sed $tmp/in >$tmp/out
|
||||||
|
rm -f $tmp/in
|
||||||
|
mv $tmp/out $tmp/in
|
||||||
|
' >>$CONFIG_STATUS
|
||||||
|
sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail
|
||||||
|
rm -f conftest.defines
|
||||||
|
mv conftest.tail conftest.defines
|
||||||
|
done
|
||||||
|
rm -f conftest.defines
|
||||||
|
echo ' fi # grep' >>$CONFIG_STATUS
|
||||||
|
echo >>$CONFIG_STATUS
|
||||||
|
|
||||||
|
# Break up conftest.undefs because some shells have a limit on the size
|
||||||
|
# of here documents, and old seds have small limits too (100 cmds).
|
||||||
|
echo ' # Handle all the #undef templates' >>$CONFIG_STATUS
|
||||||
|
rm -f conftest.tail
|
||||||
|
while grep . conftest.undefs >/dev/null
|
||||||
|
do
|
||||||
|
# Write a limited-size here document to $tmp/undefs.sed.
|
||||||
|
echo ' cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS
|
||||||
|
# Speed up: don't consider the non `#undef'
|
||||||
|
echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS
|
||||||
|
# Work around the forget-to-reset-the-flag bug.
|
||||||
|
echo 't clr' >>$CONFIG_STATUS
|
||||||
|
echo ': clr' >>$CONFIG_STATUS
|
||||||
|
sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS
|
||||||
|
echo 'CEOF
|
||||||
|
sed -f $tmp/undefs.sed $tmp/in >$tmp/out
|
||||||
|
rm -f $tmp/in
|
||||||
|
mv $tmp/out $tmp/in
|
||||||
|
' >>$CONFIG_STATUS
|
||||||
|
sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail
|
||||||
|
rm -f conftest.undefs
|
||||||
|
mv conftest.tail conftest.undefs
|
||||||
|
done
|
||||||
|
rm -f conftest.undefs
|
||||||
|
|
||||||
|
cat >>$CONFIG_STATUS <<\_ACEOF
|
||||||
|
# Let's still pretend it is `configure' which instantiates (i.e., don't
|
||||||
|
# use $as_me), people would be surprised to read:
|
||||||
|
# /* config.h. Generated by config.status. */
|
||||||
|
if test x"$ac_file" = x-; then
|
||||||
|
echo "/* Generated by configure. */" >$tmp/config.h
|
||||||
|
else
|
||||||
|
echo "/* $ac_file. Generated by configure. */" >$tmp/config.h
|
||||||
|
fi
|
||||||
|
cat $tmp/in >>$tmp/config.h
|
||||||
|
rm -f $tmp/in
|
||||||
|
if test x"$ac_file" != x-; then
|
||||||
|
if diff $ac_file $tmp/config.h >/dev/null 2>&1; then
|
||||||
|
{ echo "$as_me:$LINENO: $ac_file is unchanged" >&5
|
||||||
|
echo "$as_me: $ac_file is unchanged" >&6;}
|
||||||
|
else
|
||||||
|
ac_dir=`(dirname "$ac_file") 2>/dev/null ||
|
||||||
|
$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
|
||||||
|
X"$ac_file" : 'X\(//\)[^/]' \| \
|
||||||
|
X"$ac_file" : 'X\(//\)$' \| \
|
||||||
|
X"$ac_file" : 'X\(/\)' \| \
|
||||||
|
. : '\(.\)' 2>/dev/null ||
|
||||||
|
echo X"$ac_file" |
|
||||||
|
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
|
||||||
|
/^X\(\/\/\)[^/].*/{ s//\1/; q; }
|
||||||
|
/^X\(\/\/\)$/{ s//\1/; q; }
|
||||||
|
/^X\(\/\).*/{ s//\1/; q; }
|
||||||
|
s/.*/./; q'`
|
||||||
|
{ if $as_mkdir_p; then
|
||||||
|
mkdir -p "$ac_dir"
|
||||||
|
else
|
||||||
|
as_dir="$ac_dir"
|
||||||
|
as_dirs=
|
||||||
|
while test ! -d "$as_dir"; do
|
||||||
|
as_dirs="$as_dir $as_dirs"
|
||||||
|
as_dir=`(dirname "$as_dir") 2>/dev/null ||
|
||||||
|
$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
|
||||||
|
X"$as_dir" : 'X\(//\)[^/]' \| \
|
||||||
|
X"$as_dir" : 'X\(//\)$' \| \
|
||||||
|
X"$as_dir" : 'X\(/\)' \| \
|
||||||
|
. : '\(.\)' 2>/dev/null ||
|
||||||
|
echo X"$as_dir" |
|
||||||
|
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
|
||||||
|
/^X\(\/\/\)[^/].*/{ s//\1/; q; }
|
||||||
|
/^X\(\/\/\)$/{ s//\1/; q; }
|
||||||
|
/^X\(\/\).*/{ s//\1/; q; }
|
||||||
|
s/.*/./; q'`
|
||||||
|
done
|
||||||
|
test ! -n "$as_dirs" || mkdir $as_dirs
|
||||||
|
fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
|
||||||
|
echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
|
||||||
|
{ (exit 1); exit 1; }; }; }
|
||||||
|
|
||||||
|
rm -f $ac_file
|
||||||
|
mv $tmp/config.h $ac_file
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
cat $tmp/config.h
|
||||||
|
rm -f $tmp/config.h
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
_ACEOF
|
||||||
|
|
||||||
cat >>$CONFIG_STATUS <<\_ACEOF
|
cat >>$CONFIG_STATUS <<\_ACEOF
|
||||||
|
|
||||||
|
37
configure.in
37
configure.in
@ -18,6 +18,9 @@ AC_PREREQ(2.53)
|
|||||||
dnl -- Process this file with autoconf to produce a configure script.
|
dnl -- Process this file with autoconf to produce a configure script.
|
||||||
AC_INIT(lib/device/dev-cache.h)
|
AC_INIT(lib/device/dev-cache.h)
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
AC_CONFIG_HEADERS(lib/misc/configure.h)
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
dnl -- Setup the directory where autoconf has auxilary files
|
dnl -- Setup the directory where autoconf has auxilary files
|
||||||
AC_CONFIG_AUX_DIR(autoconf)
|
AC_CONFIG_AUX_DIR(autoconf)
|
||||||
@ -152,7 +155,7 @@ AC_ARG_ENABLE(lvm1_fallback, [ --enable-lvm1_fallback Use this to fall back an
|
|||||||
AC_MSG_RESULT($LVM1_FALLBACK)
|
AC_MSG_RESULT($LVM1_FALLBACK)
|
||||||
|
|
||||||
if test x$LVM1_FALLBACK = xyes; then
|
if test x$LVM1_FALLBACK = xyes; then
|
||||||
LVM_DEFS="$LVM_DEFS -DLVM1_FALLBACK"
|
AC_DEFINE([LVM1_FALLBACK], 1, [Define to 1 if 'lvm' should fall back to using LVM1 binaries if device-mapper is missing from the kernel])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
@ -172,7 +175,7 @@ if [[ "x$LVM1" != xnone -a "x$LVM1" != xinternal -a "x$LVM1" != xshared ]];
|
|||||||
fi;
|
fi;
|
||||||
|
|
||||||
if test x$LVM1 = xinternal; then
|
if test x$LVM1 = xinternal; then
|
||||||
LVM_DEFS="$LVM_DEFS -DLVM1_INTERNAL"
|
AC_DEFINE([LVM1_INTERNAL], 1, [Define to 1 to include built-in support for LVM1 metadata.])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
@ -192,7 +195,7 @@ if [[ "x$POOL" != xnone -a "x$POOL" != xinternal -a "x$POOL" != xshared ]];
|
|||||||
fi;
|
fi;
|
||||||
|
|
||||||
if test x$POOL = xinternal; then
|
if test x$POOL = xinternal; then
|
||||||
LVM_DEFS="$LVM_DEFS -DPOOL_INTERNAL"
|
AC_DEFINE([POOL_INTERNAL], 1, [Define to 1 to include built-in support for GFS pool metadata.])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
@ -211,7 +214,7 @@ if [[ "x$CLUSTER" != xnone -a "x$CLUSTER" != xinternal -a "x$CLUSTER" != xshared
|
|||||||
fi;
|
fi;
|
||||||
|
|
||||||
if test x$CLUSTER = xinternal; then
|
if test x$CLUSTER = xinternal; then
|
||||||
LVM_DEFS="$LVM_DEFS -DCLUSTER_LOCKING_INTERNAL"
|
AC_DEFINE([CLUSTER_LOCKING_INTERNAL], 1, [Define to 1 to include built-in support for clustered LVM locking.])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
@ -231,7 +234,7 @@ if [[ "x$SNAPSHOTS" != xnone -a "x$SNAPSHOTS" != xinternal -a "x$SNAPSHOTS" != x
|
|||||||
fi;
|
fi;
|
||||||
|
|
||||||
if test x$SNAPSHOTS = xinternal; then
|
if test x$SNAPSHOTS = xinternal; then
|
||||||
LVM_DEFS="$LVM_DEFS -DSNAPSHOT_INTERNAL"
|
AC_DEFINE([SNAPSHOT_INTERNAL], 1, [Define to 1 to include built-in support for snapshots.])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
@ -251,7 +254,7 @@ if [[ "x$MIRRORS" != xnone -a "x$MIRRORS" != xinternal -a "x$MIRRORS" != xshared
|
|||||||
fi;
|
fi;
|
||||||
|
|
||||||
if test x$MIRRORS = xinternal; then
|
if test x$MIRRORS = xinternal; then
|
||||||
LVM_DEFS="$LVM_DEFS -DMIRRORED_INTERNAL"
|
AC_DEFINE([MIRRORED_INTERNAL], 1, [Define to 1 to include built-in support for mirrors.])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
@ -269,7 +272,7 @@ READLINE=$enableval, READLINE=no)
|
|||||||
AC_MSG_RESULT($READLINE)
|
AC_MSG_RESULT($READLINE)
|
||||||
|
|
||||||
if test x$READLINE = xyes; then
|
if test x$READLINE = xyes; then
|
||||||
LVM_DEFS="$LVM_DEFS -DREADLINE_SUPPORT"
|
AC_DEFINE([READLINE_SUPPORT], 1, [Define to 1 to include the LVM readline shell.])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
@ -327,7 +330,7 @@ DEVMAPPER=$enableval)
|
|||||||
AC_MSG_RESULT($DEVMAPPER)
|
AC_MSG_RESULT($DEVMAPPER)
|
||||||
|
|
||||||
if test x$DEVMAPPER = xyes; then
|
if test x$DEVMAPPER = xyes; then
|
||||||
LVM_DEFS="$LVM_DEFS -DDEVMAPPER_SUPPORT"
|
AC_DEFINE([DEVMAPPER_SUPPORT], 1, [Define to 1 to enable device-mapper interaction.])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
@ -338,7 +341,7 @@ ODIRECT=$enableval)
|
|||||||
AC_MSG_RESULT($ODIRECT)
|
AC_MSG_RESULT($ODIRECT)
|
||||||
|
|
||||||
if test x$ODIRECT = xyes; then
|
if test x$ODIRECT = xyes; then
|
||||||
LVM_DEFS="$LVM_DEFS -DO_DIRECT_SUPPORT"
|
AC_DEFINE([O_DIRECT_SUPPORT], 1, [Define to 1 to enable O_DIRECT support.])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
@ -349,7 +352,7 @@ CMDLIB=$enableval, CMDLIB=no)
|
|||||||
AC_MSG_RESULT($CMDLIB)
|
AC_MSG_RESULT($CMDLIB)
|
||||||
|
|
||||||
if test x$CMDLIB = xyes; then
|
if test x$CMDLIB = xyes; then
|
||||||
LVM_DEFS="$LVM_DEFS -DCMDLIB"
|
AC_DEFINE([CMDLIB], 1, [Define to 1 to build the shared command library.])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
@ -374,7 +377,7 @@ AC_MSG_ERROR(
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if test x$DMEVENTD = xyes; then
|
if test x$DMEVENTD = xyes; then
|
||||||
LVM_DEFS="$LVM_DEFS -DDMEVENTD"
|
AC_DEFINE([DMEVENTD], 1, [Define to 1 to enable the device-mapper event daemon.])
|
||||||
fi
|
fi
|
||||||
################################################################################
|
################################################################################
|
||||||
dnl -- Mess with default exec_prefix
|
dnl -- Mess with default exec_prefix
|
||||||
@ -411,7 +414,7 @@ dnl -- Check for dlopen
|
|||||||
AC_CHECK_LIB(dl, dlopen, HAVE_LIBDL=yes, HAVE_LIBDL=no)
|
AC_CHECK_LIB(dl, dlopen, HAVE_LIBDL=yes, HAVE_LIBDL=no)
|
||||||
|
|
||||||
if [[ "x$HAVE_LIBDL" = xyes ]]; then
|
if [[ "x$HAVE_LIBDL" = xyes ]]; then
|
||||||
LVM_DEFS="$LVM_DEFS -DHAVE_LIBDL"
|
AC_DEFINE([HAVE_LIBDL], 1, [Define to 1 if dynamic libraries are available.])
|
||||||
LIBS="-ldl $LIBS"
|
LIBS="-ldl $LIBS"
|
||||||
else
|
else
|
||||||
HAVE_LIBDL=no
|
HAVE_LIBDL=no
|
||||||
@ -443,7 +446,7 @@ if test x$SELINUX = xyes; then
|
|||||||
AC_MSG_RESULT($HAVE_SELINUX)
|
AC_MSG_RESULT($HAVE_SELINUX)
|
||||||
|
|
||||||
if test x$HAVE_SELINUX = xyes; then
|
if test x$HAVE_SELINUX = xyes; then
|
||||||
LVM_DEFS="$LVM_DEFS -DHAVE_SELINUX"
|
AC_DEFINE([HAVE_SELINUX], 1, [Define to 1 to include support for selinux.])
|
||||||
LIBS="-lselinux $LIBS"
|
LIBS="-lselinux $LIBS"
|
||||||
else
|
else
|
||||||
AC_MSG_WARN(Disabling selinux)
|
AC_MSG_WARN(Disabling selinux)
|
||||||
@ -452,7 +455,7 @@ fi
|
|||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
dnl -- Check for getopt
|
dnl -- Check for getopt
|
||||||
AC_CHECK_HEADERS(getopt.h, LVM_DEFS="$LVM_DEFS -DHAVE_GETOPTLONG")
|
AC_CHECK_HEADERS(getopt.h, AC_DEFINE([HAVE_GETOPTLONG], 1, [Define to 1 to if getopt_long is available.]))
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
dnl -- Check for readline (Shamelessly copied from parted 1.4.17)
|
dnl -- Check for readline (Shamelessly copied from parted 1.4.17)
|
||||||
@ -467,8 +470,7 @@ Note: if you are using precompiled packages you will also need the development
|
|||||||
package as well (which may be called readline-devel or something similar).
|
package as well (which may be called readline-devel or something similar).
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
AC_CHECK_FUNC(rl_completion_matches, LVM_DEFS="$LVM_DEFS -DHAVE_RL_COMPLETION_MATCHES")
|
AC_CHECK_FUNC(rl_completion_matches, AC_DEFINE([HAVE_RL_COMPLETION_MATCHES], 1, [Define to 1 if rl_completion_matches() is available.]))
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
@ -548,7 +550,7 @@ fi
|
|||||||
AC_PATH_PROG(MODPROBE_CMD, modprobe)
|
AC_PATH_PROG(MODPROBE_CMD, modprobe)
|
||||||
|
|
||||||
if test x$MODPROBE_CMD != x; then
|
if test x$MODPROBE_CMD != x; then
|
||||||
LVM_DEFS="$LVM_DEFS -DMODPROBE_CMD=\\\"$MODPROBE_CMD\\\""
|
AC_DEFINE_UNQUOTED([MODPROBE_CMD], ["$MODPROBE_CMD"], [The path to 'modprobe', if available.])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
@ -568,7 +570,6 @@ AC_SUBST(MIRRORS)
|
|||||||
AC_SUBST(OWNER)
|
AC_SUBST(OWNER)
|
||||||
AC_SUBST(GROUP)
|
AC_SUBST(GROUP)
|
||||||
AC_SUBST(CFLAGS)
|
AC_SUBST(CFLAGS)
|
||||||
AC_SUBST(LVM_DEFS)
|
|
||||||
AC_SUBST(COPTIMISE_FLAG)
|
AC_SUBST(COPTIMISE_FLAG)
|
||||||
AC_SUBST(CLDFLAGS)
|
AC_SUBST(CLDFLAGS)
|
||||||
AC_SUBST(CLDWHOLEARCHIVE)
|
AC_SUBST(CLDWHOLEARCHIVE)
|
||||||
|
@ -57,7 +57,7 @@ int init_comms(unsigned short port)
|
|||||||
struct sockaddr_in6 addr;
|
struct sockaddr_in6 addr;
|
||||||
|
|
||||||
sock_hash = dm_hash_create(100);
|
sock_hash = dm_hash_create(100);
|
||||||
tcp_port = port ? port : DEFAULT_TCP_PORT;
|
tcp_port = port ? : DEFAULT_TCP_PORT;
|
||||||
|
|
||||||
listen_fd = socket(AF_INET6, SOCK_STREAM, 0);
|
listen_fd = socket(AF_INET6, SOCK_STREAM, 0);
|
||||||
|
|
||||||
|
@ -34,6 +34,7 @@
|
|||||||
../lib/metadata/segtype.h
|
../lib/metadata/segtype.h
|
||||||
../lib/mm/memlock.h
|
../lib/mm/memlock.h
|
||||||
../lib/mm/xlate.h
|
../lib/mm/xlate.h
|
||||||
|
../lib/misc/configure.h
|
||||||
../lib/misc/crc.h
|
../lib/misc/crc.h
|
||||||
../lib/misc/intl.h
|
../lib/misc/intl.h
|
||||||
../lib/misc/lib.h
|
../lib/misc/lib.h
|
||||||
|
@ -664,7 +664,8 @@ fail:
|
|||||||
}
|
}
|
||||||
|
|
||||||
int add_areas_line(struct dev_manager *dm, struct lv_segment *seg,
|
int add_areas_line(struct dev_manager *dm, struct lv_segment *seg,
|
||||||
struct dm_tree_node *node, int start_area, int areas)
|
struct dm_tree_node *node, uint32_t start_area,
|
||||||
|
uint32_t areas)
|
||||||
{
|
{
|
||||||
uint64_t extent_size = seg->lv->vg->extent_size;
|
uint64_t extent_size = seg->lv->vg->extent_size;
|
||||||
uint32_t s;
|
uint32_t s;
|
||||||
|
@ -24,7 +24,7 @@ int compose_areas_line(struct dev_manager *dm, struct lv_segment *seg,
|
|||||||
int start_area, int areas);
|
int start_area, int areas);
|
||||||
|
|
||||||
int add_areas_line(struct dev_manager *dm, struct lv_segment *seg,
|
int add_areas_line(struct dev_manager *dm, struct lv_segment *seg,
|
||||||
struct dm_tree_node *node, int start_area, int areas);
|
struct dm_tree_node *node, uint32_t start_area, uint32_t areas);
|
||||||
|
|
||||||
int build_dev_string(struct dev_manager *dm, char *dlid, char *devbuf,
|
int build_dev_string(struct dev_manager *dm, char *dlid, char *devbuf,
|
||||||
size_t bufsize, const char *desc);
|
size_t bufsize, const char *desc);
|
||||||
|
4
lib/cache/lvmcache.c
vendored
4
lib/cache/lvmcache.c
vendored
@ -474,10 +474,10 @@ static int _insert_vginfo(struct lvmcache_vginfo *new_vginfo, const char *vgid,
|
|||||||
|
|
||||||
/* Pre-existing VG takes precedence. Unexported VG takes precedence. */
|
/* Pre-existing VG takes precedence. Unexported VG takes precedence. */
|
||||||
if (primary_vginfo) {
|
if (primary_vginfo) {
|
||||||
if (!id_write_format((struct id *)vgid, uuid_new, sizeof(uuid_new)))
|
if (!id_write_format((const struct id *)vgid, uuid_new, sizeof(uuid_new)))
|
||||||
return_0;
|
return_0;
|
||||||
|
|
||||||
if (!id_write_format((struct id *)&primary_vginfo->vgid, uuid_primary,
|
if (!id_write_format((const struct id *)&primary_vginfo->vgid, uuid_primary,
|
||||||
sizeof(uuid_primary)))
|
sizeof(uuid_primary)))
|
||||||
return_0;
|
return_0;
|
||||||
|
|
||||||
|
@ -22,6 +22,8 @@
|
|||||||
|
|
||||||
#define SIZE_BUF 128
|
#define SIZE_BUF 128
|
||||||
|
|
||||||
|
typedef enum { SIZE_LONG = 0, SIZE_SHORT = 1, SIZE_UNIT = 2 } size_len_t;
|
||||||
|
|
||||||
static struct {
|
static struct {
|
||||||
alloc_policy_t alloc;
|
alloc_policy_t alloc;
|
||||||
const char *str;
|
const char *str;
|
||||||
@ -132,7 +134,7 @@ alloc_policy_t get_alloc_from_string(const char *str)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Size supplied in sectors */
|
/* Size supplied in sectors */
|
||||||
const char *display_size(struct cmd_context *cmd, uint64_t size, size_len_t sl)
|
static const char *_display_size(struct cmd_context *cmd, uint64_t size, size_len_t sl)
|
||||||
{
|
{
|
||||||
int s;
|
int s;
|
||||||
int suffix = 1, precision;
|
int suffix = 1, precision;
|
||||||
@ -200,6 +202,21 @@ const char *display_size(struct cmd_context *cmd, uint64_t size, size_len_t sl)
|
|||||||
return size_buf;
|
return size_buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char *display_size_long(struct cmd_context *cmd, uint64_t size)
|
||||||
|
{
|
||||||
|
return _display_size(cmd, size, SIZE_LONG);
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *display_size_units(struct cmd_context *cmd, uint64_t size)
|
||||||
|
{
|
||||||
|
return _display_size(cmd, size, SIZE_UNIT);
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *display_size(struct cmd_context *cmd, uint64_t size)
|
||||||
|
{
|
||||||
|
return _display_size(cmd, size, SIZE_SHORT);
|
||||||
|
}
|
||||||
|
|
||||||
void pvdisplay_colons(struct physical_volume *pv)
|
void pvdisplay_colons(struct physical_volume *pv)
|
||||||
{
|
{
|
||||||
char uuid[64];
|
char uuid[64];
|
||||||
@ -228,7 +245,7 @@ void pvdisplay_colons(struct physical_volume *pv)
|
|||||||
|
|
||||||
/* FIXME Include label fields */
|
/* FIXME Include label fields */
|
||||||
void pvdisplay_full(struct cmd_context *cmd, struct physical_volume *pv,
|
void pvdisplay_full(struct cmd_context *cmd, struct physical_volume *pv,
|
||||||
void *handle)
|
void *handle __attribute((unused)))
|
||||||
{
|
{
|
||||||
char uuid[64];
|
char uuid[64];
|
||||||
const char *size;
|
const char *size;
|
||||||
@ -248,18 +265,17 @@ void pvdisplay_full(struct cmd_context *cmd, struct physical_volume *pv,
|
|||||||
log_print("VG Name %s%s", pv->vg_name,
|
log_print("VG Name %s%s", pv->vg_name,
|
||||||
pv->status & EXPORTED_VG ? " (exported)" : "");
|
pv->status & EXPORTED_VG ? " (exported)" : "");
|
||||||
|
|
||||||
size = display_size(cmd, (uint64_t) pv->size, SIZE_SHORT);
|
size = display_size(cmd, (uint64_t) pv->size);
|
||||||
if (pv->pe_size && pv->pe_count) {
|
if (pv->pe_size && pv->pe_count) {
|
||||||
|
|
||||||
/******** FIXME display LVM on-disk data size
|
/******** FIXME display LVM on-disk data size
|
||||||
size2 = display_size(pv->size, SIZE_SHORT);
|
size2 = display_size(cmd, pv->size);
|
||||||
********/
|
********/
|
||||||
|
|
||||||
log_print("PV Size %s" " / not usable %s", /* [LVM: %s]", */
|
log_print("PV Size %s" " / not usable %s", /* [LVM: %s]", */
|
||||||
size,
|
size,
|
||||||
display_size(cmd, (pv->size -
|
display_size(cmd, (pv->size -
|
||||||
(uint64_t) pv->pe_count * pv->pe_size),
|
(uint64_t) pv->pe_count * pv->pe_size)));
|
||||||
SIZE_SHORT));
|
|
||||||
|
|
||||||
} else
|
} else
|
||||||
log_print("PV Size %s", size);
|
log_print("PV Size %s", size);
|
||||||
@ -288,8 +304,10 @@ void pvdisplay_full(struct cmd_context *cmd, struct physical_volume *pv,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int pvdisplay_short(struct cmd_context *cmd, struct volume_group *vg,
|
int pvdisplay_short(struct cmd_context *cmd __attribute((unused)),
|
||||||
struct physical_volume *pv, void *handle)
|
struct volume_group *vg __attribute((unused)),
|
||||||
|
struct physical_volume *pv,
|
||||||
|
void *handle __attribute((unused)))
|
||||||
{
|
{
|
||||||
char uuid[64];
|
char uuid[64];
|
||||||
|
|
||||||
@ -334,7 +352,7 @@ void lvdisplay_colons(struct logical_volume *lv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
int lvdisplay_full(struct cmd_context *cmd, struct logical_volume *lv,
|
int lvdisplay_full(struct cmd_context *cmd, struct logical_volume *lv,
|
||||||
void *handle)
|
void *handle __attribute((unused)))
|
||||||
{
|
{
|
||||||
struct lvinfo info;
|
struct lvinfo info;
|
||||||
int inkernel, snap_active = 0;
|
int inkernel, snap_active = 0;
|
||||||
@ -404,23 +422,21 @@ int lvdisplay_full(struct cmd_context *cmd, struct logical_volume *lv,
|
|||||||
|
|
||||||
log_print("LV Size %s",
|
log_print("LV Size %s",
|
||||||
display_size(cmd,
|
display_size(cmd,
|
||||||
snap_seg ? snap_seg->origin->size : lv->size,
|
snap_seg ? snap_seg->origin->size : lv->size));
|
||||||
SIZE_SHORT));
|
|
||||||
|
|
||||||
log_print("Current LE %u",
|
log_print("Current LE %u",
|
||||||
snap_seg ? snap_seg->origin->le_count : lv->le_count);
|
snap_seg ? snap_seg->origin->le_count : lv->le_count);
|
||||||
|
|
||||||
if (snap_seg) {
|
if (snap_seg) {
|
||||||
log_print("COW-table size %s",
|
log_print("COW-table size %s",
|
||||||
display_size(cmd, (uint64_t) lv->size, SIZE_SHORT));
|
display_size(cmd, (uint64_t) lv->size));
|
||||||
log_print("COW-table LE %u", lv->le_count);
|
log_print("COW-table LE %u", lv->le_count);
|
||||||
|
|
||||||
if (snap_active)
|
if (snap_active)
|
||||||
log_print("Allocated to snapshot %.2f%% ", snap_percent);
|
log_print("Allocated to snapshot %.2f%% ", snap_percent);
|
||||||
|
|
||||||
log_print("Snapshot chunk size %s",
|
log_print("Snapshot chunk size %s",
|
||||||
display_size(cmd, (uint64_t) snap_seg->chunk_size,
|
display_size(cmd, (uint64_t) snap_seg->chunk_size));
|
||||||
SIZE_SHORT));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
log_print("Segments %u", list_size(&lv->segments));
|
log_print("Segments %u", list_size(&lv->segments));
|
||||||
@ -497,7 +513,7 @@ int lvdisplay_segments(struct logical_volume *lv)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void vgdisplay_extents(struct volume_group *vg)
|
void vgdisplay_extents(struct volume_group *vg __attribute((unused)))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -544,7 +560,7 @@ void vgdisplay_full(struct volume_group *vg)
|
|||||||
log_print("Open LV %u", lvs_in_vg_opened(vg));
|
log_print("Open LV %u", lvs_in_vg_opened(vg));
|
||||||
/****** FIXME Max LV Size
|
/****** FIXME Max LV Size
|
||||||
log_print ( "MAX LV Size %s",
|
log_print ( "MAX LV Size %s",
|
||||||
( s1 = display_size ( LVM_LV_SIZE_MAX(vg), SIZE_SHORT)));
|
( s1 = display_size ( LVM_LV_SIZE_MAX(vg))));
|
||||||
free ( s1);
|
free ( s1);
|
||||||
*********/
|
*********/
|
||||||
log_print("Max PV %u", vg->max_pv);
|
log_print("Max PV %u", vg->max_pv);
|
||||||
@ -553,12 +569,10 @@ void vgdisplay_full(struct volume_group *vg)
|
|||||||
|
|
||||||
log_print("VG Size %s",
|
log_print("VG Size %s",
|
||||||
display_size(vg->cmd,
|
display_size(vg->cmd,
|
||||||
(uint64_t) vg->extent_count * vg->extent_size,
|
(uint64_t) vg->extent_count * vg->extent_size));
|
||||||
SIZE_SHORT));
|
|
||||||
|
|
||||||
log_print("PE Size %s",
|
log_print("PE Size %s",
|
||||||
display_size(vg->cmd, (uint64_t) vg->extent_size,
|
display_size(vg->cmd, (uint64_t) vg->extent_size));
|
||||||
SIZE_SHORT));
|
|
||||||
|
|
||||||
log_print("Total PE %u", vg->extent_count);
|
log_print("Total PE %u", vg->extent_count);
|
||||||
|
|
||||||
@ -566,12 +580,11 @@ void vgdisplay_full(struct volume_group *vg)
|
|||||||
vg->extent_count - vg->free_count,
|
vg->extent_count - vg->free_count,
|
||||||
display_size(vg->cmd,
|
display_size(vg->cmd,
|
||||||
((uint64_t) vg->extent_count - vg->free_count) *
|
((uint64_t) vg->extent_count - vg->free_count) *
|
||||||
vg->extent_size, SIZE_SHORT));
|
vg->extent_size));
|
||||||
|
|
||||||
log_print("Free PE / Size %u / %s", vg->free_count,
|
log_print("Free PE / Size %u / %s", vg->free_count,
|
||||||
display_size(vg->cmd,
|
display_size(vg->cmd,
|
||||||
(uint64_t) vg->free_count * vg->extent_size,
|
(uint64_t) vg->free_count * vg->extent_size));
|
||||||
SIZE_SHORT));
|
|
||||||
|
|
||||||
if (!id_write_format(&vg->id, uuid, sizeof(uuid))) {
|
if (!id_write_format(&vg->id, uuid, sizeof(uuid))) {
|
||||||
stack;
|
stack;
|
||||||
@ -641,15 +654,12 @@ void vgdisplay_short(struct volume_group *vg)
|
|||||||
log_print("\"%s\" %-9s [%-9s used / %s free]", vg->name,
|
log_print("\"%s\" %-9s [%-9s used / %s free]", vg->name,
|
||||||
/********* FIXME if "open" print "/used" else print "/idle"??? ******/
|
/********* FIXME if "open" print "/used" else print "/idle"??? ******/
|
||||||
display_size(vg->cmd,
|
display_size(vg->cmd,
|
||||||
(uint64_t) vg->extent_count * vg->extent_size,
|
(uint64_t) vg->extent_count * vg->extent_size),
|
||||||
SIZE_SHORT),
|
|
||||||
display_size(vg->cmd,
|
display_size(vg->cmd,
|
||||||
((uint64_t) vg->extent_count -
|
((uint64_t) vg->extent_count -
|
||||||
vg->free_count) * vg->extent_size,
|
vg->free_count) * vg->extent_size),
|
||||||
SIZE_SHORT),
|
|
||||||
display_size(vg->cmd,
|
display_size(vg->cmd,
|
||||||
(uint64_t) vg->free_count * vg->extent_size,
|
(uint64_t) vg->free_count * vg->extent_size));
|
||||||
SIZE_SHORT));
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -20,12 +20,13 @@
|
|||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
typedef enum { SIZE_LONG = 0, SIZE_SHORT = 1, SIZE_UNIT = 2 } size_len_t;
|
|
||||||
|
|
||||||
uint64_t units_to_bytes(const char *units, char *unit_type);
|
uint64_t units_to_bytes(const char *units, char *unit_type);
|
||||||
|
|
||||||
/* Specify size in KB */
|
/* Specify size in KB */
|
||||||
const char *display_size(struct cmd_context *cmd, uint64_t size, size_len_t sl);
|
const char *display_size(struct cmd_context *cmd, uint64_t size);
|
||||||
|
const char *display_size_long(struct cmd_context *cmd, uint64_t size);
|
||||||
|
const char *display_size_units(struct cmd_context *cmd, uint64_t size);
|
||||||
|
|
||||||
char *display_uuid(char *uuidstr);
|
char *display_uuid(char *uuidstr);
|
||||||
void display_stripe(const struct lv_segment *seg, uint32_t s, const char *pre);
|
void display_stripe(const struct lv_segment *seg, uint32_t s, const char *pre);
|
||||||
|
|
||||||
|
@ -68,13 +68,13 @@ static void _errseg_destroy(const struct segment_type *segtype)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static struct segtype_handler _error_ops = {
|
static struct segtype_handler _error_ops = {
|
||||||
name:_errseg_name,
|
.name = _errseg_name,
|
||||||
merge_segments:_errseg_merge_segments,
|
.merge_segments = _errseg_merge_segments,
|
||||||
#ifdef DEVMAPPER_SUPPORT
|
#ifdef DEVMAPPER_SUPPORT
|
||||||
add_target_line:_errseg_add_target_line,
|
.add_target_line = _errseg_add_target_line,
|
||||||
target_present:_errseg_target_present,
|
.target_present = _errseg_target_present,
|
||||||
#endif
|
#endif
|
||||||
destroy:_errseg_destroy,
|
.destroy = _errseg_destroy,
|
||||||
};
|
};
|
||||||
|
|
||||||
struct segment_type *init_error_segtype(struct cmd_context *cmd)
|
struct segment_type *init_error_segtype(struct cmd_context *cmd)
|
||||||
|
@ -204,6 +204,7 @@ static int _scan_proc_dev(const char *proc, const struct config_node *cn)
|
|||||||
if (cv->type != CFG_STRING) {
|
if (cv->type != CFG_STRING) {
|
||||||
log_error("Expecting string in devices/types "
|
log_error("Expecting string in devices/types "
|
||||||
"in config file");
|
"in config file");
|
||||||
|
fclose(pd);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
dev_len = strlen(cv->v.str);
|
dev_len = strlen(cv->v.str);
|
||||||
@ -213,12 +214,14 @@ static int _scan_proc_dev(const char *proc, const struct config_node *cn)
|
|||||||
log_error("Max partition count missing for %s "
|
log_error("Max partition count missing for %s "
|
||||||
"in devices/types in config file",
|
"in devices/types in config file",
|
||||||
name);
|
name);
|
||||||
|
fclose(pd);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (!cv->v.i) {
|
if (!cv->v.i) {
|
||||||
log_error("Zero partition count invalid for "
|
log_error("Zero partition count invalid for "
|
||||||
"%s in devices/types in config file",
|
"%s in devices/types in config file",
|
||||||
name);
|
name);
|
||||||
|
fclose(pd);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (dev_len <= strlen(line + i) &&
|
if (dev_len <= strlen(line + i) &&
|
||||||
@ -254,6 +257,7 @@ struct dev_filter *lvm_type_filter_create(const char *proc,
|
|||||||
|
|
||||||
if (!_scan_proc_dev(proc, cn)) {
|
if (!_scan_proc_dev(proc, cn)) {
|
||||||
stack;
|
stack;
|
||||||
|
dm_free(f);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -102,7 +102,7 @@ static void _xlate_vgd(struct vg_disk *disk)
|
|||||||
|
|
||||||
static void _xlate_extents(struct pe_disk *extents, uint32_t count)
|
static void _xlate_extents(struct pe_disk *extents, uint32_t count)
|
||||||
{
|
{
|
||||||
int i;
|
unsigned i;
|
||||||
|
|
||||||
for (i = 0; i < count; i++) {
|
for (i = 0; i < count; i++) {
|
||||||
extents[i].lv_num = xlate16(extents[i].lv_num);
|
extents[i].lv_num = xlate16(extents[i].lv_num);
|
||||||
@ -116,7 +116,7 @@ static void _xlate_extents(struct pe_disk *extents, uint32_t count)
|
|||||||
static int _munge_formats(struct pv_disk *pvd)
|
static int _munge_formats(struct pv_disk *pvd)
|
||||||
{
|
{
|
||||||
uint32_t pe_start;
|
uint32_t pe_start;
|
||||||
int b, e;
|
unsigned b, e;
|
||||||
|
|
||||||
switch (pvd->version) {
|
switch (pvd->version) {
|
||||||
case 1:
|
case 1:
|
||||||
@ -154,7 +154,7 @@ static int _munge_formats(struct pv_disk *pvd)
|
|||||||
|
|
||||||
/* If UUID is missing, create one */
|
/* If UUID is missing, create one */
|
||||||
if (pvd->pv_uuid[0] == '\0')
|
if (pvd->pv_uuid[0] == '\0')
|
||||||
uuid_from_num(pvd->pv_uuid, pvd->pv_number);
|
uuid_from_num((char *)pvd->pv_uuid, pvd->pv_number);
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -172,9 +172,9 @@ static void _munge_exported_vg(struct pv_disk *pvd)
|
|||||||
return;
|
return;
|
||||||
/* FIXME also check vgd->status & VG_EXPORTED? */
|
/* FIXME also check vgd->status & VG_EXPORTED? */
|
||||||
|
|
||||||
l = strlen(pvd->vg_name);
|
l = strlen((char *)pvd->vg_name);
|
||||||
s = sizeof(EXPORTED_TAG);
|
s = sizeof(EXPORTED_TAG);
|
||||||
if (!strncmp(pvd->vg_name + l - s + 1, EXPORTED_TAG, s)) {
|
if (!strncmp((char *)pvd->vg_name + l - s + 1, EXPORTED_TAG, s)) {
|
||||||
pvd->vg_name[l - s + 1] = '\0';
|
pvd->vg_name[l - s + 1] = '\0';
|
||||||
pvd->pv_status |= VG_EXPORTED;
|
pvd->pv_status |= VG_EXPORTED;
|
||||||
}
|
}
|
||||||
@ -237,14 +237,14 @@ int read_vgd(struct device *dev, struct vg_disk *vgd, struct pv_disk *pvd)
|
|||||||
|
|
||||||
/* If UUID is missing, create one */
|
/* If UUID is missing, create one */
|
||||||
if (vgd->vg_uuid[0] == '\0')
|
if (vgd->vg_uuid[0] == '\0')
|
||||||
uuid_from_num(vgd->vg_uuid, vgd->vg_number);
|
uuid_from_num((char *)vgd->vg_uuid, vgd->vg_number);
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int _read_uuids(struct disk_list *data)
|
static int _read_uuids(struct disk_list *data)
|
||||||
{
|
{
|
||||||
int num_read = 0;
|
unsigned num_read = 0;
|
||||||
struct uuid_list *ul;
|
struct uuid_list *ul;
|
||||||
char buffer[NAME_LEN];
|
char buffer[NAME_LEN];
|
||||||
uint64_t pos = data->pvd.pv_uuidlist_on_disk.base;
|
uint64_t pos = data->pvd.pv_uuidlist_on_disk.base;
|
||||||
@ -322,12 +322,12 @@ static int _read_extents(struct disk_list *data)
|
|||||||
static void __update_lvmcache(const struct format_type *fmt,
|
static void __update_lvmcache(const struct format_type *fmt,
|
||||||
struct disk_list *dl,
|
struct disk_list *dl,
|
||||||
struct device *dev, const char *vgid,
|
struct device *dev, const char *vgid,
|
||||||
int exported)
|
unsigned exported)
|
||||||
{
|
{
|
||||||
struct lvmcache_info *info;
|
struct lvmcache_info *info;
|
||||||
|
|
||||||
if (!(info = lvmcache_add(fmt->labeller, dl->pvd.pv_uuid, dev,
|
if (!(info = lvmcache_add(fmt->labeller, (char *)dl->pvd.pv_uuid, dev,
|
||||||
dl->pvd.vg_name, vgid,
|
(char *)dl->pvd.vg_name, vgid,
|
||||||
exported ? EXPORTED_VG : 0))) {
|
exported ? EXPORTED_VG : 0))) {
|
||||||
stack;
|
stack;
|
||||||
return;
|
return;
|
||||||
@ -376,14 +376,14 @@ static struct disk_list *__read_disk(const struct format_type *fmt,
|
|||||||
goto bad;
|
goto bad;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (vg_name && strcmp(vg_name, dl->pvd.vg_name)) {
|
if (vg_name && strcmp(vg_name, (char *)dl->pvd.vg_name)) {
|
||||||
log_very_verbose("%s is not a member of the VG %s",
|
log_very_verbose("%s is not a member of the VG %s",
|
||||||
name, vg_name);
|
name, vg_name);
|
||||||
__update_lvmcache(fmt, dl, dev, NULL, 0);
|
__update_lvmcache(fmt, dl, dev, NULL, 0);
|
||||||
goto bad;
|
goto bad;
|
||||||
}
|
}
|
||||||
|
|
||||||
__update_lvmcache(fmt, dl, dev, dl->vgd.vg_uuid,
|
__update_lvmcache(fmt, dl, dev, (char *)dl->vgd.vg_uuid,
|
||||||
dl->vgd.vg_status & VG_EXPORTED);
|
dl->vgd.vg_status & VG_EXPORTED);
|
||||||
|
|
||||||
if (!_read_uuids(dl)) {
|
if (!_read_uuids(dl)) {
|
||||||
@ -437,7 +437,7 @@ static void _add_pv_to_list(struct list *head, struct disk_list *data)
|
|||||||
|
|
||||||
list_iterate_items(diskl, head) {
|
list_iterate_items(diskl, head) {
|
||||||
pvd = &diskl->pvd;
|
pvd = &diskl->pvd;
|
||||||
if (!strncmp(data->pvd.pv_uuid, pvd->pv_uuid,
|
if (!strncmp((char *)data->pvd.pv_uuid, (char *)pvd->pv_uuid,
|
||||||
sizeof(pvd->pv_uuid))) {
|
sizeof(pvd->pv_uuid))) {
|
||||||
if (MAJOR(data->dev->dev) != md_major()) {
|
if (MAJOR(data->dev->dev) != md_major()) {
|
||||||
log_very_verbose("Ignoring duplicate PV %s on "
|
log_very_verbose("Ignoring duplicate PV %s on "
|
||||||
|
@ -73,16 +73,16 @@ struct data_area {
|
|||||||
} __attribute__ ((packed));
|
} __attribute__ ((packed));
|
||||||
|
|
||||||
struct pv_disk {
|
struct pv_disk {
|
||||||
uint8_t id[2];
|
int8_t id[2];
|
||||||
uint16_t version; /* lvm version */
|
uint16_t version; /* lvm version */
|
||||||
struct data_area pv_on_disk;
|
struct data_area pv_on_disk;
|
||||||
struct data_area vg_on_disk;
|
struct data_area vg_on_disk;
|
||||||
struct data_area pv_uuidlist_on_disk;
|
struct data_area pv_uuidlist_on_disk;
|
||||||
struct data_area lv_on_disk;
|
struct data_area lv_on_disk;
|
||||||
struct data_area pe_on_disk;
|
struct data_area pe_on_disk;
|
||||||
uint8_t pv_uuid[NAME_LEN];
|
int8_t pv_uuid[NAME_LEN];
|
||||||
uint8_t vg_name[NAME_LEN];
|
int8_t vg_name[NAME_LEN];
|
||||||
uint8_t system_id[NAME_LEN]; /* for vgexport/vgimport */
|
int8_t system_id[NAME_LEN]; /* for vgexport/vgimport */
|
||||||
uint32_t pv_major;
|
uint32_t pv_major;
|
||||||
uint32_t pv_number;
|
uint32_t pv_number;
|
||||||
uint32_t pv_status;
|
uint32_t pv_status;
|
||||||
@ -98,8 +98,8 @@ struct pv_disk {
|
|||||||
} __attribute__ ((packed));
|
} __attribute__ ((packed));
|
||||||
|
|
||||||
struct lv_disk {
|
struct lv_disk {
|
||||||
uint8_t lv_name[NAME_LEN];
|
int8_t lv_name[NAME_LEN];
|
||||||
uint8_t vg_name[NAME_LEN];
|
int8_t vg_name[NAME_LEN];
|
||||||
uint32_t lv_access;
|
uint32_t lv_access;
|
||||||
uint32_t lv_status;
|
uint32_t lv_status;
|
||||||
uint32_t lv_open;
|
uint32_t lv_open;
|
||||||
@ -122,8 +122,8 @@ struct lv_disk {
|
|||||||
} __attribute__ ((packed));
|
} __attribute__ ((packed));
|
||||||
|
|
||||||
struct vg_disk {
|
struct vg_disk {
|
||||||
uint8_t vg_uuid[ID_LEN]; /* volume group UUID */
|
int8_t vg_uuid[ID_LEN]; /* volume group UUID */
|
||||||
uint8_t vg_name_dummy[NAME_LEN - ID_LEN]; /* rest of v1 VG name */
|
int8_t vg_name_dummy[NAME_LEN - ID_LEN]; /* rest of v1 VG name */
|
||||||
uint32_t vg_number; /* volume group number */
|
uint32_t vg_number; /* volume group number */
|
||||||
uint32_t vg_access; /* read/write */
|
uint32_t vg_access; /* read/write */
|
||||||
uint32_t vg_status; /* active or not */
|
uint32_t vg_status; /* active or not */
|
||||||
|
@ -337,8 +337,7 @@ static int _format1_pv_setup(const struct format_type *fmt,
|
|||||||
pv->size--;
|
pv->size--;
|
||||||
if (pv->size > MAX_PV_SIZE) {
|
if (pv->size > MAX_PV_SIZE) {
|
||||||
log_error("Physical volumes cannot be bigger than %s",
|
log_error("Physical volumes cannot be bigger than %s",
|
||||||
display_size(fmt->cmd, (uint64_t) MAX_PV_SIZE,
|
display_size(fmt->cmd, (uint64_t) MAX_PV_SIZE));
|
||||||
SIZE_SHORT));
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -378,8 +377,7 @@ static int _format1_lv_setup(struct format_instance *fid, struct logical_volume
|
|||||||
}
|
}
|
||||||
if (lv->size > max_size) {
|
if (lv->size > max_size) {
|
||||||
log_error("logical volumes cannot be larger than %s",
|
log_error("logical volumes cannot be larger than %s",
|
||||||
display_size(fid->fmt->cmd, max_size,
|
display_size(fid->fmt->cmd, max_size));
|
||||||
SIZE_SHORT));
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -460,18 +458,15 @@ static int _format1_vg_setup(struct format_instance *fid, struct volume_group *v
|
|||||||
|
|
||||||
if (vg->extent_size > MAX_PE_SIZE || vg->extent_size < MIN_PE_SIZE) {
|
if (vg->extent_size > MAX_PE_SIZE || vg->extent_size < MIN_PE_SIZE) {
|
||||||
log_error("Extent size must be between %s and %s",
|
log_error("Extent size must be between %s and %s",
|
||||||
display_size(fid->fmt->cmd, (uint64_t) MIN_PE_SIZE,
|
display_size(fid->fmt->cmd, (uint64_t) MIN_PE_SIZE),
|
||||||
SIZE_SHORT),
|
display_size(fid->fmt->cmd, (uint64_t) MAX_PE_SIZE));
|
||||||
display_size(fid->fmt->cmd, (uint64_t) MAX_PE_SIZE,
|
|
||||||
SIZE_SHORT));
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (vg->extent_size % MIN_PE_SIZE) {
|
if (vg->extent_size % MIN_PE_SIZE) {
|
||||||
log_error("Extent size must be multiple of %s",
|
log_error("Extent size must be multiple of %s",
|
||||||
display_size(fid->fmt->cmd, (uint64_t) MIN_PE_SIZE,
|
display_size(fid->fmt->cmd, (uint64_t) MIN_PE_SIZE));
|
||||||
SIZE_SHORT));
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -485,7 +480,7 @@ static int _format1_vg_setup(struct format_instance *fid, struct volume_group *v
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int _format1_segtype_supported(struct format_instance *fid,
|
static int _format1_segtype_supported(struct format_instance *fid,
|
||||||
struct segment_type *segtype)
|
const struct segment_type *segtype)
|
||||||
{
|
{
|
||||||
if (!(segtype->flags & SEG_FORMAT1_SUPPORT)) {
|
if (!(segtype->flags & SEG_FORMAT1_SUPPORT)) {
|
||||||
stack;
|
stack;
|
||||||
@ -496,8 +491,8 @@ static int _format1_segtype_supported(struct format_instance *fid,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static struct metadata_area_ops _metadata_format1_ops = {
|
static struct metadata_area_ops _metadata_format1_ops = {
|
||||||
vg_read:_format1_vg_read,
|
.vg_read = _format1_vg_read,
|
||||||
vg_write:_format1_vg_write,
|
.vg_write = _format1_vg_write,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct format_instance *_format1_create_instance(const struct format_type *fmt,
|
static struct format_instance *_format1_create_instance(const struct format_type *fmt,
|
||||||
@ -541,15 +536,15 @@ static void _format1_destroy(const struct format_type *fmt)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static struct format_handler _format1_ops = {
|
static struct format_handler _format1_ops = {
|
||||||
pv_read:_format1_pv_read,
|
.pv_read = _format1_pv_read,
|
||||||
pv_setup:_format1_pv_setup,
|
.pv_setup = _format1_pv_setup,
|
||||||
pv_write:_format1_pv_write,
|
.pv_write = _format1_pv_write,
|
||||||
lv_setup:_format1_lv_setup,
|
.lv_setup = _format1_lv_setup,
|
||||||
vg_setup:_format1_vg_setup,
|
.vg_setup = _format1_vg_setup,
|
||||||
segtype_supported:_format1_segtype_supported,
|
.segtype_supported = _format1_segtype_supported,
|
||||||
create_instance:_format1_create_instance,
|
.create_instance = _format1_create_instance,
|
||||||
destroy_instance:_format1_destroy_instance,
|
.destroy_instance = _format1_destroy_instance,
|
||||||
destroy:_format1_destroy,
|
.destroy = _format1_destroy,
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef LVM1_INTERNAL
|
#ifdef LVM1_INTERNAL
|
||||||
|
@ -56,7 +56,7 @@ int import_pv(struct dm_pool *mem, struct device *dev,
|
|||||||
memcpy(&pv->id, pvd->pv_uuid, ID_LEN);
|
memcpy(&pv->id, pvd->pv_uuid, ID_LEN);
|
||||||
|
|
||||||
pv->dev = dev;
|
pv->dev = dev;
|
||||||
if (!(pv->vg_name = dm_pool_strdup(mem, pvd->vg_name))) {
|
if (!(pv->vg_name = dm_pool_strdup(mem, (char *)pvd->vg_name))) {
|
||||||
stack;
|
stack;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -65,10 +65,10 @@ int import_pv(struct dm_pool *mem, struct device *dev,
|
|||||||
|
|
||||||
/* Store system_id from first PV if PV belongs to a VG */
|
/* Store system_id from first PV if PV belongs to a VG */
|
||||||
if (vg && !*vg->system_id)
|
if (vg && !*vg->system_id)
|
||||||
strncpy(vg->system_id, pvd->system_id, NAME_LEN);
|
strncpy(vg->system_id, (char *)pvd->system_id, NAME_LEN);
|
||||||
|
|
||||||
if (vg &&
|
if (vg &&
|
||||||
strncmp(vg->system_id, pvd->system_id, sizeof(pvd->system_id)))
|
strncmp(vg->system_id, (char *)pvd->system_id, sizeof(pvd->system_id)))
|
||||||
log_very_verbose("System ID %s on %s differs from %s for "
|
log_very_verbose("System ID %s on %s differs from %s for "
|
||||||
"volume group", pvd->system_id,
|
"volume group", pvd->system_id,
|
||||||
dev_name(pv->dev), vg->system_id);
|
dev_name(pv->dev), vg->system_id);
|
||||||
@ -132,11 +132,11 @@ int export_pv(struct cmd_context *cmd, struct dm_pool *mem,
|
|||||||
memset(pvd->vg_name, 0, sizeof(pvd->vg_name));
|
memset(pvd->vg_name, 0, sizeof(pvd->vg_name));
|
||||||
|
|
||||||
if (pv->vg_name)
|
if (pv->vg_name)
|
||||||
strncpy(pvd->vg_name, pv->vg_name, sizeof(pvd->vg_name));
|
strncpy((char *)pvd->vg_name, pv->vg_name, sizeof(pvd->vg_name));
|
||||||
|
|
||||||
/* Preserve existing system_id if it exists */
|
/* Preserve existing system_id if it exists */
|
||||||
if (vg && *vg->system_id)
|
if (vg && *vg->system_id)
|
||||||
strncpy(pvd->system_id, vg->system_id, sizeof(pvd->system_id));
|
strncpy((char *)pvd->system_id, vg->system_id, sizeof(pvd->system_id));
|
||||||
|
|
||||||
/* Is VG already exported or being exported? */
|
/* Is VG already exported or being exported? */
|
||||||
if (vg && (vg->status & EXPORTED_VG)) {
|
if (vg && (vg->status & EXPORTED_VG)) {
|
||||||
@ -144,24 +144,24 @@ int export_pv(struct cmd_context *cmd, struct dm_pool *mem,
|
|||||||
if (!*vg->system_id ||
|
if (!*vg->system_id ||
|
||||||
strncmp(vg->system_id, EXPORTED_TAG,
|
strncmp(vg->system_id, EXPORTED_TAG,
|
||||||
sizeof(EXPORTED_TAG) - 1)) {
|
sizeof(EXPORTED_TAG) - 1)) {
|
||||||
if (!_system_id(cmd, pvd->system_id, EXPORTED_TAG)) {
|
if (!_system_id(cmd, (char *)pvd->system_id, EXPORTED_TAG)) {
|
||||||
stack;
|
stack;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (strlen(pvd->vg_name) + sizeof(EXPORTED_TAG) >
|
if (strlen((char *)pvd->vg_name) + sizeof(EXPORTED_TAG) >
|
||||||
sizeof(pvd->vg_name)) {
|
sizeof(pvd->vg_name)) {
|
||||||
log_error("Volume group name %s too long to export",
|
log_error("Volume group name %s too long to export",
|
||||||
pvd->vg_name);
|
pvd->vg_name);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
strcat(pvd->vg_name, EXPORTED_TAG);
|
strcat((char *)pvd->vg_name, EXPORTED_TAG);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Is VG being imported? */
|
/* Is VG being imported? */
|
||||||
if (vg && !(vg->status & EXPORTED_VG) && *vg->system_id &&
|
if (vg && !(vg->status & EXPORTED_VG) && *vg->system_id &&
|
||||||
!strncmp(vg->system_id, EXPORTED_TAG, sizeof(EXPORTED_TAG) - 1)) {
|
!strncmp(vg->system_id, EXPORTED_TAG, sizeof(EXPORTED_TAG) - 1)) {
|
||||||
if (!_system_id(cmd, pvd->system_id, IMPORTED_TAG)) {
|
if (!_system_id(cmd, (char *)pvd->system_id, IMPORTED_TAG)) {
|
||||||
stack;
|
stack;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -169,7 +169,7 @@ int export_pv(struct cmd_context *cmd, struct dm_pool *mem,
|
|||||||
|
|
||||||
/* Generate system_id if PV is in VG */
|
/* Generate system_id if PV is in VG */
|
||||||
if (!pvd->system_id || !*pvd->system_id)
|
if (!pvd->system_id || !*pvd->system_id)
|
||||||
if (!_system_id(cmd, pvd->system_id, "")) {
|
if (!_system_id(cmd, (char *)pvd->system_id, "")) {
|
||||||
stack;
|
stack;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -177,8 +177,8 @@ int export_pv(struct cmd_context *cmd, struct dm_pool *mem,
|
|||||||
/* Update internal system_id if we changed it */
|
/* Update internal system_id if we changed it */
|
||||||
if (vg &&
|
if (vg &&
|
||||||
(!*vg->system_id ||
|
(!*vg->system_id ||
|
||||||
strncmp(vg->system_id, pvd->system_id, sizeof(pvd->system_id))))
|
strncmp(vg->system_id, (char *)pvd->system_id, sizeof(pvd->system_id))))
|
||||||
strncpy(vg->system_id, pvd->system_id, NAME_LEN);
|
strncpy(vg->system_id, (char *)pvd->system_id, NAME_LEN);
|
||||||
|
|
||||||
//pvd->pv_major = MAJOR(pv->dev);
|
//pvd->pv_major = MAJOR(pv->dev);
|
||||||
|
|
||||||
@ -204,12 +204,12 @@ int import_vg(struct dm_pool *mem,
|
|||||||
struct vg_disk *vgd = &dl->vgd;
|
struct vg_disk *vgd = &dl->vgd;
|
||||||
memcpy(vg->id.uuid, vgd->vg_uuid, ID_LEN);
|
memcpy(vg->id.uuid, vgd->vg_uuid, ID_LEN);
|
||||||
|
|
||||||
if (!_check_vg_name(dl->pvd.vg_name)) {
|
if (!_check_vg_name((char *)dl->pvd.vg_name)) {
|
||||||
stack;
|
stack;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(vg->name = dm_pool_strdup(mem, dl->pvd.vg_name))) {
|
if (!(vg->name = dm_pool_strdup(mem, (char *)dl->pvd.vg_name))) {
|
||||||
stack;
|
stack;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -292,7 +292,7 @@ int import_lv(struct dm_pool *mem, struct logical_volume *lv, struct lv_disk *lv
|
|||||||
{
|
{
|
||||||
lvid_from_lvnum(&lv->lvid, &lv->vg->id, lvd->lv_number);
|
lvid_from_lvnum(&lv->lvid, &lv->vg->id, lvd->lv_number);
|
||||||
|
|
||||||
if (!(lv->name = _create_lv_name(mem, lvd->lv_name))) {
|
if (!(lv->name = _create_lv_name(mem, (char *)lvd->lv_name))) {
|
||||||
stack;
|
stack;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -342,10 +342,10 @@ static void _export_lv(struct lv_disk *lvd, struct volume_group *vg,
|
|||||||
struct logical_volume *lv, const char *dev_dir)
|
struct logical_volume *lv, const char *dev_dir)
|
||||||
{
|
{
|
||||||
memset(lvd, 0, sizeof(*lvd));
|
memset(lvd, 0, sizeof(*lvd));
|
||||||
snprintf(lvd->lv_name, sizeof(lvd->lv_name), "%s%s/%s",
|
snprintf((char *)lvd->lv_name, sizeof(lvd->lv_name), "%s%s/%s",
|
||||||
dev_dir, vg->name, lv->name);
|
dev_dir, vg->name, lv->name);
|
||||||
|
|
||||||
strcpy(lvd->vg_name, vg->name);
|
strcpy((char *)lvd->vg_name, vg->name);
|
||||||
|
|
||||||
if (lv->status & LVM_READ)
|
if (lv->status & LVM_READ)
|
||||||
lvd->lv_access |= LV_READ;
|
lvd->lv_access |= LV_READ;
|
||||||
@ -478,7 +478,7 @@ int import_lvs(struct dm_pool *mem, struct volume_group *vg, struct list *pvds)
|
|||||||
list_iterate_items(ll, &dl->lvds) {
|
list_iterate_items(ll, &dl->lvds) {
|
||||||
lvd = &ll->lvd;
|
lvd = &ll->lvd;
|
||||||
|
|
||||||
if (!find_lv(vg, lvd->lv_name) &&
|
if (!find_lv(vg, (char *)lvd->lv_name) &&
|
||||||
!_add_lv(mem, vg, lvd)) {
|
!_add_lv(mem, vg, lvd)) {
|
||||||
stack;
|
stack;
|
||||||
return 0;
|
return 0;
|
||||||
@ -586,14 +586,14 @@ int import_snapshots(struct dm_pool *mem, struct volume_group *vg,
|
|||||||
|
|
||||||
lvnum = lvd->lv_number;
|
lvnum = lvd->lv_number;
|
||||||
|
|
||||||
if (lvnum > MAX_LV) {
|
if (lvnum >= MAX_LV) {
|
||||||
log_err("Logical volume number "
|
log_err("Logical volume number "
|
||||||
"out of bounds.");
|
"out of bounds.");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!lvs[lvnum] &&
|
if (!lvs[lvnum] &&
|
||||||
!(lvs[lvnum] = find_lv(vg, lvd->lv_name))) {
|
!(lvs[lvnum] = find_lv(vg, (char *)lvd->lv_name))) {
|
||||||
log_err("Couldn't find logical volume '%s'.",
|
log_err("Couldn't find logical volume '%s'.",
|
||||||
lvd->lv_name);
|
lvd->lv_name);
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -93,7 +93,7 @@ static int _fill_lv_array(struct lv_map **lvs,
|
|||||||
memset(lvs, 0, sizeof(*lvs) * MAX_LV);
|
memset(lvs, 0, sizeof(*lvs) * MAX_LV);
|
||||||
|
|
||||||
list_iterate_items(ll, &dl->lvds) {
|
list_iterate_items(ll, &dl->lvds) {
|
||||||
if (!(lvm = dm_hash_lookup(maps, strrchr(ll->lvd.lv_name, '/')
|
if (!(lvm = dm_hash_lookup(maps, strrchr((char *)ll->lvd.lv_name, '/')
|
||||||
+ 1))) {
|
+ 1))) {
|
||||||
log_err("Physical volume (%s) contains an "
|
log_err("Physical volume (%s) contains an "
|
||||||
"unknown logical volume (%s).",
|
"unknown logical volume (%s).",
|
||||||
|
@ -61,16 +61,16 @@ static int _lvm1_read(struct labeller *l, struct device *dev, char *buf,
|
|||||||
struct vg_disk vgd;
|
struct vg_disk vgd;
|
||||||
struct lvmcache_info *info;
|
struct lvmcache_info *info;
|
||||||
const char *vgid = NULL;
|
const char *vgid = NULL;
|
||||||
int exported = 0;
|
unsigned exported = 0;
|
||||||
|
|
||||||
munge_pvd(dev, pvd);
|
munge_pvd(dev, pvd);
|
||||||
|
|
||||||
if (*pvd->vg_name && read_vgd(dev, &vgd, pvd)) {
|
if (*pvd->vg_name && read_vgd(dev, &vgd, pvd)) {
|
||||||
vgid = vgd.vg_uuid;
|
vgid = (char *) vgd.vg_uuid;
|
||||||
exported = pvd->pv_status & VG_EXPORTED;
|
exported = pvd->pv_status & VG_EXPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(info = lvmcache_add(l, pvd->pv_uuid, dev, pvd->vg_name, vgid,
|
if (!(info = lvmcache_add(l, (char *)pvd->pv_uuid, dev, (char *)pvd->vg_name, vgid,
|
||||||
exported))) {
|
exported))) {
|
||||||
stack;
|
stack;
|
||||||
return 0;
|
return 0;
|
||||||
@ -103,13 +103,13 @@ static void _lvm1_destroy(struct labeller *l)
|
|||||||
}
|
}
|
||||||
|
|
||||||
struct label_ops _lvm1_ops = {
|
struct label_ops _lvm1_ops = {
|
||||||
can_handle:_lvm1_can_handle,
|
.can_handle = _lvm1_can_handle,
|
||||||
write:_lvm1_write,
|
.write = _lvm1_write,
|
||||||
read:_lvm1_read,
|
.read = _lvm1_read,
|
||||||
verify:_lvm1_can_handle,
|
.verify = _lvm1_can_handle,
|
||||||
initialise_label:_lvm1_initialise_label,
|
.initialise_label = _lvm1_initialise_label,
|
||||||
destroy_label:_lvm1_destroy_label,
|
.destroy_label = _lvm1_destroy_label,
|
||||||
destroy:_lvm1_destroy
|
.destroy = _lvm1_destroy,
|
||||||
};
|
};
|
||||||
|
|
||||||
struct labeller *lvm1_labeller_create(struct format_type *fmt)
|
struct labeller *lvm1_labeller_create(struct format_type *fmt)
|
||||||
|
@ -46,7 +46,7 @@ int get_free_vg_number(struct format_instance *fid, struct dev_filter *filter,
|
|||||||
memset(numbers, 0, sizeof(numbers));
|
memset(numbers, 0, sizeof(numbers));
|
||||||
|
|
||||||
list_iterate_items(dl, &all_pvs) {
|
list_iterate_items(dl, &all_pvs) {
|
||||||
if (!*dl->pvd.vg_name || !strcmp(dl->pvd.vg_name, candidate_vg))
|
if (!*dl->pvd.vg_name || !strcmp((char *)dl->pvd.vg_name, candidate_vg))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
numbers[dl->vgd.vg_number] = 1;
|
numbers[dl->vgd.vg_number] = 1;
|
||||||
|
@ -248,7 +248,7 @@ static int _read_vg_pds(const struct format_type *fmt, struct dm_pool *mem,
|
|||||||
|
|
||||||
uint32_t sp_count = 0;
|
uint32_t sp_count = 0;
|
||||||
uint32_t *sp_devs = NULL;
|
uint32_t *sp_devs = NULL;
|
||||||
int i;
|
uint32_t i;
|
||||||
|
|
||||||
/* FIXME: maybe should return a different error in memory
|
/* FIXME: maybe should return a different error in memory
|
||||||
* allocation failure */
|
* allocation failure */
|
||||||
|
@ -79,7 +79,8 @@ static struct user_subpool *_build_usp(struct list *pls, struct dm_pool *mem,
|
|||||||
|
|
||||||
static int _check_usp(char *vgname, struct user_subpool *usp, int sp_count)
|
static int _check_usp(char *vgname, struct user_subpool *usp, int sp_count)
|
||||||
{
|
{
|
||||||
int i, j;
|
int i;
|
||||||
|
unsigned j;
|
||||||
|
|
||||||
for (i = 0; i < sp_count; i++) {
|
for (i = 0; i < sp_count; i++) {
|
||||||
if (!usp[i].initialized) {
|
if (!usp[i].initialized) {
|
||||||
@ -88,7 +89,7 @@ static int _check_usp(char *vgname, struct user_subpool *usp, int sp_count)
|
|||||||
}
|
}
|
||||||
for (j = 0; j < usp[i].num_devs; j++) {
|
for (j = 0; j < usp[i].num_devs; j++) {
|
||||||
if (!usp[i].devs[j].initialized) {
|
if (!usp[i].devs[j].initialized) {
|
||||||
log_error("Missing device %d for subpool %d"
|
log_error("Missing device %u for subpool %d"
|
||||||
" in pool %s", j, i, vgname);
|
" in pool %s", j, i, vgname);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -262,7 +263,7 @@ static int _pool_pv_read(const struct format_type *fmt, const char *pv_name,
|
|||||||
|
|
||||||
/* *INDENT-OFF* */
|
/* *INDENT-OFF* */
|
||||||
static struct metadata_area_ops _metadata_format_pool_ops = {
|
static struct metadata_area_ops _metadata_format_pool_ops = {
|
||||||
vg_read:_pool_vg_read,
|
.vg_read = _pool_vg_read,
|
||||||
};
|
};
|
||||||
/* *INDENT-ON* */
|
/* *INDENT-ON* */
|
||||||
|
|
||||||
@ -310,11 +311,11 @@ static void _pool_destroy(const struct format_type *fmt)
|
|||||||
|
|
||||||
/* *INDENT-OFF* */
|
/* *INDENT-OFF* */
|
||||||
static struct format_handler _format_pool_ops = {
|
static struct format_handler _format_pool_ops = {
|
||||||
pv_read:_pool_pv_read,
|
.pv_read = _pool_pv_read,
|
||||||
pv_setup:_pool_pv_setup,
|
.pv_setup = _pool_pv_setup,
|
||||||
create_instance:_pool_create_instance,
|
.create_instance = _pool_create_instance,
|
||||||
destroy_instance:_pool_destroy_instance,
|
.destroy_instance = _pool_destroy_instance,
|
||||||
destroy:_pool_destroy,
|
.destroy = _pool_destroy,
|
||||||
};
|
};
|
||||||
/* *INDENT-ON */
|
/* *INDENT-ON */
|
||||||
|
|
||||||
|
@ -203,7 +203,7 @@ static int _add_stripe_seg(struct dm_pool *mem,
|
|||||||
{
|
{
|
||||||
struct lv_segment *seg;
|
struct lv_segment *seg;
|
||||||
struct segment_type *segtype;
|
struct segment_type *segtype;
|
||||||
int j;
|
unsigned j;
|
||||||
uint32_t area_len;
|
uint32_t area_len;
|
||||||
|
|
||||||
if (usp->striping & (usp->striping - 1)) {
|
if (usp->striping & (usp->striping - 1)) {
|
||||||
@ -249,7 +249,7 @@ static int _add_linear_seg(struct dm_pool *mem,
|
|||||||
{
|
{
|
||||||
struct lv_segment *seg;
|
struct lv_segment *seg;
|
||||||
struct segment_type *segtype;
|
struct segment_type *segtype;
|
||||||
int j;
|
unsigned j;
|
||||||
uint32_t area_len;
|
uint32_t area_len;
|
||||||
|
|
||||||
if (!(segtype = get_segtype_from_string(lv->vg->cmd, "striped"))) {
|
if (!(segtype = get_segtype_from_string(lv->vg->cmd, "striped"))) {
|
||||||
|
@ -82,13 +82,13 @@ static void _label_pool_destroy(struct labeller *l)
|
|||||||
}
|
}
|
||||||
|
|
||||||
struct label_ops _pool_ops = {
|
struct label_ops _pool_ops = {
|
||||||
can_handle:_pool_can_handle,
|
.can_handle = _pool_can_handle,
|
||||||
write:_pool_write,
|
.write = _pool_write,
|
||||||
read:_pool_read,
|
.read = _pool_read,
|
||||||
verify:_pool_can_handle,
|
.verify = _pool_can_handle,
|
||||||
initialise_label:_pool_initialise_label,
|
.initialise_label = _pool_initialise_label,
|
||||||
destroy_label:_pool_destroy_label,
|
.destroy_label = _pool_destroy_label,
|
||||||
destroy:_label_pool_destroy
|
.destroy = _label_pool_destroy,
|
||||||
};
|
};
|
||||||
|
|
||||||
struct labeller *pool_labeller_create(struct format_type *fmt)
|
struct labeller *pool_labeller_create(struct format_type *fmt)
|
||||||
|
@ -328,7 +328,7 @@ static void _display_archive(struct cmd_context *cmd, struct archive_file *af)
|
|||||||
}
|
}
|
||||||
|
|
||||||
log_print("VG name: \t%s", vg->name);
|
log_print("VG name: \t%s", vg->name);
|
||||||
log_print("Description:\t%s", desc ? desc : "<No description>");
|
log_print("Description:\t%s", desc ? : "<No description>");
|
||||||
log_print("Backup Time:\t%s", ctime(&when));
|
log_print("Backup Time:\t%s", ctime(&when));
|
||||||
|
|
||||||
dm_pool_free(cmd->mem, vg);
|
dm_pool_free(cmd->mem, vg);
|
||||||
|
@ -85,7 +85,7 @@ static int _text_lv_setup(struct format_instance *fid, struct logical_volume *lv
|
|||||||
uint64_t max_size = UINT_MAX;
|
uint64_t max_size = UINT_MAX;
|
||||||
|
|
||||||
if (lv->size > max_size) {
|
if (lv->size > max_size) {
|
||||||
char *dummy = display_size(max_size, SIZE_SHORT);
|
char *dummy = display_size(max_size);
|
||||||
log_error("logical volumes cannot be larger than %s", dummy);
|
log_error("logical volumes cannot be larger than %s", dummy);
|
||||||
dm_free(dummy);
|
dm_free(dummy);
|
||||||
return 0;
|
return 0;
|
||||||
@ -143,7 +143,7 @@ static struct mda_header *_raw_read_mda_header(const struct format_type *fmt,
|
|||||||
|
|
||||||
_xlate_mdah(mdah);
|
_xlate_mdah(mdah);
|
||||||
|
|
||||||
if (strncmp(mdah->magic, FMTT_MAGIC, sizeof(mdah->magic))) {
|
if (strncmp((char *)mdah->magic, FMTT_MAGIC, sizeof(mdah->magic))) {
|
||||||
log_error("Wrong magic number in metadata area header");
|
log_error("Wrong magic number in metadata area header");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@ -167,7 +167,7 @@ static int _raw_write_mda_header(const struct format_type *fmt,
|
|||||||
struct device *dev,
|
struct device *dev,
|
||||||
uint64_t start_byte, struct mda_header *mdah)
|
uint64_t start_byte, struct mda_header *mdah)
|
||||||
{
|
{
|
||||||
strncpy(mdah->magic, FMTT_MAGIC, sizeof(mdah->magic));
|
strncpy((char *)mdah->magic, FMTT_MAGIC, sizeof(mdah->magic));
|
||||||
mdah->version = FMTT_VERSION;
|
mdah->version = FMTT_VERSION;
|
||||||
mdah->start = start_byte;
|
mdah->start = start_byte;
|
||||||
|
|
||||||
@ -1073,7 +1073,7 @@ static int _mda_setup(const struct format_type *fmt,
|
|||||||
|
|
||||||
if (!dev_zero((struct device *) pv->dev, start1,
|
if (!dev_zero((struct device *) pv->dev, start1,
|
||||||
(size_t) (mda_size1 >
|
(size_t) (mda_size1 >
|
||||||
wipe_size ? wipe_size : mda_size1))) {
|
wipe_size ? : mda_size1))) {
|
||||||
log_error("Failed to wipe new metadata area");
|
log_error("Failed to wipe new metadata area");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -1119,7 +1119,7 @@ static int _mda_setup(const struct format_type *fmt,
|
|||||||
mda_size2)) return 0;
|
mda_size2)) return 0;
|
||||||
if (!dev_zero(pv->dev, start2,
|
if (!dev_zero(pv->dev, start2,
|
||||||
(size_t) (mda_size1 >
|
(size_t) (mda_size1 >
|
||||||
wipe_size ? wipe_size : mda_size1))) {
|
wipe_size ? : mda_size1))) {
|
||||||
log_error("Failed to wipe new metadata area");
|
log_error("Failed to wipe new metadata area");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -1376,28 +1376,28 @@ static void _text_destroy(const struct format_type *fmt)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static struct metadata_area_ops _metadata_text_file_ops = {
|
static struct metadata_area_ops _metadata_text_file_ops = {
|
||||||
vg_read:_vg_read_file,
|
.vg_read = _vg_read_file,
|
||||||
vg_read_precommit:_vg_read_precommit_file,
|
.vg_read_precommit = _vg_read_precommit_file,
|
||||||
vg_write:_vg_write_file,
|
.vg_write = _vg_write_file,
|
||||||
vg_remove:_vg_remove_file,
|
.vg_remove = _vg_remove_file,
|
||||||
vg_commit:_vg_commit_file
|
.vg_commit = _vg_commit_file
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct metadata_area_ops _metadata_text_file_backup_ops = {
|
static struct metadata_area_ops _metadata_text_file_backup_ops = {
|
||||||
vg_read:_vg_read_file,
|
.vg_read = _vg_read_file,
|
||||||
vg_write:_vg_write_file,
|
.vg_write = _vg_write_file,
|
||||||
vg_remove:_vg_remove_file,
|
.vg_remove = _vg_remove_file,
|
||||||
vg_commit:_vg_commit_file_backup
|
.vg_commit = _vg_commit_file_backup
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct metadata_area_ops _metadata_text_raw_ops = {
|
static struct metadata_area_ops _metadata_text_raw_ops = {
|
||||||
vg_read:_vg_read_raw,
|
.vg_read = _vg_read_raw,
|
||||||
vg_read_precommit:_vg_read_precommit_raw,
|
.vg_read_precommit = _vg_read_precommit_raw,
|
||||||
vg_write:_vg_write_raw,
|
.vg_write = _vg_write_raw,
|
||||||
vg_remove:_vg_remove_raw,
|
.vg_remove = _vg_remove_raw,
|
||||||
vg_precommit:_vg_precommit_raw,
|
.vg_precommit = _vg_precommit_raw,
|
||||||
vg_commit:_vg_commit_raw,
|
.vg_commit = _vg_commit_raw,
|
||||||
vg_revert:_vg_revert_raw
|
.vg_revert = _vg_revert_raw
|
||||||
};
|
};
|
||||||
|
|
||||||
/* pvmetadatasize in sectors */
|
/* pvmetadatasize in sectors */
|
||||||
@ -1656,15 +1656,15 @@ void *create_text_context(struct cmd_context *cmd, const char *path,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static struct format_handler _text_handler = {
|
static struct format_handler _text_handler = {
|
||||||
scan:_text_scan,
|
.scan = _text_scan,
|
||||||
pv_read:_text_pv_read,
|
.pv_read = _text_pv_read,
|
||||||
pv_setup:_text_pv_setup,
|
.pv_setup = _text_pv_setup,
|
||||||
pv_write:_text_pv_write,
|
.pv_write = _text_pv_write,
|
||||||
vg_setup:_text_vg_setup,
|
.vg_setup = _text_vg_setup,
|
||||||
lv_setup:_text_lv_setup,
|
.lv_setup = _text_lv_setup,
|
||||||
create_instance:_text_create_text_instance,
|
.create_instance = _text_create_text_instance,
|
||||||
destroy_instance:_text_destroy_instance,
|
.destroy_instance = _text_destroy_instance,
|
||||||
destroy:_text_destroy
|
.destroy = _text_destroy
|
||||||
};
|
};
|
||||||
|
|
||||||
static int _add_dir(const char *dir, struct list *dir_list)
|
static int _add_dir(const char *dir, struct list *dir_list)
|
||||||
@ -1759,6 +1759,7 @@ struct format_type *create_text_format(struct cmd_context *cmd)
|
|||||||
|
|
||||||
if (!(mda_lists = dm_malloc(sizeof(struct mda_lists)))) {
|
if (!(mda_lists = dm_malloc(sizeof(struct mda_lists)))) {
|
||||||
log_error("Failed to allocate dir_list");
|
log_error("Failed to allocate dir_list");
|
||||||
|
dm_free(fmt);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1770,11 +1771,13 @@ struct format_type *create_text_format(struct cmd_context *cmd)
|
|||||||
|
|
||||||
if (!(fmt->labeller = text_labeller_create(fmt))) {
|
if (!(fmt->labeller = text_labeller_create(fmt))) {
|
||||||
log_error("Couldn't create text label handler.");
|
log_error("Couldn't create text label handler.");
|
||||||
|
dm_free(fmt);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(label_register_handler(FMT_TEXT_NAME, fmt->labeller))) {
|
if (!(label_register_handler(FMT_TEXT_NAME, fmt->labeller))) {
|
||||||
log_error("Couldn't register text label handler.");
|
log_error("Couldn't register text label handler.");
|
||||||
|
dm_free(fmt);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -370,7 +370,7 @@ int text_import_areas(struct lv_segment *seg, const struct config_node *sn,
|
|||||||
} else {
|
} else {
|
||||||
log_error("Couldn't find volume '%s' "
|
log_error("Couldn't find volume '%s' "
|
||||||
"for segment '%s'.",
|
"for segment '%s'.",
|
||||||
cv->v.str ? cv->v.str : "NULL", seg_name);
|
cv->v.str ? : "NULL", seg_name);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -849,13 +849,13 @@ static const char *_read_vgname(const struct format_type *fmt,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static struct text_vg_version_ops _vsn1_ops = {
|
static struct text_vg_version_ops _vsn1_ops = {
|
||||||
check_version:_check_version,
|
.check_version = _check_version,
|
||||||
read_vg:_read_vg,
|
.read_vg = _read_vg,
|
||||||
read_desc:_read_desc,
|
.read_desc = _read_desc,
|
||||||
read_vgname:_read_vgname
|
.read_vgname = _read_vgname,
|
||||||
};
|
};
|
||||||
|
|
||||||
struct text_vg_version_ops *text_vg_vsn1_init(void)
|
struct text_vg_version_ops *text_vg_vsn1_init(void)
|
||||||
{
|
{
|
||||||
return &_vsn1_ops;
|
return &_vsn1_ops;
|
||||||
};
|
}
|
||||||
|
@ -36,7 +36,7 @@ struct data_area_list {
|
|||||||
/* Fields with the suffix _xl should be xlate'd wherever they appear */
|
/* Fields with the suffix _xl should be xlate'd wherever they appear */
|
||||||
/* On disk */
|
/* On disk */
|
||||||
struct pv_header {
|
struct pv_header {
|
||||||
uint8_t pv_uuid[ID_LEN];
|
int8_t pv_uuid[ID_LEN];
|
||||||
|
|
||||||
/* This size can be overridden if PV belongs to a VG */
|
/* This size can be overridden if PV belongs to a VG */
|
||||||
uint64_t device_size_xl; /* Bytes */
|
uint64_t device_size_xl; /* Bytes */
|
||||||
@ -58,7 +58,7 @@ struct raw_locn {
|
|||||||
/* Structure size limited to one sector */
|
/* Structure size limited to one sector */
|
||||||
struct mda_header {
|
struct mda_header {
|
||||||
uint32_t checksum_xl; /* Checksum of rest of mda_header */
|
uint32_t checksum_xl; /* Checksum of rest of mda_header */
|
||||||
uint8_t magic[16]; /* To aid scans for metadata */
|
int8_t magic[16]; /* To aid scans for metadata */
|
||||||
uint32_t version;
|
uint32_t version;
|
||||||
uint64_t start; /* Absolute start byte of mda_header */
|
uint64_t start; /* Absolute start byte of mda_header */
|
||||||
uint64_t size; /* Size of metadata area */
|
uint64_t size; /* Size of metadata area */
|
||||||
@ -83,6 +83,6 @@ struct mda_context {
|
|||||||
#define FMTT_VERSION 1
|
#define FMTT_VERSION 1
|
||||||
#define MDA_HEADER_SIZE 512
|
#define MDA_HEADER_SIZE 512
|
||||||
#define LVM2_LABEL "LVM2 001"
|
#define LVM2_LABEL "LVM2 001"
|
||||||
#define MDA_SIZE_MIN (8 * getpagesize())
|
#define MDA_SIZE_MIN (8 * (unsigned) getpagesize())
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -27,7 +27,7 @@ static int _text_can_handle(struct labeller *l, char *buf, uint64_t sector)
|
|||||||
{
|
{
|
||||||
struct label_header *lh = (struct label_header *) buf;
|
struct label_header *lh = (struct label_header *) buf;
|
||||||
|
|
||||||
if (!strncmp(lh->type, LVM2_LABEL, sizeof(lh->type)))
|
if (!strncmp((char *)lh->type, LVM2_LABEL, sizeof(lh->type)))
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@ -46,7 +46,7 @@ static int _text_write(struct label *label, char *buf)
|
|||||||
/* FIXME Move to where label is created */
|
/* FIXME Move to where label is created */
|
||||||
strncpy(label->type, LVM2_LABEL, sizeof(label->type));
|
strncpy(label->type, LVM2_LABEL, sizeof(label->type));
|
||||||
|
|
||||||
strncpy(lh->type, label->type, sizeof(label->type));
|
strncpy((char *)lh->type, label->type, sizeof(label->type));
|
||||||
|
|
||||||
pvhdr = (struct pv_header *) ((void *) buf + xlate32(lh->offset_xl));
|
pvhdr = (struct pv_header *) ((void *) buf + xlate32(lh->offset_xl));
|
||||||
info = (struct lvmcache_info *) label->info;
|
info = (struct lvmcache_info *) label->info;
|
||||||
@ -203,7 +203,7 @@ static int _text_read(struct labeller *l, struct device *dev, char *buf,
|
|||||||
|
|
||||||
pvhdr = (struct pv_header *) ((void *) buf + xlate32(lh->offset_xl));
|
pvhdr = (struct pv_header *) ((void *) buf + xlate32(lh->offset_xl));
|
||||||
|
|
||||||
if (!(info = lvmcache_add(l, pvhdr->pv_uuid, dev, NULL, NULL, 0)))
|
if (!(info = lvmcache_add(l, (char *)pvhdr->pv_uuid, dev, NULL, NULL, 0)))
|
||||||
return_0;
|
return_0;
|
||||||
*label = info->label;
|
*label = info->label;
|
||||||
|
|
||||||
@ -264,13 +264,13 @@ static void _fmt_text_destroy(struct labeller *l)
|
|||||||
}
|
}
|
||||||
|
|
||||||
struct label_ops _text_ops = {
|
struct label_ops _text_ops = {
|
||||||
can_handle:_text_can_handle,
|
.can_handle = _text_can_handle,
|
||||||
write:_text_write,
|
.write = _text_write,
|
||||||
read:_text_read,
|
.read = _text_read,
|
||||||
verify:_text_can_handle,
|
.verify = _text_can_handle,
|
||||||
initialise_label:_text_initialise_label,
|
.initialise_label = _text_initialise_label,
|
||||||
destroy_label:_text_destroy_label,
|
.destroy_label = _text_destroy_label,
|
||||||
destroy:_fmt_text_destroy
|
.destroy = _fmt_text_destroy,
|
||||||
};
|
};
|
||||||
|
|
||||||
struct labeller *text_labeller_create(const struct format_type *fmt)
|
struct labeller *text_labeller_create(const struct format_type *fmt)
|
||||||
|
@ -128,7 +128,7 @@ static struct labeller *_find_labeller(struct device *dev, char *buf,
|
|||||||
lh = (struct label_header *) (readbuf +
|
lh = (struct label_header *) (readbuf +
|
||||||
(sector << SECTOR_SHIFT));
|
(sector << SECTOR_SHIFT));
|
||||||
|
|
||||||
if (!strncmp(lh->id, LABEL_ID, sizeof(lh->id))) {
|
if (!strncmp((char *)lh->id, LABEL_ID, sizeof(lh->id))) {
|
||||||
if (found) {
|
if (found) {
|
||||||
log_error("Ignoring additional label on %s at "
|
log_error("Ignoring additional label on %s at "
|
||||||
"sector %" PRIu64, dev_name(dev),
|
"sector %" PRIu64, dev_name(dev),
|
||||||
@ -222,7 +222,7 @@ int label_remove(struct device *dev)
|
|||||||
|
|
||||||
wipe = 0;
|
wipe = 0;
|
||||||
|
|
||||||
if (!strncmp(lh->id, LABEL_ID, sizeof(lh->id))) {
|
if (!strncmp((char *)lh->id, LABEL_ID, sizeof(lh->id))) {
|
||||||
if (xlate64(lh->sector_xl) == sector)
|
if (xlate64(lh->sector_xl) == sector)
|
||||||
wipe = 1;
|
wipe = 1;
|
||||||
} else {
|
} else {
|
||||||
@ -307,7 +307,7 @@ int label_write(struct device *dev, struct label *label)
|
|||||||
|
|
||||||
memset(buf, 0, LABEL_SIZE);
|
memset(buf, 0, LABEL_SIZE);
|
||||||
|
|
||||||
strncpy(lh->id, LABEL_ID, sizeof(lh->id));
|
strncpy((char *)lh->id, LABEL_ID, sizeof(lh->id));
|
||||||
lh->sector_xl = xlate64(label->sector);
|
lh->sector_xl = xlate64(label->sector);
|
||||||
lh->offset_xl = xlate32(sizeof(*lh));
|
lh->offset_xl = xlate32(sizeof(*lh));
|
||||||
|
|
||||||
|
@ -28,11 +28,11 @@ struct labeller;
|
|||||||
|
|
||||||
/* On disk - 32 bytes */
|
/* On disk - 32 bytes */
|
||||||
struct label_header {
|
struct label_header {
|
||||||
uint8_t id[8]; /* LABELONE */
|
int8_t id[8]; /* LABELONE */
|
||||||
uint64_t sector_xl; /* Sector number of this label */
|
uint64_t sector_xl; /* Sector number of this label */
|
||||||
uint32_t crc_xl; /* From next field to end of sector */
|
uint32_t crc_xl; /* From next field to end of sector */
|
||||||
uint32_t offset_xl; /* Offset from start of struct to contents */
|
uint32_t offset_xl; /* Offset from start of struct to contents */
|
||||||
uint8_t type[8]; /* LVM2 001 */
|
int8_t type[8]; /* LVM2 001 */
|
||||||
} __attribute__ ((packed));
|
} __attribute__ ((packed));
|
||||||
|
|
||||||
/* In core */
|
/* In core */
|
||||||
|
@ -13,6 +13,9 @@
|
|||||||
* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifndef _LVM_LOCKING_H
|
||||||
|
#define _LVM_LOCKING_H
|
||||||
|
|
||||||
#include "uuid.h"
|
#include "uuid.h"
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
@ -109,3 +112,4 @@ int suspend_lvs(struct cmd_context *cmd, struct list *lvs);
|
|||||||
int resume_lvs(struct cmd_context *cmd, struct list *lvs);
|
int resume_lvs(struct cmd_context *cmd, struct list *lvs);
|
||||||
int activate_lvs_excl(struct cmd_context *cmd, struct list *lvs);
|
int activate_lvs_excl(struct cmd_context *cmd, struct list *lvs);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
#ifndef _LVM_LV_ALLOC_H
|
#ifndef _LVM_LV_ALLOC_H
|
||||||
|
|
||||||
struct lv_segment *alloc_lv_segment(struct dm_pool *mem,
|
struct lv_segment *alloc_lv_segment(struct dm_pool *mem,
|
||||||
struct segment_type *segtype,
|
const struct segment_type *segtype,
|
||||||
struct logical_volume *lv,
|
struct logical_volume *lv,
|
||||||
uint32_t le, uint32_t len,
|
uint32_t le, uint32_t len,
|
||||||
uint32_t status,
|
uint32_t status,
|
||||||
@ -44,7 +44,7 @@ void release_lv_segment_area(struct lv_segment *seg, uint32_t s,
|
|||||||
struct alloc_handle;
|
struct alloc_handle;
|
||||||
struct alloc_handle *allocate_extents(struct volume_group *vg,
|
struct alloc_handle *allocate_extents(struct volume_group *vg,
|
||||||
struct logical_volume *lv,
|
struct logical_volume *lv,
|
||||||
struct segment_type *segtype,
|
const struct segment_type *segtype,
|
||||||
uint32_t stripes,
|
uint32_t stripes,
|
||||||
uint32_t mirrors, uint32_t log_count,
|
uint32_t mirrors, uint32_t log_count,
|
||||||
uint32_t extents,
|
uint32_t extents,
|
||||||
@ -58,7 +58,7 @@ struct alloc_handle *allocate_extents(struct volume_group *vg,
|
|||||||
int lv_add_segment(struct alloc_handle *ah,
|
int lv_add_segment(struct alloc_handle *ah,
|
||||||
uint32_t first_area, uint32_t num_areas,
|
uint32_t first_area, uint32_t num_areas,
|
||||||
struct logical_volume *lv,
|
struct logical_volume *lv,
|
||||||
struct segment_type *segtype,
|
const struct segment_type *segtype,
|
||||||
uint32_t stripe_size,
|
uint32_t stripe_size,
|
||||||
struct physical_volume *mirrored_pv,
|
struct physical_volume *mirrored_pv,
|
||||||
uint32_t mirrored_pe,
|
uint32_t mirrored_pe,
|
||||||
@ -68,12 +68,12 @@ int lv_add_segment(struct alloc_handle *ah,
|
|||||||
|
|
||||||
int lv_add_log_segment(struct alloc_handle *ah, struct logical_volume *log_lv);
|
int lv_add_log_segment(struct alloc_handle *ah, struct logical_volume *log_lv);
|
||||||
int lv_add_virtual_segment(struct logical_volume *lv, uint32_t status,
|
int lv_add_virtual_segment(struct logical_volume *lv, uint32_t status,
|
||||||
uint32_t extents, struct segment_type *segtype);
|
uint32_t extents, const struct segment_type *segtype);
|
||||||
int lv_add_mirror_segment(struct alloc_handle *ah,
|
int lv_add_mirror_segment(struct alloc_handle *ah,
|
||||||
struct logical_volume *lv,
|
struct logical_volume *lv,
|
||||||
struct logical_volume **sub_lvs,
|
struct logical_volume **sub_lvs,
|
||||||
uint32_t mirrors,
|
uint32_t mirrors,
|
||||||
struct segment_type *segtype,
|
const struct segment_type *segtype,
|
||||||
uint32_t status,
|
uint32_t status,
|
||||||
uint32_t region_size,
|
uint32_t region_size,
|
||||||
struct logical_volume *log_lv);
|
struct logical_volume *log_lv);
|
||||||
|
@ -66,7 +66,7 @@ uint32_t find_free_lvnum(struct logical_volume *lv)
|
|||||||
* All lv_segments get created here.
|
* All lv_segments get created here.
|
||||||
*/
|
*/
|
||||||
struct lv_segment *alloc_lv_segment(struct dm_pool *mem,
|
struct lv_segment *alloc_lv_segment(struct dm_pool *mem,
|
||||||
struct segment_type *segtype,
|
const struct segment_type *segtype,
|
||||||
struct logical_volume *lv,
|
struct logical_volume *lv,
|
||||||
uint32_t le, uint32_t len,
|
uint32_t le, uint32_t len,
|
||||||
uint32_t status,
|
uint32_t status,
|
||||||
@ -124,7 +124,7 @@ struct lv_segment *alloc_snapshot_seg(struct logical_volume *lv,
|
|||||||
uint32_t status, uint32_t old_le_count)
|
uint32_t status, uint32_t old_le_count)
|
||||||
{
|
{
|
||||||
struct lv_segment *seg;
|
struct lv_segment *seg;
|
||||||
struct segment_type *segtype;
|
const struct segment_type *segtype;
|
||||||
|
|
||||||
segtype = get_segtype_from_string(lv->vg->cmd, "snapshot");
|
segtype = get_segtype_from_string(lv->vg->cmd, "snapshot");
|
||||||
if (!segtype) {
|
if (!segtype) {
|
||||||
@ -418,7 +418,7 @@ struct alloc_handle {
|
|||||||
* Preparation for a specific allocation attempt
|
* Preparation for a specific allocation attempt
|
||||||
*/
|
*/
|
||||||
static struct alloc_handle *_alloc_init(struct dm_pool *mem,
|
static struct alloc_handle *_alloc_init(struct dm_pool *mem,
|
||||||
struct segment_type *segtype,
|
const struct segment_type *segtype,
|
||||||
alloc_policy_t alloc,
|
alloc_policy_t alloc,
|
||||||
uint32_t mirrors,
|
uint32_t mirrors,
|
||||||
uint32_t stripes,
|
uint32_t stripes,
|
||||||
@ -493,7 +493,7 @@ void alloc_destroy(struct alloc_handle *ah)
|
|||||||
static int _setup_alloced_segment(struct logical_volume *lv, uint32_t status,
|
static int _setup_alloced_segment(struct logical_volume *lv, uint32_t status,
|
||||||
uint32_t area_count,
|
uint32_t area_count,
|
||||||
uint32_t stripe_size,
|
uint32_t stripe_size,
|
||||||
struct segment_type *segtype,
|
const struct segment_type *segtype,
|
||||||
struct alloced_area *aa,
|
struct alloced_area *aa,
|
||||||
struct physical_volume *mirrored_pv,
|
struct physical_volume *mirrored_pv,
|
||||||
uint32_t mirrored_pe,
|
uint32_t mirrored_pe,
|
||||||
@ -551,7 +551,7 @@ static int _setup_alloced_segments(struct logical_volume *lv,
|
|||||||
uint32_t area_count,
|
uint32_t area_count,
|
||||||
uint32_t status,
|
uint32_t status,
|
||||||
uint32_t stripe_size,
|
uint32_t stripe_size,
|
||||||
struct segment_type *segtype,
|
const struct segment_type *segtype,
|
||||||
struct physical_volume *mirrored_pv,
|
struct physical_volume *mirrored_pv,
|
||||||
uint32_t mirrored_pe,
|
uint32_t mirrored_pe,
|
||||||
uint32_t region_size,
|
uint32_t region_size,
|
||||||
@ -823,7 +823,7 @@ static int _allocate(struct alloc_handle *ah,
|
|||||||
uint32_t new_extents,
|
uint32_t new_extents,
|
||||||
struct list *allocatable_pvs,
|
struct list *allocatable_pvs,
|
||||||
uint32_t stripes, uint32_t mirrors,
|
uint32_t stripes, uint32_t mirrors,
|
||||||
struct segment_type *segtype)
|
const struct segment_type *segtype)
|
||||||
{
|
{
|
||||||
struct pv_area **areas;
|
struct pv_area **areas;
|
||||||
uint32_t allocated = lv ? lv->le_count : 0;
|
uint32_t allocated = lv ? lv->le_count : 0;
|
||||||
@ -925,7 +925,7 @@ static int _allocate(struct alloc_handle *ah,
|
|||||||
}
|
}
|
||||||
|
|
||||||
int lv_add_virtual_segment(struct logical_volume *lv, uint32_t status,
|
int lv_add_virtual_segment(struct logical_volume *lv, uint32_t status,
|
||||||
uint32_t extents, struct segment_type *segtype)
|
uint32_t extents, const struct segment_type *segtype)
|
||||||
{
|
{
|
||||||
struct lv_segment *seg;
|
struct lv_segment *seg;
|
||||||
|
|
||||||
@ -951,7 +951,7 @@ int lv_add_virtual_segment(struct logical_volume *lv, uint32_t status,
|
|||||||
*/
|
*/
|
||||||
struct alloc_handle *allocate_extents(struct volume_group *vg,
|
struct alloc_handle *allocate_extents(struct volume_group *vg,
|
||||||
struct logical_volume *lv,
|
struct logical_volume *lv,
|
||||||
struct segment_type *segtype,
|
const struct segment_type *segtype,
|
||||||
uint32_t stripes,
|
uint32_t stripes,
|
||||||
uint32_t mirrors, uint32_t log_count,
|
uint32_t mirrors, uint32_t log_count,
|
||||||
uint32_t extents,
|
uint32_t extents,
|
||||||
@ -1006,7 +1006,7 @@ struct alloc_handle *allocate_extents(struct volume_group *vg,
|
|||||||
int lv_add_segment(struct alloc_handle *ah,
|
int lv_add_segment(struct alloc_handle *ah,
|
||||||
uint32_t first_area, uint32_t num_areas,
|
uint32_t first_area, uint32_t num_areas,
|
||||||
struct logical_volume *lv,
|
struct logical_volume *lv,
|
||||||
struct segment_type *segtype,
|
const struct segment_type *segtype,
|
||||||
uint32_t stripe_size,
|
uint32_t stripe_size,
|
||||||
struct physical_volume *mirrored_pv,
|
struct physical_volume *mirrored_pv,
|
||||||
uint32_t mirrored_pe,
|
uint32_t mirrored_pe,
|
||||||
@ -1094,7 +1094,7 @@ int lv_add_mirror_segment(struct alloc_handle *ah,
|
|||||||
struct logical_volume *lv,
|
struct logical_volume *lv,
|
||||||
struct logical_volume **sub_lvs,
|
struct logical_volume **sub_lvs,
|
||||||
uint32_t mirrors,
|
uint32_t mirrors,
|
||||||
struct segment_type *segtype,
|
const struct segment_type *segtype,
|
||||||
uint32_t status,
|
uint32_t status,
|
||||||
uint32_t region_size,
|
uint32_t region_size,
|
||||||
struct logical_volume *log_lv)
|
struct logical_volume *log_lv)
|
||||||
@ -1175,7 +1175,7 @@ int lv_add_more_mirrored_areas(struct logical_volume *lv,
|
|||||||
* Entry point for single-step LV allocation + extension.
|
* Entry point for single-step LV allocation + extension.
|
||||||
*/
|
*/
|
||||||
int lv_extend(struct logical_volume *lv,
|
int lv_extend(struct logical_volume *lv,
|
||||||
struct segment_type *segtype,
|
const struct segment_type *segtype,
|
||||||
uint32_t stripes, uint32_t stripe_size,
|
uint32_t stripes, uint32_t stripe_size,
|
||||||
uint32_t mirrors, uint32_t extents,
|
uint32_t mirrors, uint32_t extents,
|
||||||
struct physical_volume *mirrored_pv, uint32_t mirrored_pe,
|
struct physical_volume *mirrored_pv, uint32_t mirrored_pe,
|
||||||
|
@ -1142,7 +1142,7 @@ static struct volume_group *_vg_read_by_vgid(struct cmd_context *cmd,
|
|||||||
vginfo->vgname && *vginfo->vgname) {
|
vginfo->vgname && *vginfo->vgname) {
|
||||||
if ((vg = _vg_read(cmd, vginfo->vgname, vgid,
|
if ((vg = _vg_read(cmd, vginfo->vgname, vgid,
|
||||||
&consistent, precommitted)) &&
|
&consistent, precommitted)) &&
|
||||||
!strncmp(vg->id.uuid, vgid, ID_LEN)) {
|
!strncmp((char *)vg->id.uuid, vgid, ID_LEN)) {
|
||||||
if (!consistent) {
|
if (!consistent) {
|
||||||
log_error("Volume group %s metadata is "
|
log_error("Volume group %s metadata is "
|
||||||
"inconsistent", vginfo->vgname);
|
"inconsistent", vginfo->vgname);
|
||||||
@ -1173,7 +1173,7 @@ static struct volume_group *_vg_read_by_vgid(struct cmd_context *cmd,
|
|||||||
consistent = 0;
|
consistent = 0;
|
||||||
if ((vg = _vg_read(cmd, vgname, vgid, &consistent,
|
if ((vg = _vg_read(cmd, vgname, vgid, &consistent,
|
||||||
precommitted)) &&
|
precommitted)) &&
|
||||||
!strncmp(vg->id.uuid, vgid, ID_LEN)) {
|
!strncmp((char *)vg->id.uuid, vgid, ID_LEN)) {
|
||||||
if (!consistent) {
|
if (!consistent) {
|
||||||
log_error("Volume group %s metadata is "
|
log_error("Volume group %s metadata is "
|
||||||
"inconsistent", vgname);
|
"inconsistent", vgname);
|
||||||
@ -1197,7 +1197,7 @@ struct logical_volume *lv_from_lvid(struct cmd_context *cmd, const char *lvid_s,
|
|||||||
lvid = (const union lvid *) lvid_s;
|
lvid = (const union lvid *) lvid_s;
|
||||||
|
|
||||||
log_very_verbose("Finding volume group for uuid %s", lvid_s);
|
log_very_verbose("Finding volume group for uuid %s", lvid_s);
|
||||||
if (!(vg = _vg_read_by_vgid(cmd, lvid->id[0].uuid, precommitted))) {
|
if (!(vg = _vg_read_by_vgid(cmd, (char *)lvid->id[0].uuid, precommitted))) {
|
||||||
log_error("Volume group for uuid not found: %s", lvid_s);
|
log_error("Volume group for uuid not found: %s", lvid_s);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -26,10 +26,10 @@
|
|||||||
#include "lvm-string.h"
|
#include "lvm-string.h"
|
||||||
#include "uuid.h"
|
#include "uuid.h"
|
||||||
|
|
||||||
#define MAX_STRIPES 128
|
#define MAX_STRIPES 128U
|
||||||
#define SECTOR_SHIFT 9L
|
#define SECTOR_SHIFT 9L
|
||||||
#define SECTOR_SIZE ( 1L << SECTOR_SHIFT )
|
#define SECTOR_SIZE ( 1L << SECTOR_SHIFT )
|
||||||
#define STRIPE_SIZE_MIN ( getpagesize() >> SECTOR_SHIFT) /* PAGESIZE in sectors */
|
#define STRIPE_SIZE_MIN ( (unsigned) getpagesize() >> SECTOR_SHIFT) /* PAGESIZE in sectors */
|
||||||
#define STRIPE_SIZE_MAX ( 512L * 1024L >> SECTOR_SHIFT) /* 512 KB in sectors */
|
#define STRIPE_SIZE_MAX ( 512L * 1024L >> SECTOR_SHIFT) /* 512 KB in sectors */
|
||||||
#define STRIPE_SIZE_LIMIT ((UINT_MAX >> 2) + 1)
|
#define STRIPE_SIZE_LIMIT ((UINT_MAX >> 2) + 1)
|
||||||
#define PV_MIN_SIZE ( 512L * 1024L >> SECTOR_SHIFT) /* 512 KB in sectors */
|
#define PV_MIN_SIZE ( 512L * 1024L >> SECTOR_SHIFT) /* 512 KB in sectors */
|
||||||
@ -39,46 +39,46 @@
|
|||||||
/* Various flags */
|
/* Various flags */
|
||||||
/* Note that the bits no longer necessarily correspond to LVM1 disk format */
|
/* Note that the bits no longer necessarily correspond to LVM1 disk format */
|
||||||
|
|
||||||
#define PARTIAL_VG 0x00000001 /* VG */
|
#define PARTIAL_VG 0x00000001U /* VG */
|
||||||
#define EXPORTED_VG 0x00000002 /* VG PV */
|
#define EXPORTED_VG 0x00000002U /* VG PV */
|
||||||
#define RESIZEABLE_VG 0x00000004 /* VG */
|
#define RESIZEABLE_VG 0x00000004U /* VG */
|
||||||
|
|
||||||
/* May any free extents on this PV be used or must they be left free? */
|
/* May any free extents on this PV be used or must they be left free? */
|
||||||
#define ALLOCATABLE_PV 0x00000008 /* PV */
|
#define ALLOCATABLE_PV 0x00000008U /* PV */
|
||||||
|
|
||||||
#define SPINDOWN_LV 0x00000010 /* LV */
|
#define SPINDOWN_LV 0x00000010U /* LV */
|
||||||
#define BADBLOCK_ON 0x00000020 /* LV */
|
#define BADBLOCK_ON 0x00000020U /* LV */
|
||||||
#define VISIBLE_LV 0x00000040 /* LV */
|
#define VISIBLE_LV 0x00000040U /* LV */
|
||||||
#define FIXED_MINOR 0x00000080 /* LV */
|
#define FIXED_MINOR 0x00000080U /* LV */
|
||||||
/* FIXME Remove when metadata restructuring is completed */
|
/* FIXME Remove when metadata restructuring is completed */
|
||||||
#define SNAPSHOT 0x00001000 /* LV - internal use only */
|
#define SNAPSHOT 0x00001000U /* LV - internal use only */
|
||||||
#define PVMOVE 0x00002000 /* VG LV SEG */
|
#define PVMOVE 0x00002000U /* VG LV SEG */
|
||||||
#define LOCKED 0x00004000 /* LV */
|
#define LOCKED 0x00004000U /* LV */
|
||||||
#define MIRRORED 0x00008000 /* LV - internal use only */
|
#define MIRRORED 0x00008000U /* LV - internal use only */
|
||||||
#define VIRTUAL 0x00010000 /* LV - internal use only */
|
#define VIRTUAL 0x00010000U /* LV - internal use only */
|
||||||
#define MIRROR_LOG 0x00020000 /* LV */
|
#define MIRROR_LOG 0x00020000U /* LV */
|
||||||
#define MIRROR_IMAGE 0x00040000 /* LV */
|
#define MIRROR_IMAGE 0x00040000U /* LV */
|
||||||
#define ACTIVATE_EXCL 0x00080000 /* LV - internal use only */
|
#define ACTIVATE_EXCL 0x00080000U /* LV - internal use only */
|
||||||
#define PRECOMMITTED 0x00100000 /* VG - internal use only */
|
#define PRECOMMITTED 0x00100000U /* VG - internal use only */
|
||||||
|
|
||||||
#define LVM_READ 0x00000100 /* LV VG */
|
#define LVM_READ 0x00000100U /* LV VG */
|
||||||
#define LVM_WRITE 0x00000200 /* LV VG */
|
#define LVM_WRITE 0x00000200U /* LV VG */
|
||||||
#define CLUSTERED 0x00000400 /* VG */
|
#define CLUSTERED 0x00000400U /* VG */
|
||||||
#define SHARED 0x00000800 /* VG */
|
#define SHARED 0x00000800U /* VG */
|
||||||
|
|
||||||
/* Format features flags */
|
/* Format features flags */
|
||||||
#define FMT_SEGMENTS 0x00000001 /* Arbitrary segment params? */
|
#define FMT_SEGMENTS 0x00000001U /* Arbitrary segment params? */
|
||||||
#define FMT_MDAS 0x00000002 /* Proper metadata areas? */
|
#define FMT_MDAS 0x00000002U /* Proper metadata areas? */
|
||||||
#define FMT_TAGS 0x00000004 /* Tagging? */
|
#define FMT_TAGS 0x00000004U /* Tagging? */
|
||||||
#define FMT_UNLIMITED_VOLS 0x00000008 /* Unlimited PVs/LVs? */
|
#define FMT_UNLIMITED_VOLS 0x00000008U /* Unlimited PVs/LVs? */
|
||||||
#define FMT_RESTRICTED_LVIDS 0x00000010 /* LVID <= 255 */
|
#define FMT_RESTRICTED_LVIDS 0x00000010U /* LVID <= 255 */
|
||||||
#define FMT_ORPHAN_ALLOCATABLE 0x00000020 /* Orphan PV allocatable? */
|
#define FMT_ORPHAN_ALLOCATABLE 0x00000020U /* Orphan PV allocatable? */
|
||||||
#define FMT_PRECOMMIT 0x00000040 /* Supports pre-commit? */
|
#define FMT_PRECOMMIT 0x00000040U /* Supports pre-commit? */
|
||||||
#define FMT_RESIZE_PV 0x00000080 /* Supports pvresize? */
|
#define FMT_RESIZE_PV 0x00000080U /* Supports pvresize? */
|
||||||
#define FMT_UNLIMITED_STRIPESIZE 0x00000100 /* Unlimited stripe size? */
|
#define FMT_UNLIMITED_STRIPESIZE 0x00000100U /* Unlimited stripe size? */
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
ALLOC_INVALID,
|
ALLOC_INVALID = 0,
|
||||||
ALLOC_INHERIT,
|
ALLOC_INHERIT,
|
||||||
ALLOC_CONTIGUOUS,
|
ALLOC_CONTIGUOUS,
|
||||||
ALLOC_NORMAL,
|
ALLOC_NORMAL,
|
||||||
@ -239,7 +239,7 @@ struct lv_segment {
|
|||||||
struct list list;
|
struct list list;
|
||||||
struct logical_volume *lv;
|
struct logical_volume *lv;
|
||||||
|
|
||||||
struct segment_type *segtype;
|
const struct segment_type *segtype;
|
||||||
uint32_t le;
|
uint32_t le;
|
||||||
uint32_t len;
|
uint32_t len;
|
||||||
|
|
||||||
@ -378,7 +378,7 @@ struct format_handler {
|
|||||||
* Check whether particular segment type is supported.
|
* Check whether particular segment type is supported.
|
||||||
*/
|
*/
|
||||||
int (*segtype_supported) (struct format_instance *fid,
|
int (*segtype_supported) (struct format_instance *fid,
|
||||||
struct segment_type *segtype);
|
const struct segment_type *segtype);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Create format instance with a particular metadata area
|
* Create format instance with a particular metadata area
|
||||||
@ -463,7 +463,7 @@ int lv_empty(struct logical_volume *lv);
|
|||||||
|
|
||||||
/* Entry point for all LV extent allocations */
|
/* Entry point for all LV extent allocations */
|
||||||
int lv_extend(struct logical_volume *lv,
|
int lv_extend(struct logical_volume *lv,
|
||||||
struct segment_type *segtype,
|
const struct segment_type *segtype,
|
||||||
uint32_t stripes, uint32_t stripe_size,
|
uint32_t stripes, uint32_t stripe_size,
|
||||||
uint32_t mirrors, uint32_t extents,
|
uint32_t mirrors, uint32_t extents,
|
||||||
struct physical_volume *mirrored_pv, uint32_t mirrored_pe,
|
struct physical_volume *mirrored_pv, uint32_t mirrored_pe,
|
||||||
@ -568,7 +568,7 @@ int create_mirror_layers(struct alloc_handle *ah,
|
|||||||
uint32_t first_area,
|
uint32_t first_area,
|
||||||
uint32_t num_mirrors,
|
uint32_t num_mirrors,
|
||||||
struct logical_volume *lv,
|
struct logical_volume *lv,
|
||||||
struct segment_type *segtype,
|
const struct segment_type *segtype,
|
||||||
uint32_t status,
|
uint32_t status,
|
||||||
uint32_t region_size,
|
uint32_t region_size,
|
||||||
struct logical_volume *log_lv);
|
struct logical_volume *log_lv);
|
||||||
@ -576,7 +576,7 @@ int add_mirror_layers(struct alloc_handle *ah,
|
|||||||
uint32_t num_mirrors,
|
uint32_t num_mirrors,
|
||||||
uint32_t existing_mirrors,
|
uint32_t existing_mirrors,
|
||||||
struct logical_volume *lv,
|
struct logical_volume *lv,
|
||||||
struct segment_type *segtype);
|
const struct segment_type *segtype);
|
||||||
|
|
||||||
int remove_mirror_images(struct lv_segment *mirrored_seg, uint32_t num_mirrors,
|
int remove_mirror_images(struct lv_segment *mirrored_seg, uint32_t num_mirrors,
|
||||||
struct list *removable_pvs, int remove_log);
|
struct list *removable_pvs, int remove_log);
|
||||||
|
@ -36,7 +36,7 @@ uint32_t adjusted_mirror_region_size(uint32_t extent_size, uint32_t extents,
|
|||||||
{
|
{
|
||||||
uint32_t region_max;
|
uint32_t region_max;
|
||||||
|
|
||||||
region_max = (1 << (ffs(extents) - 1)) * extent_size;
|
region_max = (1 << (ffs((int)extents) - 1)) * extent_size;
|
||||||
|
|
||||||
if (region_max < region_size) {
|
if (region_max < region_size) {
|
||||||
region_size = region_max;
|
region_size = region_max;
|
||||||
@ -234,7 +234,7 @@ static int _create_layers_for_mirror(struct alloc_handle *ah,
|
|||||||
uint32_t first_area,
|
uint32_t first_area,
|
||||||
uint32_t num_mirrors,
|
uint32_t num_mirrors,
|
||||||
struct logical_volume *lv,
|
struct logical_volume *lv,
|
||||||
struct segment_type *segtype,
|
const struct segment_type *segtype,
|
||||||
struct logical_volume **img_lvs)
|
struct logical_volume **img_lvs)
|
||||||
{
|
{
|
||||||
uint32_t m;
|
uint32_t m;
|
||||||
@ -284,7 +284,7 @@ int create_mirror_layers(struct alloc_handle *ah,
|
|||||||
uint32_t first_area,
|
uint32_t first_area,
|
||||||
uint32_t num_mirrors,
|
uint32_t num_mirrors,
|
||||||
struct logical_volume *lv,
|
struct logical_volume *lv,
|
||||||
struct segment_type *segtype,
|
const struct segment_type *segtype,
|
||||||
uint32_t status,
|
uint32_t status,
|
||||||
uint32_t region_size,
|
uint32_t region_size,
|
||||||
struct logical_volume *log_lv)
|
struct logical_volume *log_lv)
|
||||||
@ -328,7 +328,7 @@ int add_mirror_layers(struct alloc_handle *ah,
|
|||||||
uint32_t num_mirrors,
|
uint32_t num_mirrors,
|
||||||
uint32_t existing_mirrors,
|
uint32_t existing_mirrors,
|
||||||
struct logical_volume *lv,
|
struct logical_volume *lv,
|
||||||
struct segment_type *segtype)
|
const struct segment_type *segtype)
|
||||||
{
|
{
|
||||||
struct logical_volume **img_lvs;
|
struct logical_volume **img_lvs;
|
||||||
|
|
||||||
@ -367,7 +367,7 @@ int insert_pvmove_mirrors(struct cmd_context *cmd,
|
|||||||
uint32_t pe;
|
uint32_t pe;
|
||||||
int lv_used = 0;
|
int lv_used = 0;
|
||||||
uint32_t s, start_le, extent_count = 0u;
|
uint32_t s, start_le, extent_count = 0u;
|
||||||
struct segment_type *segtype;
|
const struct segment_type *segtype;
|
||||||
struct pe_range *per;
|
struct pe_range *per;
|
||||||
uint32_t pe_start, pe_end, per_end, stripe_multiplier;
|
uint32_t pe_start, pe_end, per_end, stripe_multiplier;
|
||||||
|
|
||||||
@ -555,7 +555,7 @@ int remove_pvmove_mirrors(struct volume_group *vg,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
release_lv_segment_area(mir_seg, !c, mir_seg->area_len);
|
release_lv_segment_area(mir_seg, c ? 0 : 1U, mir_seg->area_len);
|
||||||
|
|
||||||
/* Replace mirror with error segment */
|
/* Replace mirror with error segment */
|
||||||
if (!
|
if (!
|
||||||
|
@ -136,8 +136,8 @@ int pv_split_segment(struct physical_volume *pv, uint32_t pe)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static struct pv_segment null_pv_segment = {
|
static struct pv_segment null_pv_segment = {
|
||||||
pv: NULL,
|
.pv = NULL,
|
||||||
pe: 0
|
.pe = 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
struct pv_segment *assign_peg_to_lvseg(struct physical_volume *pv,
|
struct pv_segment *assign_peg_to_lvseg(struct physical_volume *pv,
|
||||||
|
@ -25,13 +25,13 @@ struct config_node;
|
|||||||
struct dev_manager;
|
struct dev_manager;
|
||||||
|
|
||||||
/* Feature flags */
|
/* Feature flags */
|
||||||
#define SEG_CAN_SPLIT 0x00000001
|
#define SEG_CAN_SPLIT 0x00000001U
|
||||||
#define SEG_AREAS_STRIPED 0x00000002
|
#define SEG_AREAS_STRIPED 0x00000002U
|
||||||
#define SEG_AREAS_MIRRORED 0x00000004
|
#define SEG_AREAS_MIRRORED 0x00000004U
|
||||||
#define SEG_SNAPSHOT 0x00000008
|
#define SEG_SNAPSHOT 0x00000008U
|
||||||
#define SEG_FORMAT1_SUPPORT 0x00000010
|
#define SEG_FORMAT1_SUPPORT 0x00000010U
|
||||||
#define SEG_VIRTUAL 0x00000020
|
#define SEG_VIRTUAL 0x00000020U
|
||||||
#define SEG_CANNOT_BE_ZEROED 0x00000040
|
#define SEG_CANNOT_BE_ZEROED 0x00000040U
|
||||||
|
|
||||||
#define seg_is_mirrored(seg) ((seg)->segtype->flags & SEG_AREAS_MIRRORED ? 1 : 0)
|
#define seg_is_mirrored(seg) ((seg)->segtype->flags & SEG_AREAS_MIRRORED ? 1 : 0)
|
||||||
#define seg_is_striped(seg) ((seg)->segtype->flags & SEG_AREAS_STRIPED ? 1 : 0)
|
#define seg_is_striped(seg) ((seg)->segtype->flags & SEG_AREAS_STRIPED ? 1 : 0)
|
||||||
|
@ -60,8 +60,7 @@ static void _mirrored_display(const struct lv_segment *seg)
|
|||||||
|
|
||||||
if (seg->region_size) {
|
if (seg->region_size) {
|
||||||
size = display_size(seg->lv->vg->cmd,
|
size = display_size(seg->lv->vg->cmd,
|
||||||
(uint64_t) seg->region_size,
|
(uint64_t) seg->region_size);
|
||||||
SIZE_SHORT);
|
|
||||||
log_print(" Mirror region size\t%s", size);
|
log_print(" Mirror region size\t%s", size);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -259,7 +258,7 @@ static int _mirrored_add_target_line(struct dev_manager *dm, struct dm_pool *mem
|
|||||||
{
|
{
|
||||||
struct mirror_state *mirr_state;
|
struct mirror_state *mirr_state;
|
||||||
uint32_t area_count = seg->area_count;
|
uint32_t area_count = seg->area_count;
|
||||||
int start_area = 0u;
|
unsigned start_area = 0u;
|
||||||
int mirror_status = MIRR_RUNNING;
|
int mirror_status = MIRR_RUNNING;
|
||||||
uint32_t region_size, region_max;
|
uint32_t region_size, region_max;
|
||||||
int r;
|
int r;
|
||||||
@ -299,7 +298,7 @@ static int _mirrored_add_target_line(struct dev_manager *dm, struct dm_pool *mem
|
|||||||
region_size = seg->region_size;
|
region_size = seg->region_size;
|
||||||
} else {
|
} else {
|
||||||
/* Find largest power of 2 region size unit we can use */
|
/* Find largest power of 2 region size unit we can use */
|
||||||
region_max = (1 << (ffs(seg->area_len) - 1)) *
|
region_max = (1 << (ffs((int)seg->area_len) - 1)) *
|
||||||
seg->lv->vg->extent_size;
|
seg->lv->vg->extent_size;
|
||||||
|
|
||||||
region_size = mirr_state->default_region_size;
|
region_size = mirr_state->default_region_size;
|
||||||
@ -442,21 +441,21 @@ static void _mirrored_destroy(const struct segment_type *segtype)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static struct segtype_handler _mirrored_ops = {
|
static struct segtype_handler _mirrored_ops = {
|
||||||
name:_mirrored_name,
|
.name = _mirrored_name,
|
||||||
display:_mirrored_display,
|
.display = _mirrored_display,
|
||||||
text_import_area_count:_mirrored_text_import_area_count,
|
.text_import_area_count = _mirrored_text_import_area_count,
|
||||||
text_import:_mirrored_text_import,
|
.text_import = _mirrored_text_import,
|
||||||
text_export:_mirrored_text_export,
|
.text_export = _mirrored_text_export,
|
||||||
#ifdef DEVMAPPER_SUPPORT
|
#ifdef DEVMAPPER_SUPPORT
|
||||||
add_target_line:_mirrored_add_target_line,
|
.add_target_line = _mirrored_add_target_line,
|
||||||
target_percent:_mirrored_target_percent,
|
.target_percent = _mirrored_target_percent,
|
||||||
target_present:_mirrored_target_present,
|
.target_present = _mirrored_target_present,
|
||||||
#ifdef DMEVENTD
|
#ifdef DMEVENTD
|
||||||
target_register_events:_target_register_events,
|
.target_register_events = _target_register_events,
|
||||||
target_unregister_events:_target_unregister_events,
|
.target_unregister_events = _target_unregister_events,
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
destroy:_mirrored_destroy,
|
.destroy = _mirrored_destroy,
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef MIRRORED_INTERNAL
|
#ifdef MIRRORED_INTERNAL
|
||||||
|
430
lib/misc/configure.h
Normal file
430
lib/misc/configure.h
Normal file
@ -0,0 +1,430 @@
|
|||||||
|
/* lib/misc/configure.h. Generated by configure. */
|
||||||
|
/* lib/misc/configure.h.in. Generated from configure.in by autoheader. */
|
||||||
|
|
||||||
|
/* Define to 1 if the `closedir' function returns void instead of `int'. */
|
||||||
|
/* #undef CLOSEDIR_VOID */
|
||||||
|
|
||||||
|
/* Define to 1 to include built-in support for clustered LVM locking. */
|
||||||
|
/* #undef CLUSTER_LOCKING_INTERNAL */
|
||||||
|
|
||||||
|
/* Define to 1 to build the shared command library. */
|
||||||
|
/* #undef CMDLIB */
|
||||||
|
|
||||||
|
/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
|
||||||
|
systems. This function is required for `alloca.c' support on those systems.
|
||||||
|
*/
|
||||||
|
/* #undef CRAY_STACKSEG_END */
|
||||||
|
|
||||||
|
/* Define to 1 if using `alloca.c'. */
|
||||||
|
/* #undef C_ALLOCA */
|
||||||
|
|
||||||
|
/* Define to 1 to enable device-mapper interaction. */
|
||||||
|
#define DEVMAPPER_SUPPORT 1
|
||||||
|
|
||||||
|
/* Define to 1 to enable the device-mapper event daemon. */
|
||||||
|
/* #undef DMEVENTD */
|
||||||
|
|
||||||
|
/* Define to 1 if you have `alloca', as a function or macro. */
|
||||||
|
#define HAVE_ALLOCA 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
|
||||||
|
*/
|
||||||
|
#define HAVE_ALLOCA_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <asm/byteorder.h> header file. */
|
||||||
|
/* #undef HAVE_ASM_BYTEORDER_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <assert.h> header file. */
|
||||||
|
#define HAVE_ASSERT_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <ctype.h> header file. */
|
||||||
|
#define HAVE_CTYPE_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
|
||||||
|
*/
|
||||||
|
#define HAVE_DIRENT_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||||
|
#define HAVE_DLFCN_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */
|
||||||
|
/* #undef HAVE_DOPRNT */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `dup2' function. */
|
||||||
|
/* #undef HAVE_DUP2 */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <fcntl.h> header file. */
|
||||||
|
#define HAVE_FCNTL_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `fork' function. */
|
||||||
|
#define HAVE_FORK 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <fstab.h> header file. */
|
||||||
|
/* #undef HAVE_FSTAB_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `gethostname' function. */
|
||||||
|
#define HAVE_GETHOSTNAME 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `getmntent' function. */
|
||||||
|
/* #undef HAVE_GETMNTENT */
|
||||||
|
|
||||||
|
/* Define to 1 to if getopt_long is available. */
|
||||||
|
#define HAVE_GETOPTLONG 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <getopt.h> header file. */
|
||||||
|
#define HAVE_GETOPT_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `getpagesize' function. */
|
||||||
|
#define HAVE_GETPAGESIZE 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||||
|
#define HAVE_INTTYPES_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <libdevmapper.h> header file. */
|
||||||
|
#define HAVE_LIBDEVMAPPER_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if dynamic libraries are available. */
|
||||||
|
#define HAVE_LIBDL 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <libgen.h> header file. */
|
||||||
|
#define HAVE_LIBGEN_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <libintl.h> header file. */
|
||||||
|
/* #undef HAVE_LIBINTL_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `readline' library (-lreadline). */
|
||||||
|
/* #undef HAVE_LIBREADLINE */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <limits.h> header file. */
|
||||||
|
#define HAVE_LIMITS_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <linux/fs.h> header file. */
|
||||||
|
/* #undef HAVE_LINUX_FS_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <locale.h> header file. */
|
||||||
|
#define HAVE_LOCALE_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if `lstat' has the bug that it succeeds when given the
|
||||||
|
zero-length file name argument. */
|
||||||
|
/* #undef HAVE_LSTAT_EMPTY_STRING_BUG */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <machine/endian.h> header file. */
|
||||||
|
#define HAVE_MACHINE_ENDIAN_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if your system has a GNU libc compatible `malloc' function, and
|
||||||
|
to 0 otherwise. */
|
||||||
|
#define HAVE_MALLOC 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <malloc.h> header file. */
|
||||||
|
/* #undef HAVE_MALLOC_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `memmove' function. */
|
||||||
|
/* #undef HAVE_MEMMOVE */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <memory.h> header file. */
|
||||||
|
#define HAVE_MEMORY_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `memset' function. */
|
||||||
|
#define HAVE_MEMSET 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `mkdir' function. */
|
||||||
|
#define HAVE_MKDIR 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have a working `mmap' system call. */
|
||||||
|
#define HAVE_MMAP 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <mntent.h> header file. */
|
||||||
|
/* #undef HAVE_MNTENT_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `munmap' function. */
|
||||||
|
#define HAVE_MUNMAP 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
|
||||||
|
/* #undef HAVE_NDIR_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <netdb.h> header file. */
|
||||||
|
/* #undef HAVE_NETDB_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <netinet/in.h> header file. */
|
||||||
|
/* #undef HAVE_NETINET_IN_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <pthread.h> header file. */
|
||||||
|
/* #undef HAVE_PTHREAD_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <readline/history.h> header file. */
|
||||||
|
/* #undef HAVE_READLINE_HISTORY_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <readline/readline.h> header file. */
|
||||||
|
/* #undef HAVE_READLINE_READLINE_H */
|
||||||
|
|
||||||
|
/* Define to 1 if rl_completion_matches() is available. */
|
||||||
|
/* #undef HAVE_RL_COMPLETION_MATCHES */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `rmdir' function. */
|
||||||
|
#define HAVE_RMDIR 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <search.h> header file. */
|
||||||
|
/* #undef HAVE_SEARCH_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `select' function. */
|
||||||
|
/* #undef HAVE_SELECT */
|
||||||
|
|
||||||
|
/* Define to 1 to include support for selinux. */
|
||||||
|
/* #undef HAVE_SELINUX */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <selinux/selinux.h> header file. */
|
||||||
|
/* #undef HAVE_SELINUX_SELINUX_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `setlocale' function. */
|
||||||
|
#define HAVE_SETLOCALE 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <signal.h> header file. */
|
||||||
|
#define HAVE_SIGNAL_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `socket' function. */
|
||||||
|
/* #undef HAVE_SOCKET */
|
||||||
|
|
||||||
|
/* Define to 1 if `stat' has the bug that it succeeds when given the
|
||||||
|
zero-length file name argument. */
|
||||||
|
/* #undef HAVE_STAT_EMPTY_STRING_BUG */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <stddef.h> header file. */
|
||||||
|
#define HAVE_STDDEF_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <stdint.h> header file. */
|
||||||
|
#define HAVE_STDINT_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <stdio.h> header file. */
|
||||||
|
#define HAVE_STDIO_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||||
|
#define HAVE_STDLIB_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `strcasecmp' function. */
|
||||||
|
#define HAVE_STRCASECMP 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `strchr' function. */
|
||||||
|
#define HAVE_STRCHR 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `strdup' function. */
|
||||||
|
#define HAVE_STRDUP 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `strerror' function. */
|
||||||
|
#define HAVE_STRERROR 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <strings.h> header file. */
|
||||||
|
#define HAVE_STRINGS_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <string.h> header file. */
|
||||||
|
#define HAVE_STRING_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `strncasecmp' function. */
|
||||||
|
#define HAVE_STRNCASECMP 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `strrchr' function. */
|
||||||
|
#define HAVE_STRRCHR 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `strstr' function. */
|
||||||
|
#define HAVE_STRSTR 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `strtol' function. */
|
||||||
|
#define HAVE_STRTOL 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `strtoul' function. */
|
||||||
|
#define HAVE_STRTOUL 1
|
||||||
|
|
||||||
|
/* Define to 1 if `st_rdev' is member of `struct stat'. */
|
||||||
|
#define HAVE_STRUCT_STAT_ST_RDEV 1
|
||||||
|
|
||||||
|
/* Define to 1 if your `struct stat' has `st_rdev'. Deprecated, use
|
||||||
|
`HAVE_STRUCT_STAT_ST_RDEV' instead. */
|
||||||
|
#define HAVE_ST_RDEV 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <syslog.h> header file. */
|
||||||
|
#define HAVE_SYSLOG_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
|
||||||
|
*/
|
||||||
|
/* #undef HAVE_SYS_DIR_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/disk.h> header file. */
|
||||||
|
#define HAVE_SYS_DISK_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/file.h> header file. */
|
||||||
|
#define HAVE_SYS_FILE_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/ioctl.h> header file. */
|
||||||
|
#define HAVE_SYS_IOCTL_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/mman.h> header file. */
|
||||||
|
#define HAVE_SYS_MMAN_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/mount.h> header file. */
|
||||||
|
/* #undef HAVE_SYS_MOUNT_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
|
||||||
|
*/
|
||||||
|
/* #undef HAVE_SYS_NDIR_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/param.h> header file. */
|
||||||
|
#define HAVE_SYS_PARAM_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/resource.h> header file. */
|
||||||
|
#define HAVE_SYS_RESOURCE_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/select.h> header file. */
|
||||||
|
/* #undef HAVE_SYS_SELECT_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/socket.h> header file. */
|
||||||
|
/* #undef HAVE_SYS_SOCKET_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||||
|
#define HAVE_SYS_STAT_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/time.h> header file. */
|
||||||
|
#define HAVE_SYS_TIME_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||||
|
#define HAVE_SYS_TYPES_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/uio.h> header file. */
|
||||||
|
/* #undef HAVE_SYS_UIO_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/un.h> header file. */
|
||||||
|
/* #undef HAVE_SYS_UN_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/utsname.h> header file. */
|
||||||
|
#define HAVE_SYS_UTSNAME_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/vfs.h> header file. */
|
||||||
|
/* #undef HAVE_SYS_VFS_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/wait.h> header file. */
|
||||||
|
#define HAVE_SYS_WAIT_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <time.h> header file. */
|
||||||
|
#define HAVE_TIME_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `uname' function. */
|
||||||
|
#define HAVE_UNAME 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <unistd.h> header file. */
|
||||||
|
#define HAVE_UNISTD_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <utmpx.h> header file. */
|
||||||
|
/* #undef HAVE_UTMPX_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `vfork' function. */
|
||||||
|
#define HAVE_VFORK 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <vfork.h> header file. */
|
||||||
|
/* #undef HAVE_VFORK_H */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `vprintf' function. */
|
||||||
|
#define HAVE_VPRINTF 1
|
||||||
|
|
||||||
|
/* Define to 1 if `fork' works. */
|
||||||
|
#define HAVE_WORKING_FORK 1
|
||||||
|
|
||||||
|
/* Define to 1 if `vfork' works. */
|
||||||
|
#define HAVE_WORKING_VFORK 1
|
||||||
|
|
||||||
|
/* Define to 1 if `lstat' dereferences a symlink specified with a trailing
|
||||||
|
slash. */
|
||||||
|
/* #undef LSTAT_FOLLOWS_SLASHED_SYMLINK */
|
||||||
|
|
||||||
|
/* Define to 1 if 'lvm' should fall back to using LVM1 binaries if
|
||||||
|
device-mapper is missing from the kernel */
|
||||||
|
/* #undef LVM1_FALLBACK */
|
||||||
|
|
||||||
|
/* Define to 1 to include built-in support for LVM1 metadata. */
|
||||||
|
#define LVM1_INTERNAL 1
|
||||||
|
|
||||||
|
/* Define to 1 to include built-in support for mirrors. */
|
||||||
|
#define MIRRORED_INTERNAL 1
|
||||||
|
|
||||||
|
/* The path to 'modprobe', if available. */
|
||||||
|
#define MODPROBE_CMD "/sbin/ifconfig"
|
||||||
|
|
||||||
|
/* Define to 1 to enable O_DIRECT support. */
|
||||||
|
/* #undef O_DIRECT_SUPPORT */
|
||||||
|
|
||||||
|
/* Define to the address where bug reports for this package should be sent. */
|
||||||
|
#define PACKAGE_BUGREPORT ""
|
||||||
|
|
||||||
|
/* Define to the full name of this package. */
|
||||||
|
#define PACKAGE_NAME ""
|
||||||
|
|
||||||
|
/* Define to the full name and version of this package. */
|
||||||
|
#define PACKAGE_STRING ""
|
||||||
|
|
||||||
|
/* Define to the one symbol short name of this package. */
|
||||||
|
#define PACKAGE_TARNAME ""
|
||||||
|
|
||||||
|
/* Define to the version of this package. */
|
||||||
|
#define PACKAGE_VERSION ""
|
||||||
|
|
||||||
|
/* Define to 1 to include built-in support for GFS pool metadata. */
|
||||||
|
#define POOL_INTERNAL 1
|
||||||
|
|
||||||
|
/* Define to 1 to include the LVM readline shell. */
|
||||||
|
/* #undef READLINE_SUPPORT */
|
||||||
|
|
||||||
|
/* Define as the return type of signal handlers (`int' or `void'). */
|
||||||
|
#define RETSIGTYPE void
|
||||||
|
|
||||||
|
/* Define to the type of arg 1 for `select'. */
|
||||||
|
/* #undef SELECT_TYPE_ARG1 */
|
||||||
|
|
||||||
|
/* Define to the type of args 2, 3 and 4 for `select'. */
|
||||||
|
/* #undef SELECT_TYPE_ARG234 */
|
||||||
|
|
||||||
|
/* Define to the type of arg 5 for `select'. */
|
||||||
|
/* #undef SELECT_TYPE_ARG5 */
|
||||||
|
|
||||||
|
/* Define to 1 to include built-in support for snapshots. */
|
||||||
|
#define SNAPSHOT_INTERNAL 1
|
||||||
|
|
||||||
|
/* If using the C implementation of alloca, define if you know the
|
||||||
|
direction of stack growth for your system; otherwise it will be
|
||||||
|
automatically deduced at run-time.
|
||||||
|
STACK_DIRECTION > 0 => grows toward higher addresses
|
||||||
|
STACK_DIRECTION < 0 => grows toward lower addresses
|
||||||
|
STACK_DIRECTION = 0 => direction of growth unknown */
|
||||||
|
/* #undef STACK_DIRECTION */
|
||||||
|
|
||||||
|
/* Define to 1 if you have the ANSI C header files. */
|
||||||
|
#define STDC_HEADERS 1
|
||||||
|
|
||||||
|
/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
|
||||||
|
#define TIME_WITH_SYS_TIME 1
|
||||||
|
|
||||||
|
/* Define to 1 if your <sys/time.h> declares `struct tm'. */
|
||||||
|
/* #undef TM_IN_SYS_TIME */
|
||||||
|
|
||||||
|
/* Define to empty if `const' does not conform to ANSI C. */
|
||||||
|
/* #undef const */
|
||||||
|
|
||||||
|
/* Define to `__inline__' or `__inline' if that's what the C compiler
|
||||||
|
calls it, or to nothing if 'inline' is not supported under any name. */
|
||||||
|
#ifndef __cplusplus
|
||||||
|
/* #undef inline */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Define to rpl_malloc if the replacement function should be used. */
|
||||||
|
/* #undef malloc */
|
||||||
|
|
||||||
|
/* Define to `int' if <sys/types.h> does not define. */
|
||||||
|
/* #undef mode_t */
|
||||||
|
|
||||||
|
/* Define to `long' if <sys/types.h> does not define. */
|
||||||
|
/* #undef off_t */
|
||||||
|
|
||||||
|
/* Define to `int' if <sys/types.h> does not define. */
|
||||||
|
/* #undef pid_t */
|
||||||
|
|
||||||
|
/* Define to `unsigned' if <sys/types.h> does not define. */
|
||||||
|
/* #undef size_t */
|
||||||
|
|
||||||
|
/* Define as `fork' if `vfork' does not work. */
|
||||||
|
/* #undef vfork */
|
429
lib/misc/configure.h.in
Normal file
429
lib/misc/configure.h.in
Normal file
@ -0,0 +1,429 @@
|
|||||||
|
/* lib/misc/configure.h.in. Generated from configure.in by autoheader. */
|
||||||
|
|
||||||
|
/* Define to 1 if the `closedir' function returns void instead of `int'. */
|
||||||
|
#undef CLOSEDIR_VOID
|
||||||
|
|
||||||
|
/* Define to 1 to include built-in support for clustered LVM locking. */
|
||||||
|
#undef CLUSTER_LOCKING_INTERNAL
|
||||||
|
|
||||||
|
/* Define to 1 to build the shared command library. */
|
||||||
|
#undef CMDLIB
|
||||||
|
|
||||||
|
/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
|
||||||
|
systems. This function is required for `alloca.c' support on those systems.
|
||||||
|
*/
|
||||||
|
#undef CRAY_STACKSEG_END
|
||||||
|
|
||||||
|
/* Define to 1 if using `alloca.c'. */
|
||||||
|
#undef C_ALLOCA
|
||||||
|
|
||||||
|
/* Define to 1 to enable device-mapper interaction. */
|
||||||
|
#undef DEVMAPPER_SUPPORT
|
||||||
|
|
||||||
|
/* Define to 1 to enable the device-mapper event daemon. */
|
||||||
|
#undef DMEVENTD
|
||||||
|
|
||||||
|
/* Define to 1 if you have `alloca', as a function or macro. */
|
||||||
|
#undef HAVE_ALLOCA
|
||||||
|
|
||||||
|
/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
|
||||||
|
*/
|
||||||
|
#undef HAVE_ALLOCA_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <asm/byteorder.h> header file. */
|
||||||
|
#undef HAVE_ASM_BYTEORDER_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <assert.h> header file. */
|
||||||
|
#undef HAVE_ASSERT_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <ctype.h> header file. */
|
||||||
|
#undef HAVE_CTYPE_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
|
||||||
|
*/
|
||||||
|
#undef HAVE_DIRENT_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||||
|
#undef HAVE_DLFCN_H
|
||||||
|
|
||||||
|
/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */
|
||||||
|
#undef HAVE_DOPRNT
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `dup2' function. */
|
||||||
|
#undef HAVE_DUP2
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <fcntl.h> header file. */
|
||||||
|
#undef HAVE_FCNTL_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `fork' function. */
|
||||||
|
#undef HAVE_FORK
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <fstab.h> header file. */
|
||||||
|
#undef HAVE_FSTAB_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `gethostname' function. */
|
||||||
|
#undef HAVE_GETHOSTNAME
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `getmntent' function. */
|
||||||
|
#undef HAVE_GETMNTENT
|
||||||
|
|
||||||
|
/* Define to 1 to if getopt_long is available. */
|
||||||
|
#undef HAVE_GETOPTLONG
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <getopt.h> header file. */
|
||||||
|
#undef HAVE_GETOPT_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `getpagesize' function. */
|
||||||
|
#undef HAVE_GETPAGESIZE
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||||
|
#undef HAVE_INTTYPES_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <libdevmapper.h> header file. */
|
||||||
|
#undef HAVE_LIBDEVMAPPER_H
|
||||||
|
|
||||||
|
/* Define to 1 if dynamic libraries are available. */
|
||||||
|
#undef HAVE_LIBDL
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <libgen.h> header file. */
|
||||||
|
#undef HAVE_LIBGEN_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <libintl.h> header file. */
|
||||||
|
#undef HAVE_LIBINTL_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `readline' library (-lreadline). */
|
||||||
|
#undef HAVE_LIBREADLINE
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <limits.h> header file. */
|
||||||
|
#undef HAVE_LIMITS_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <linux/fs.h> header file. */
|
||||||
|
#undef HAVE_LINUX_FS_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <locale.h> header file. */
|
||||||
|
#undef HAVE_LOCALE_H
|
||||||
|
|
||||||
|
/* Define to 1 if `lstat' has the bug that it succeeds when given the
|
||||||
|
zero-length file name argument. */
|
||||||
|
#undef HAVE_LSTAT_EMPTY_STRING_BUG
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <machine/endian.h> header file. */
|
||||||
|
#undef HAVE_MACHINE_ENDIAN_H
|
||||||
|
|
||||||
|
/* Define to 1 if your system has a GNU libc compatible `malloc' function, and
|
||||||
|
to 0 otherwise. */
|
||||||
|
#undef HAVE_MALLOC
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <malloc.h> header file. */
|
||||||
|
#undef HAVE_MALLOC_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `memmove' function. */
|
||||||
|
#undef HAVE_MEMMOVE
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <memory.h> header file. */
|
||||||
|
#undef HAVE_MEMORY_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `memset' function. */
|
||||||
|
#undef HAVE_MEMSET
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `mkdir' function. */
|
||||||
|
#undef HAVE_MKDIR
|
||||||
|
|
||||||
|
/* Define to 1 if you have a working `mmap' system call. */
|
||||||
|
#undef HAVE_MMAP
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <mntent.h> header file. */
|
||||||
|
#undef HAVE_MNTENT_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `munmap' function. */
|
||||||
|
#undef HAVE_MUNMAP
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
|
||||||
|
#undef HAVE_NDIR_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <netdb.h> header file. */
|
||||||
|
#undef HAVE_NETDB_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <netinet/in.h> header file. */
|
||||||
|
#undef HAVE_NETINET_IN_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <pthread.h> header file. */
|
||||||
|
#undef HAVE_PTHREAD_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <readline/history.h> header file. */
|
||||||
|
#undef HAVE_READLINE_HISTORY_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <readline/readline.h> header file. */
|
||||||
|
#undef HAVE_READLINE_READLINE_H
|
||||||
|
|
||||||
|
/* Define to 1 if rl_completion_matches() is available. */
|
||||||
|
#undef HAVE_RL_COMPLETION_MATCHES
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `rmdir' function. */
|
||||||
|
#undef HAVE_RMDIR
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <search.h> header file. */
|
||||||
|
#undef HAVE_SEARCH_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `select' function. */
|
||||||
|
#undef HAVE_SELECT
|
||||||
|
|
||||||
|
/* Define to 1 to include support for selinux. */
|
||||||
|
#undef HAVE_SELINUX
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <selinux/selinux.h> header file. */
|
||||||
|
#undef HAVE_SELINUX_SELINUX_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `setlocale' function. */
|
||||||
|
#undef HAVE_SETLOCALE
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <signal.h> header file. */
|
||||||
|
#undef HAVE_SIGNAL_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `socket' function. */
|
||||||
|
#undef HAVE_SOCKET
|
||||||
|
|
||||||
|
/* Define to 1 if `stat' has the bug that it succeeds when given the
|
||||||
|
zero-length file name argument. */
|
||||||
|
#undef HAVE_STAT_EMPTY_STRING_BUG
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <stddef.h> header file. */
|
||||||
|
#undef HAVE_STDDEF_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <stdint.h> header file. */
|
||||||
|
#undef HAVE_STDINT_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <stdio.h> header file. */
|
||||||
|
#undef HAVE_STDIO_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||||
|
#undef HAVE_STDLIB_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `strcasecmp' function. */
|
||||||
|
#undef HAVE_STRCASECMP
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `strchr' function. */
|
||||||
|
#undef HAVE_STRCHR
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `strdup' function. */
|
||||||
|
#undef HAVE_STRDUP
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `strerror' function. */
|
||||||
|
#undef HAVE_STRERROR
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <strings.h> header file. */
|
||||||
|
#undef HAVE_STRINGS_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <string.h> header file. */
|
||||||
|
#undef HAVE_STRING_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `strncasecmp' function. */
|
||||||
|
#undef HAVE_STRNCASECMP
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `strrchr' function. */
|
||||||
|
#undef HAVE_STRRCHR
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `strstr' function. */
|
||||||
|
#undef HAVE_STRSTR
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `strtol' function. */
|
||||||
|
#undef HAVE_STRTOL
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `strtoul' function. */
|
||||||
|
#undef HAVE_STRTOUL
|
||||||
|
|
||||||
|
/* Define to 1 if `st_rdev' is member of `struct stat'. */
|
||||||
|
#undef HAVE_STRUCT_STAT_ST_RDEV
|
||||||
|
|
||||||
|
/* Define to 1 if your `struct stat' has `st_rdev'. Deprecated, use
|
||||||
|
`HAVE_STRUCT_STAT_ST_RDEV' instead. */
|
||||||
|
#undef HAVE_ST_RDEV
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <syslog.h> header file. */
|
||||||
|
#undef HAVE_SYSLOG_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
|
||||||
|
*/
|
||||||
|
#undef HAVE_SYS_DIR_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/disk.h> header file. */
|
||||||
|
#undef HAVE_SYS_DISK_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/file.h> header file. */
|
||||||
|
#undef HAVE_SYS_FILE_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/ioctl.h> header file. */
|
||||||
|
#undef HAVE_SYS_IOCTL_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/mman.h> header file. */
|
||||||
|
#undef HAVE_SYS_MMAN_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/mount.h> header file. */
|
||||||
|
#undef HAVE_SYS_MOUNT_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
|
||||||
|
*/
|
||||||
|
#undef HAVE_SYS_NDIR_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/param.h> header file. */
|
||||||
|
#undef HAVE_SYS_PARAM_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/resource.h> header file. */
|
||||||
|
#undef HAVE_SYS_RESOURCE_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/select.h> header file. */
|
||||||
|
#undef HAVE_SYS_SELECT_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/socket.h> header file. */
|
||||||
|
#undef HAVE_SYS_SOCKET_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||||
|
#undef HAVE_SYS_STAT_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/time.h> header file. */
|
||||||
|
#undef HAVE_SYS_TIME_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||||
|
#undef HAVE_SYS_TYPES_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/uio.h> header file. */
|
||||||
|
#undef HAVE_SYS_UIO_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/un.h> header file. */
|
||||||
|
#undef HAVE_SYS_UN_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/utsname.h> header file. */
|
||||||
|
#undef HAVE_SYS_UTSNAME_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/vfs.h> header file. */
|
||||||
|
#undef HAVE_SYS_VFS_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/wait.h> header file. */
|
||||||
|
#undef HAVE_SYS_WAIT_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <time.h> header file. */
|
||||||
|
#undef HAVE_TIME_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `uname' function. */
|
||||||
|
#undef HAVE_UNAME
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <unistd.h> header file. */
|
||||||
|
#undef HAVE_UNISTD_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <utmpx.h> header file. */
|
||||||
|
#undef HAVE_UTMPX_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `vfork' function. */
|
||||||
|
#undef HAVE_VFORK
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <vfork.h> header file. */
|
||||||
|
#undef HAVE_VFORK_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `vprintf' function. */
|
||||||
|
#undef HAVE_VPRINTF
|
||||||
|
|
||||||
|
/* Define to 1 if `fork' works. */
|
||||||
|
#undef HAVE_WORKING_FORK
|
||||||
|
|
||||||
|
/* Define to 1 if `vfork' works. */
|
||||||
|
#undef HAVE_WORKING_VFORK
|
||||||
|
|
||||||
|
/* Define to 1 if `lstat' dereferences a symlink specified with a trailing
|
||||||
|
slash. */
|
||||||
|
#undef LSTAT_FOLLOWS_SLASHED_SYMLINK
|
||||||
|
|
||||||
|
/* Define to 1 if 'lvm' should fall back to using LVM1 binaries if
|
||||||
|
device-mapper is missing from the kernel */
|
||||||
|
#undef LVM1_FALLBACK
|
||||||
|
|
||||||
|
/* Define to 1 to include built-in support for LVM1 metadata. */
|
||||||
|
#undef LVM1_INTERNAL
|
||||||
|
|
||||||
|
/* Define to 1 to include built-in support for mirrors. */
|
||||||
|
#undef MIRRORED_INTERNAL
|
||||||
|
|
||||||
|
/* The path to 'modprobe', if available. */
|
||||||
|
#undef MODPROBE_CMD
|
||||||
|
|
||||||
|
/* Define to 1 to enable O_DIRECT support. */
|
||||||
|
#undef O_DIRECT_SUPPORT
|
||||||
|
|
||||||
|
/* Define to the address where bug reports for this package should be sent. */
|
||||||
|
#undef PACKAGE_BUGREPORT
|
||||||
|
|
||||||
|
/* Define to the full name of this package. */
|
||||||
|
#undef PACKAGE_NAME
|
||||||
|
|
||||||
|
/* Define to the full name and version of this package. */
|
||||||
|
#undef PACKAGE_STRING
|
||||||
|
|
||||||
|
/* Define to the one symbol short name of this package. */
|
||||||
|
#undef PACKAGE_TARNAME
|
||||||
|
|
||||||
|
/* Define to the version of this package. */
|
||||||
|
#undef PACKAGE_VERSION
|
||||||
|
|
||||||
|
/* Define to 1 to include built-in support for GFS pool metadata. */
|
||||||
|
#undef POOL_INTERNAL
|
||||||
|
|
||||||
|
/* Define to 1 to include the LVM readline shell. */
|
||||||
|
#undef READLINE_SUPPORT
|
||||||
|
|
||||||
|
/* Define as the return type of signal handlers (`int' or `void'). */
|
||||||
|
#undef RETSIGTYPE
|
||||||
|
|
||||||
|
/* Define to the type of arg 1 for `select'. */
|
||||||
|
#undef SELECT_TYPE_ARG1
|
||||||
|
|
||||||
|
/* Define to the type of args 2, 3 and 4 for `select'. */
|
||||||
|
#undef SELECT_TYPE_ARG234
|
||||||
|
|
||||||
|
/* Define to the type of arg 5 for `select'. */
|
||||||
|
#undef SELECT_TYPE_ARG5
|
||||||
|
|
||||||
|
/* Define to 1 to include built-in support for snapshots. */
|
||||||
|
#undef SNAPSHOT_INTERNAL
|
||||||
|
|
||||||
|
/* If using the C implementation of alloca, define if you know the
|
||||||
|
direction of stack growth for your system; otherwise it will be
|
||||||
|
automatically deduced at run-time.
|
||||||
|
STACK_DIRECTION > 0 => grows toward higher addresses
|
||||||
|
STACK_DIRECTION < 0 => grows toward lower addresses
|
||||||
|
STACK_DIRECTION = 0 => direction of growth unknown */
|
||||||
|
#undef STACK_DIRECTION
|
||||||
|
|
||||||
|
/* Define to 1 if you have the ANSI C header files. */
|
||||||
|
#undef STDC_HEADERS
|
||||||
|
|
||||||
|
/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
|
||||||
|
#undef TIME_WITH_SYS_TIME
|
||||||
|
|
||||||
|
/* Define to 1 if your <sys/time.h> declares `struct tm'. */
|
||||||
|
#undef TM_IN_SYS_TIME
|
||||||
|
|
||||||
|
/* Define to empty if `const' does not conform to ANSI C. */
|
||||||
|
#undef const
|
||||||
|
|
||||||
|
/* Define to `__inline__' or `__inline' if that's what the C compiler
|
||||||
|
calls it, or to nothing if 'inline' is not supported under any name. */
|
||||||
|
#ifndef __cplusplus
|
||||||
|
#undef inline
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Define to rpl_malloc if the replacement function should be used. */
|
||||||
|
#undef malloc
|
||||||
|
|
||||||
|
/* Define to `int' if <sys/types.h> does not define. */
|
||||||
|
#undef mode_t
|
||||||
|
|
||||||
|
/* Define to `long' if <sys/types.h> does not define. */
|
||||||
|
#undef off_t
|
||||||
|
|
||||||
|
/* Define to `int' if <sys/types.h> does not define. */
|
||||||
|
#undef pid_t
|
||||||
|
|
||||||
|
/* Define to `unsigned' if <sys/types.h> does not define. */
|
||||||
|
#undef size_t
|
||||||
|
|
||||||
|
/* Define as `fork' if `vfork' does not work. */
|
||||||
|
#undef vfork
|
@ -19,6 +19,8 @@
|
|||||||
#ifndef _LVM_LIB_H
|
#ifndef _LVM_LIB_H
|
||||||
#define _LVM_LIB_H
|
#define _LVM_LIB_H
|
||||||
|
|
||||||
|
#include <configure.h>
|
||||||
|
|
||||||
#define _REENTRANT
|
#define _REENTRANT
|
||||||
#define _GNU_SOURCE
|
#define _GNU_SOURCE
|
||||||
#define _FILE_OFFSET_BITS 64
|
#define _FILE_OFFSET_BITS 64
|
||||||
|
@ -13,7 +13,11 @@
|
|||||||
* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifndef _LVM_EXEC_H
|
||||||
|
#define _LVM_EXEC_H
|
||||||
|
|
||||||
#include "lib.h"
|
#include "lib.h"
|
||||||
|
|
||||||
int exec_cmd(const char *command, const char *fscmd, const char *lv_path,
|
int exec_cmd(const char *command, const char *fscmd, const char *lv_path,
|
||||||
const char *size);
|
const char *size);
|
||||||
|
#endif
|
||||||
|
@ -35,10 +35,10 @@ int create_temp_name(const char *dir, char *buffer, size_t len, int *fd)
|
|||||||
pid_t pid;
|
pid_t pid;
|
||||||
char hostname[255];
|
char hostname[255];
|
||||||
struct flock lock = {
|
struct flock lock = {
|
||||||
l_type:F_WRLCK,
|
.l_type = F_WRLCK,
|
||||||
l_whence:0,
|
.l_whence = 0,
|
||||||
l_start:0,
|
.l_start = 0,
|
||||||
l_len:0
|
.l_len = 0
|
||||||
};
|
};
|
||||||
|
|
||||||
num = rand();
|
num = rand();
|
||||||
|
@ -13,6 +13,9 @@
|
|||||||
* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifndef _LVM_FILE_H
|
||||||
|
#define _LVM_FILE_H
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Create a temporary filename, and opens a descriptor to the file.
|
* Create a temporary filename, and opens a descriptor to the file.
|
||||||
*/
|
*/
|
||||||
@ -44,3 +47,5 @@ int create_dir(const char *dir);
|
|||||||
|
|
||||||
/* Sync directory changes */
|
/* Sync directory changes */
|
||||||
void sync_dir(const char *file);
|
void sync_dir(const char *file);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
#include <dlfcn.h>
|
#include <dlfcn.h>
|
||||||
|
|
||||||
void get_shared_library_path(struct config_tree *cft, const char *libname,
|
void get_shared_library_path(struct config_tree *cft, const char *libname,
|
||||||
char *path, int path_len)
|
char *path, size_t path_len)
|
||||||
{
|
{
|
||||||
struct stat info;
|
struct stat info;
|
||||||
const char *lib_dir;
|
const char *lib_dir;
|
||||||
|
@ -13,10 +13,15 @@
|
|||||||
* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifndef _LVM_SHAREDLIB_H
|
||||||
|
#define _LVM_SHAREDLIB_H
|
||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include <dlfcn.h>
|
#include <dlfcn.h>
|
||||||
|
|
||||||
void get_shared_library_path(struct config_tree *cft, const char *libname,
|
void get_shared_library_path(struct config_tree *cft, const char *libname,
|
||||||
char *path, int path_len);
|
char *path, size_t path_len);
|
||||||
void *load_shared_library(struct config_tree *cf, const char *libname,
|
void *load_shared_library(struct config_tree *cf, const char *libname,
|
||||||
const char *what, int silent);
|
const char *what, int silent);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
@ -196,17 +196,13 @@ static int _calc_states(struct matcher *m, struct rx_node *rx)
|
|||||||
struct state_queue *h, *t, *tmp;
|
struct state_queue *h, *t, *tmp;
|
||||||
struct dfa_state *dfa, *ldfa;
|
struct dfa_state *dfa, *ldfa;
|
||||||
int i, a, set_bits = 0, count = 0;
|
int i, a, set_bits = 0, count = 0;
|
||||||
dm_bitset_t bs = dm_bitset_create(m->scratch, m->num_nodes), dfa_bits;
|
dm_bitset_t bs, dfa_bits;
|
||||||
|
|
||||||
if (!tt) {
|
if (!tt)
|
||||||
stack;
|
return_0;
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!bs) {
|
if (!(bs = dm_bitset_create(m->scratch, m->num_nodes)))
|
||||||
stack;
|
return_0;
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* create first state */
|
/* create first state */
|
||||||
dfa = _create_dfa_state(m->mem);
|
dfa = _create_dfa_state(m->mem);
|
||||||
@ -284,6 +280,7 @@ struct matcher *matcher_create(struct dm_pool *mem, const char **patterns,
|
|||||||
|
|
||||||
if (!(m = dm_pool_alloc(mem, sizeof(*m)))) {
|
if (!(m = dm_pool_alloc(mem, sizeof(*m)))) {
|
||||||
stack;
|
stack;
|
||||||
|
dm_pool_destroy(scratch);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -578,7 +578,7 @@ static int _size32_disp(struct report_handle *rh, struct field *field,
|
|||||||
const char *disp;
|
const char *disp;
|
||||||
uint64_t *sortval;
|
uint64_t *sortval;
|
||||||
|
|
||||||
if (!*(disp = display_size(rh->cmd, (uint64_t) size, SIZE_UNIT))) {
|
if (!*(disp = display_size_units(rh->cmd, (uint64_t) size))) {
|
||||||
stack;
|
stack;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -606,7 +606,7 @@ static int _size64_disp(struct report_handle *rh, struct field *field,
|
|||||||
const char *disp;
|
const char *disp;
|
||||||
uint64_t *sortval;
|
uint64_t *sortval;
|
||||||
|
|
||||||
if (!*(disp = display_size(rh->cmd, size, SIZE_UNIT))) {
|
if (!*(disp = display_size_units(rh->cmd, size))) {
|
||||||
stack;
|
stack;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -130,14 +130,14 @@ static void _snap_destroy(const struct segment_type *segtype)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static struct segtype_handler _snapshot_ops = {
|
static struct segtype_handler _snapshot_ops = {
|
||||||
name:_snap_name,
|
.name = _snap_name,
|
||||||
text_import:_snap_text_import,
|
.text_import = _snap_text_import,
|
||||||
text_export:_snap_text_export,
|
.text_export = _snap_text_export,
|
||||||
#ifdef DEVMAPPER_SUPPORT
|
#ifdef DEVMAPPER_SUPPORT
|
||||||
target_percent:_snap_target_percent,
|
.target_percent = _snap_target_percent,
|
||||||
target_present:_snap_target_present,
|
.target_present = _snap_target_present,
|
||||||
#endif
|
#endif
|
||||||
destroy:_snap_destroy,
|
.destroy = _snap_destroy,
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef SNAPSHOT_INTERNAL
|
#ifdef SNAPSHOT_INTERNAL
|
||||||
|
@ -193,17 +193,17 @@ static void _striped_destroy(const struct segment_type *segtype)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static struct segtype_handler _striped_ops = {
|
static struct segtype_handler _striped_ops = {
|
||||||
name:_striped_name,
|
.name = _striped_name,
|
||||||
display:_striped_display,
|
.display = _striped_display,
|
||||||
text_import_area_count:_striped_text_import_area_count,
|
.text_import_area_count = _striped_text_import_area_count,
|
||||||
text_import:_striped_text_import,
|
.text_import = _striped_text_import,
|
||||||
text_export:_striped_text_export,
|
.text_export = _striped_text_export,
|
||||||
merge_segments:_striped_merge_segments,
|
.merge_segments = _striped_merge_segments,
|
||||||
#ifdef DEVMAPPER_SUPPORT
|
#ifdef DEVMAPPER_SUPPORT
|
||||||
add_target_line:_striped_add_target_line,
|
.add_target_line = _striped_add_target_line,
|
||||||
target_present:_striped_target_present,
|
.target_present = _striped_target_present,
|
||||||
#endif
|
#endif
|
||||||
destroy:_striped_destroy,
|
.destroy = _striped_destroy,
|
||||||
};
|
};
|
||||||
|
|
||||||
struct segment_type *init_striped_segtype(struct cmd_context *cmd)
|
struct segment_type *init_striped_segtype(struct cmd_context *cmd)
|
||||||
|
@ -20,11 +20,11 @@
|
|||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
static unsigned char _c[] =
|
static char _c[] =
|
||||||
"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!#";
|
"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!#";
|
||||||
|
|
||||||
static int _built_inverse;
|
static int _built_inverse;
|
||||||
static unsigned char _inverse_c[256];
|
static char _inverse_c[256];
|
||||||
|
|
||||||
int lvid_create(union lvid *lvid, struct id *vgid)
|
int lvid_create(union lvid *lvid, struct id *vgid)
|
||||||
{
|
{
|
||||||
@ -63,7 +63,7 @@ int lvid_from_lvnum(union lvid *lvid, struct id *vgid, uint32_t lv_num)
|
|||||||
int lvnum_from_lvid(union lvid *lvid)
|
int lvnum_from_lvid(union lvid *lvid)
|
||||||
{
|
{
|
||||||
int i, lv_num = 0;
|
int i, lv_num = 0;
|
||||||
unsigned char *c;
|
char *c;
|
||||||
|
|
||||||
for (i = 0; i < ID_LEN; i++) {
|
for (i = 0; i < ID_LEN; i++) {
|
||||||
lv_num *= sizeof(_c) - 1;
|
lv_num *= sizeof(_c) - 1;
|
||||||
@ -76,7 +76,8 @@ int lvnum_from_lvid(union lvid *lvid)
|
|||||||
|
|
||||||
int id_create(struct id *id)
|
int id_create(struct id *id)
|
||||||
{
|
{
|
||||||
int randomfile, i;
|
int randomfile;
|
||||||
|
unsigned i;
|
||||||
size_t len = sizeof(id->uuid);
|
size_t len = sizeof(id->uuid);
|
||||||
|
|
||||||
memset(id->uuid, 0, len);
|
memset(id->uuid, 0, len);
|
||||||
@ -85,7 +86,7 @@ int id_create(struct id *id)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (read(randomfile, id->uuid, len) != len) {
|
if (read(randomfile, id->uuid, len) != (ssize_t) len) {
|
||||||
log_sys_error("read", "id_create: /dev/urandom");
|
log_sys_error("read", "id_create: /dev/urandom");
|
||||||
if (close(randomfile))
|
if (close(randomfile))
|
||||||
stack;
|
stack;
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
#define ID_LEN_S "32"
|
#define ID_LEN_S "32"
|
||||||
|
|
||||||
struct id {
|
struct id {
|
||||||
uint8_t uuid[ID_LEN];
|
int8_t uuid[ID_LEN];
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -38,11 +38,13 @@ static int _zero_merge_segments(struct lv_segment *seg1, struct lv_segment *seg2
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef DEVMAPPER_SUPPORT
|
#ifdef DEVMAPPER_SUPPORT
|
||||||
static int _zero_add_target_line(struct dev_manager *dm, struct dm_pool *mem,
|
static int _zero_add_target_line(struct dev_manager *dm __attribute((unused)),
|
||||||
struct config_tree *cft, void **target_state,
|
struct dm_pool *mem __attribute((unused)),
|
||||||
struct lv_segment *seg,
|
struct config_tree *cft __attribute((unused)),
|
||||||
struct dm_tree_node *node, uint64_t len,
|
void **target_state __attribute((unused)),
|
||||||
uint32_t *pvmove_mirror_count)
|
struct lv_segment *seg __attribute((unused)),
|
||||||
|
struct dm_tree_node *node,uint64_t len,
|
||||||
|
uint32_t *pvmove_mirror_count __attribute((unused)))
|
||||||
{
|
{
|
||||||
return dm_tree_node_add_zero_target(node, len);
|
return dm_tree_node_add_zero_target(node, len);
|
||||||
}
|
}
|
||||||
@ -67,13 +69,13 @@ static void _zero_destroy(const struct segment_type *segtype)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static struct segtype_handler _zero_ops = {
|
static struct segtype_handler _zero_ops = {
|
||||||
name:_zero_name,
|
.name = _zero_name,
|
||||||
merge_segments:_zero_merge_segments,
|
.merge_segments = _zero_merge_segments,
|
||||||
#ifdef DEVMAPPER_SUPPORT
|
#ifdef DEVMAPPER_SUPPORT
|
||||||
add_target_line:_zero_add_target_line,
|
.add_target_line = _zero_add_target_line,
|
||||||
target_present:_zero_target_present,
|
.target_present = _zero_target_present,
|
||||||
#endif
|
#endif
|
||||||
destroy:_zero_destroy,
|
.destroy = _zero_destroy,
|
||||||
};
|
};
|
||||||
|
|
||||||
struct segment_type *init_zero_segtype(struct cmd_context *cmd)
|
struct segment_type *init_zero_segtype(struct cmd_context *cmd)
|
||||||
|
@ -24,7 +24,7 @@ INSTALL = @INSTALL@
|
|||||||
MSGFMT = @MSGFMT@
|
MSGFMT = @MSGFMT@
|
||||||
LN_S = @LN_S@
|
LN_S = @LN_S@
|
||||||
LIBS = @LIBS@
|
LIBS = @LIBS@
|
||||||
DEFS += @DEFS@ @LVM_DEFS@
|
DEFS += @DEFS@
|
||||||
CFLAGS += @CFLAGS@
|
CFLAGS += @CFLAGS@
|
||||||
CLDFLAGS += @CLDFLAGS@
|
CLDFLAGS += @CLDFLAGS@
|
||||||
LDDEPS += @LDDEPS@
|
LDDEPS += @LDDEPS@
|
||||||
@ -56,9 +56,10 @@ endif
|
|||||||
|
|
||||||
.SUFFIXES: .c .d .o .so .a .po .pot .mo .dylib
|
.SUFFIXES: .c .d .o .so .a .po .pot .mo .dylib
|
||||||
|
|
||||||
CFLAGS += -fPIC -Wall -Wundef -Wshadow -Wcast-align -Wwrite-strings -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Winline
|
CFLAGS += -fPIC -Wall -Wundef -Wshadow -Wcast-align -Wwrite-strings -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Winline -Wmissing-noreturn
|
||||||
|
|
||||||
#CFLAGS += -W -Wconversion -Wpointer-arith -Wredundant-decls -Wbad-function-cast -Wcast-qual -Wmissing-noreturn
|
#CFLAGS += -W -Wconversion -Wpointer-arith -Wredundant-decls -Wbad-function-cast -Wcast-qual
|
||||||
|
#CFLAGS += -pedantic -std=gnu99
|
||||||
|
|
||||||
CFLAGS += @COPTIMISE_FLAG@
|
CFLAGS += @COPTIMISE_FLAG@
|
||||||
|
|
||||||
|
@ -80,7 +80,7 @@ endif
|
|||||||
|
|
||||||
LVMLIBS = -llvm
|
LVMLIBS = -llvm
|
||||||
|
|
||||||
CLEAN_TARGETS = liblvm2cmd.so liblvm2cmd.a lvm lvm.static lvm.cflow lvm.xref lvm.tree lvm.rxref lvm.rtree
|
CLEAN_TARGETS = liblvm2cmd.so liblvm2cmd.a lvm lvm.o lvm.static lvm.cflow lvm.xref lvm.tree lvm.rxref lvm.rtree
|
||||||
|
|
||||||
ifeq ("@CMDLIB@", "yes")
|
ifeq ("@CMDLIB@", "yes")
|
||||||
TARGETS += liblvm2cmd.so
|
TARGETS += liblvm2cmd.so
|
||||||
|
@ -509,21 +509,6 @@ xx(pvremove,
|
|||||||
|
|
||||||
force_ARG, test_ARG, yes_ARG)
|
force_ARG, test_ARG, yes_ARG)
|
||||||
|
|
||||||
xx(pvresize,
|
|
||||||
"Resize a physical volume in use by a volume group",
|
|
||||||
"Not implemented. Use pvcreate options.",
|
|
||||||
/***
|
|
||||||
"pvresize "
|
|
||||||
"[-A|--autobackup {y|n}] "
|
|
||||||
"[-d|--debug] "
|
|
||||||
"[-h|-?|--help]\n\t"
|
|
||||||
"[-s|--size PhysicalVolumeSize[kKmMgGtT]" "\n"
|
|
||||||
"[-v|--verbose] "
|
|
||||||
"[--version]\n\t"
|
|
||||||
"\tPhysicalVolumePath [PhysicalVolumePath...]\n",
|
|
||||||
***/
|
|
||||||
autobackup_ARG, physicalvolumesize_ARG)
|
|
||||||
|
|
||||||
xx(pvs,
|
xx(pvs,
|
||||||
"Display information about physical volumes",
|
"Display information about physical volumes",
|
||||||
"pvs" "\n"
|
"pvs" "\n"
|
||||||
|
@ -15,7 +15,8 @@
|
|||||||
|
|
||||||
#include "tools.h"
|
#include "tools.h"
|
||||||
|
|
||||||
int formats(struct cmd_context *cmd, int argc, char **argv)
|
int formats(struct cmd_context *cmd, int argc __attribute((unused)),
|
||||||
|
char **argv __attribute((unused)))
|
||||||
{
|
{
|
||||||
display_formats(cmd);
|
display_formats(cmd);
|
||||||
|
|
||||||
|
@ -150,7 +150,7 @@ static int lvchange_alloc(struct cmd_context *cmd, struct logical_volume *lv)
|
|||||||
|
|
||||||
want_contiguous = strcmp(arg_str_value(cmd, contiguous_ARG, "n"), "n");
|
want_contiguous = strcmp(arg_str_value(cmd, contiguous_ARG, "n"), "n");
|
||||||
alloc = want_contiguous ? ALLOC_CONTIGUOUS : ALLOC_INHERIT;
|
alloc = want_contiguous ? ALLOC_CONTIGUOUS : ALLOC_INHERIT;
|
||||||
alloc = (alloc_policy_t) arg_uint_value(cmd, alloc_ARG, alloc);
|
alloc = arg_uint_value(cmd, alloc_ARG, alloc);
|
||||||
|
|
||||||
if (alloc == lv->alloc) {
|
if (alloc == lv->alloc) {
|
||||||
log_error("Allocation policy of logical volume \"%s\" is "
|
log_error("Allocation policy of logical volume \"%s\" is "
|
||||||
@ -186,7 +186,7 @@ static int lvchange_alloc(struct cmd_context *cmd, struct logical_volume *lv)
|
|||||||
static int lvchange_readahead(struct cmd_context *cmd,
|
static int lvchange_readahead(struct cmd_context *cmd,
|
||||||
struct logical_volume *lv)
|
struct logical_volume *lv)
|
||||||
{
|
{
|
||||||
unsigned int read_ahead = 0;
|
unsigned read_ahead = 0;
|
||||||
|
|
||||||
read_ahead = arg_uint_value(cmd, readahead_ARG, 0);
|
read_ahead = arg_uint_value(cmd, readahead_ARG, 0);
|
||||||
|
|
||||||
@ -369,7 +369,7 @@ static int lvchange_tag(struct cmd_context *cmd, struct logical_volume *lv,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int lvchange_single(struct cmd_context *cmd, struct logical_volume *lv,
|
static int lvchange_single(struct cmd_context *cmd, struct logical_volume *lv,
|
||||||
void *handle)
|
void *handle __attribute((unused)))
|
||||||
{
|
{
|
||||||
int doit = 0;
|
int doit = 0;
|
||||||
int archived = 0;
|
int archived = 0;
|
||||||
|
@ -122,8 +122,7 @@ static int _read_params(struct lvconvert_params *lp, struct cmd_context *cmd,
|
|||||||
|
|
||||||
lp->alloc = ALLOC_INHERIT;
|
lp->alloc = ALLOC_INHERIT;
|
||||||
if (arg_count(cmd, alloc_ARG))
|
if (arg_count(cmd, alloc_ARG))
|
||||||
lp->alloc = (alloc_policy_t) arg_uint_value(cmd, alloc_ARG,
|
lp->alloc = arg_uint_value(cmd, alloc_ARG, lp->alloc);
|
||||||
lp->alloc);
|
|
||||||
|
|
||||||
if (lp->snapshot) {
|
if (lp->snapshot) {
|
||||||
if (arg_count(cmd, regionsize_ARG)) {
|
if (arg_count(cmd, regionsize_ARG)) {
|
||||||
|
@ -36,7 +36,7 @@ struct lvcreate_params {
|
|||||||
|
|
||||||
uint32_t mirrors;
|
uint32_t mirrors;
|
||||||
|
|
||||||
struct segment_type *segtype;
|
const struct segment_type *segtype;
|
||||||
|
|
||||||
/* size */
|
/* size */
|
||||||
uint32_t extents;
|
uint32_t extents;
|
||||||
@ -154,7 +154,7 @@ static int _lvcreate_name_params(struct lvcreate_params *lp,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int _read_size_params(struct lvcreate_params *lp,
|
static int _read_size_params(struct lvcreate_params *lp,
|
||||||
struct cmd_context *cmd, int *pargc, char ***pargv)
|
struct cmd_context *cmd)
|
||||||
{
|
{
|
||||||
if (arg_count(cmd, extents_ARG) + arg_count(cmd, size_ARG) != 1) {
|
if (arg_count(cmd, extents_ARG) + arg_count(cmd, size_ARG) != 1) {
|
||||||
log_error("Please specify either size or extents (not both)");
|
log_error("Please specify either size or extents (not both)");
|
||||||
@ -187,7 +187,7 @@ static int _read_size_params(struct lvcreate_params *lp,
|
|||||||
* up to the power of 2) */
|
* up to the power of 2) */
|
||||||
static int _read_stripe_params(struct lvcreate_params *lp,
|
static int _read_stripe_params(struct lvcreate_params *lp,
|
||||||
struct cmd_context *cmd,
|
struct cmd_context *cmd,
|
||||||
int *pargc, char ***pargv)
|
int *pargc)
|
||||||
{
|
{
|
||||||
int argc = *pargc;
|
int argc = *pargc;
|
||||||
|
|
||||||
@ -199,7 +199,7 @@ static int _read_stripe_params(struct lvcreate_params *lp,
|
|||||||
/* Check to make sure we won't overflow lp->stripe_size */
|
/* Check to make sure we won't overflow lp->stripe_size */
|
||||||
if(arg_uint_value(cmd, stripesize_ARG, 0) > STRIPE_SIZE_LIMIT) {
|
if(arg_uint_value(cmd, stripesize_ARG, 0) > STRIPE_SIZE_LIMIT) {
|
||||||
log_error("Stripe size cannot be larger than %s",
|
log_error("Stripe size cannot be larger than %s",
|
||||||
display_size(cmd, STRIPE_SIZE_LIMIT, SIZE_SHORT));
|
display_size(cmd, (uint64_t) STRIPE_SIZE_LIMIT));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
lp->stripe_size = 2 * arg_uint_value(cmd, stripesize_ARG, 0);
|
lp->stripe_size = 2 * arg_uint_value(cmd, stripesize_ARG, 0);
|
||||||
@ -215,7 +215,7 @@ static int _read_stripe_params(struct lvcreate_params *lp,
|
|||||||
"metadata/stripesize",
|
"metadata/stripesize",
|
||||||
DEFAULT_STRIPESIZE) * 2;
|
DEFAULT_STRIPESIZE) * 2;
|
||||||
log_print("Using default stripesize %s",
|
log_print("Using default stripesize %s",
|
||||||
display_size(cmd, lp->stripe_size, SIZE_SHORT));
|
display_size(cmd, (uint64_t) lp->stripe_size));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (argc && (unsigned) argc < lp->stripes) {
|
if (argc && (unsigned) argc < lp->stripes) {
|
||||||
@ -234,7 +234,7 @@ static int _read_stripe_params(struct lvcreate_params *lp,
|
|||||||
if (lp->stripes > 1 && (lp->stripe_size < STRIPE_SIZE_MIN ||
|
if (lp->stripes > 1 && (lp->stripe_size < STRIPE_SIZE_MIN ||
|
||||||
lp->stripe_size & (lp->stripe_size - 1))) {
|
lp->stripe_size & (lp->stripe_size - 1))) {
|
||||||
log_error("Invalid stripe size %s",
|
log_error("Invalid stripe size %s",
|
||||||
display_size(cmd, lp->stripe_size, SIZE_SHORT));
|
display_size(cmd, (uint64_t) lp->stripe_size));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -243,7 +243,7 @@ static int _read_stripe_params(struct lvcreate_params *lp,
|
|||||||
|
|
||||||
static int _read_mirror_params(struct lvcreate_params *lp,
|
static int _read_mirror_params(struct lvcreate_params *lp,
|
||||||
struct cmd_context *cmd,
|
struct cmd_context *cmd,
|
||||||
int *pargc, char ***pargv)
|
int *pargc)
|
||||||
{
|
{
|
||||||
int argc = *pargc;
|
int argc = *pargc;
|
||||||
int region_size;
|
int region_size;
|
||||||
@ -304,7 +304,7 @@ static int _lvcreate_params(struct lvcreate_params *lp, struct cmd_context *cmd,
|
|||||||
/*
|
/*
|
||||||
* Check selected options are compatible and determine segtype
|
* Check selected options are compatible and determine segtype
|
||||||
*/
|
*/
|
||||||
lp->segtype = (struct segment_type *)
|
lp->segtype = (const struct segment_type *)
|
||||||
arg_ptr_value(cmd, type_ARG,
|
arg_ptr_value(cmd, type_ARG,
|
||||||
get_segtype_from_string(cmd, "striped"));
|
get_segtype_from_string(cmd, "striped"));
|
||||||
|
|
||||||
@ -387,9 +387,9 @@ static int _lvcreate_params(struct lvcreate_params *lp, struct cmd_context *cmd,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!_lvcreate_name_params(lp, cmd, &argc, &argv) ||
|
if (!_lvcreate_name_params(lp, cmd, &argc, &argv) ||
|
||||||
!_read_size_params(lp, cmd, &argc, &argv) ||
|
!_read_size_params(lp, cmd) ||
|
||||||
!_read_stripe_params(lp, cmd, &argc, &argv) ||
|
!_read_stripe_params(lp, cmd, &argc) ||
|
||||||
!_read_mirror_params(lp, cmd, &argc, &argv)) {
|
!_read_mirror_params(lp, cmd, &argc)) {
|
||||||
stack;
|
stack;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -407,7 +407,7 @@ static int _lvcreate_params(struct lvcreate_params *lp, struct cmd_context *cmd,
|
|||||||
|
|
||||||
lp->alloc = contiguous ? ALLOC_CONTIGUOUS : ALLOC_INHERIT;
|
lp->alloc = contiguous ? ALLOC_CONTIGUOUS : ALLOC_INHERIT;
|
||||||
|
|
||||||
lp->alloc = (alloc_policy_t) arg_uint_value(cmd, alloc_ARG, lp->alloc);
|
lp->alloc = arg_uint_value(cmd, alloc_ARG, lp->alloc);
|
||||||
|
|
||||||
if (contiguous && (lp->alloc != ALLOC_CONTIGUOUS)) {
|
if (contiguous && (lp->alloc != ALLOC_CONTIGUOUS)) {
|
||||||
log_error("Conflicting contiguous and alloc arguments");
|
log_error("Conflicting contiguous and alloc arguments");
|
||||||
@ -519,8 +519,8 @@ static int _lvcreate(struct cmd_context *cmd, struct lvcreate_params *lp)
|
|||||||
if (lp->stripe_size > vg->extent_size) {
|
if (lp->stripe_size > vg->extent_size) {
|
||||||
log_error("Reducing requested stripe size %s to maximum, "
|
log_error("Reducing requested stripe size %s to maximum, "
|
||||||
"physical extent size %s",
|
"physical extent size %s",
|
||||||
display_size(cmd, lp->stripe_size, SIZE_SHORT),
|
display_size(cmd, (uint64_t) lp->stripe_size),
|
||||||
display_size(cmd, vg->extent_size, SIZE_SHORT));
|
display_size(cmd, (uint64_t) vg->extent_size));
|
||||||
lp->stripe_size = vg->extent_size;
|
lp->stripe_size = vg->extent_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -529,8 +529,7 @@ static int _lvcreate(struct cmd_context *cmd, struct lvcreate_params *lp)
|
|||||||
!(vg->fid->fmt->features & FMT_UNLIMITED_STRIPESIZE) &&
|
!(vg->fid->fmt->features & FMT_UNLIMITED_STRIPESIZE) &&
|
||||||
(lp->stripe_size > STRIPE_SIZE_MAX)) {
|
(lp->stripe_size > STRIPE_SIZE_MAX)) {
|
||||||
log_error("Stripe size may not exceed %s",
|
log_error("Stripe size may not exceed %s",
|
||||||
display_size(cmd, STRIPE_SIZE_MAX,
|
display_size(cmd, (uint64_t) STRIPE_SIZE_MAX));
|
||||||
SIZE_SHORT));
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -542,7 +541,7 @@ static int _lvcreate(struct cmd_context *cmd, struct lvcreate_params *lp)
|
|||||||
tmp_size += vg->extent_size - tmp_size %
|
tmp_size += vg->extent_size - tmp_size %
|
||||||
vg->extent_size;
|
vg->extent_size;
|
||||||
log_print("Rounding up size to full physical extent %s",
|
log_print("Rounding up size to full physical extent %s",
|
||||||
display_size(cmd, tmp_size, SIZE_SHORT));
|
display_size(cmd, tmp_size));
|
||||||
}
|
}
|
||||||
|
|
||||||
lp->extents = tmp_size / vg->extent_size;
|
lp->extents = tmp_size / vg->extent_size;
|
||||||
|
@ -15,7 +15,8 @@
|
|||||||
|
|
||||||
#include "tools.h"
|
#include "tools.h"
|
||||||
|
|
||||||
int lvmchange(struct cmd_context *cmd, int argc, char **argv)
|
int lvmchange(struct cmd_context *cmd __attribute((unused)),
|
||||||
|
int argc __attribute((unused)), char **argv __attribute((unused)))
|
||||||
{
|
{
|
||||||
log_print("With LVM2 and the device mapper, this program is obsolete.");
|
log_print("With LVM2 and the device mapper, this program is obsolete.");
|
||||||
return ECMD_FAILED;
|
return ECMD_FAILED;
|
||||||
|
@ -66,7 +66,7 @@ static struct command *_commands;
|
|||||||
|
|
||||||
static int _interactive;
|
static int _interactive;
|
||||||
|
|
||||||
int yes_no_arg(struct cmd_context *cmd, struct arg *a)
|
int yes_no_arg(struct cmd_context *cmd __attribute((unused)), struct arg *a)
|
||||||
{
|
{
|
||||||
a->sign = SIGN_NONE;
|
a->sign = SIGN_NONE;
|
||||||
|
|
||||||
@ -86,7 +86,8 @@ int yes_no_arg(struct cmd_context *cmd, struct arg *a)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int yes_no_excl_arg(struct cmd_context *cmd, struct arg *a)
|
int yes_no_excl_arg(struct cmd_context *cmd __attribute((unused)),
|
||||||
|
struct arg *a)
|
||||||
{
|
{
|
||||||
a->sign = SIGN_NONE;
|
a->sign = SIGN_NONE;
|
||||||
|
|
||||||
@ -177,7 +178,7 @@ static int _get_int_arg(struct arg *a, char **ptr)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int _size_arg(struct cmd_context *cmd, struct arg *a, int factor)
|
static int _size_arg(struct cmd_context *cmd __attribute((unused)), struct arg *a, int factor)
|
||||||
{
|
{
|
||||||
char *ptr;
|
char *ptr;
|
||||||
int i;
|
int i;
|
||||||
@ -238,7 +239,7 @@ int size_mb_arg(struct cmd_context *cmd, struct arg *a)
|
|||||||
return _size_arg(cmd, a, 1024);
|
return _size_arg(cmd, a, 1024);
|
||||||
}
|
}
|
||||||
|
|
||||||
int int_arg(struct cmd_context *cmd, struct arg *a)
|
int int_arg(struct cmd_context *cmd __attribute((unused)), struct arg *a)
|
||||||
{
|
{
|
||||||
char *ptr;
|
char *ptr;
|
||||||
|
|
||||||
@ -248,7 +249,7 @@ int int_arg(struct cmd_context *cmd, struct arg *a)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int int_arg_with_sign(struct cmd_context *cmd, struct arg *a)
|
int int_arg_with_sign(struct cmd_context *cmd __attribute((unused)), struct arg *a)
|
||||||
{
|
{
|
||||||
char *ptr;
|
char *ptr;
|
||||||
|
|
||||||
@ -258,7 +259,7 @@ int int_arg_with_sign(struct cmd_context *cmd, struct arg *a)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int minor_arg(struct cmd_context *cmd, struct arg *a)
|
int minor_arg(struct cmd_context *cmd __attribute((unused)), struct arg *a)
|
||||||
{
|
{
|
||||||
char *ptr;
|
char *ptr;
|
||||||
|
|
||||||
@ -273,7 +274,7 @@ int minor_arg(struct cmd_context *cmd, struct arg *a)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int major_arg(struct cmd_context *cmd, struct arg *a)
|
int major_arg(struct cmd_context *cmd __attribute((unused)), struct arg *a)
|
||||||
{
|
{
|
||||||
char *ptr;
|
char *ptr;
|
||||||
|
|
||||||
@ -290,13 +291,13 @@ int major_arg(struct cmd_context *cmd, struct arg *a)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int string_arg(struct cmd_context *cmd, struct arg *a)
|
int string_arg(struct cmd_context *cmd __attribute((unused)),
|
||||||
|
struct arg *a __attribute((unused)))
|
||||||
{
|
{
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int tag_arg(struct cmd_context *cmd, struct arg *a)
|
int tag_arg(struct cmd_context *cmd __attribute((unused)), struct arg *a)
|
||||||
{
|
{
|
||||||
char *pos = a->value;
|
char *pos = a->value;
|
||||||
|
|
||||||
@ -309,7 +310,7 @@ int tag_arg(struct cmd_context *cmd, struct arg *a)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int permission_arg(struct cmd_context *cmd, struct arg *a)
|
int permission_arg(struct cmd_context *cmd __attribute((unused)), struct arg *a)
|
||||||
{
|
{
|
||||||
a->sign = SIGN_NONE;
|
a->sign = SIGN_NONE;
|
||||||
|
|
||||||
@ -325,7 +326,7 @@ int permission_arg(struct cmd_context *cmd, struct arg *a)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int alloc_arg(struct cmd_context *cmd, struct arg *a)
|
int alloc_arg(struct cmd_context *cmd __attribute((unused)), struct arg *a)
|
||||||
{
|
{
|
||||||
alloc_policy_t alloc;
|
alloc_policy_t alloc;
|
||||||
|
|
||||||
@ -638,7 +639,9 @@ static int _merge_synonym(struct cmd_context *cmd, int oldarg, int newarg)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int version(struct cmd_context *cmd, int argc, char **argv)
|
int version(struct cmd_context *cmd __attribute((unused)),
|
||||||
|
int argc __attribute((unused)),
|
||||||
|
char **argv __attribute((unused)))
|
||||||
{
|
{
|
||||||
char vsn[80];
|
char vsn[80];
|
||||||
|
|
||||||
@ -744,7 +747,7 @@ static void _display_help(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int help(struct cmd_context *cmd, int argc, char **argv)
|
int help(struct cmd_context *cmd __attribute((unused)), int argc, char **argv)
|
||||||
{
|
{
|
||||||
if (!argc)
|
if (!argc)
|
||||||
_display_help();
|
_display_help();
|
||||||
@ -918,7 +921,7 @@ static int _split(char *str, int *argc, char **argv, int max)
|
|||||||
|
|
||||||
static void _init_rand(void)
|
static void _init_rand(void)
|
||||||
{
|
{
|
||||||
srand((unsigned int) time(NULL) + (unsigned int) getpid());
|
srand((unsigned) time(NULL) + (unsigned) getpid());
|
||||||
}
|
}
|
||||||
|
|
||||||
static void _close_stray_fds(void)
|
static void _close_stray_fds(void)
|
||||||
@ -963,7 +966,7 @@ static struct cmd_context *_init_lvm(void)
|
|||||||
return cmd;
|
return cmd;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void _fin_commands(struct cmd_context *cmd)
|
static void _fin_commands(void)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
@ -975,7 +978,7 @@ static void _fin_commands(struct cmd_context *cmd)
|
|||||||
|
|
||||||
static void _fin(struct cmd_context *cmd)
|
static void _fin(struct cmd_context *cmd)
|
||||||
{
|
{
|
||||||
_fin_commands(cmd);
|
_fin_commands();
|
||||||
destroy_toolcontext(cmd);
|
destroy_toolcontext(cmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -994,8 +997,10 @@ static int _run_script(struct cmd_context *cmd, int argc, char **argv)
|
|||||||
if (!magic_number) {
|
if (!magic_number) {
|
||||||
if (buffer[0] == '#' && buffer[1] == '!')
|
if (buffer[0] == '#' && buffer[1] == '!')
|
||||||
magic_number = 1;
|
magic_number = 1;
|
||||||
else
|
else {
|
||||||
return ENO_SUCH_CMD;
|
ret = ENO_SUCH_CMD;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if ((strlen(buffer) == sizeof(buffer) - 1)
|
if ((strlen(buffer) == sizeof(buffer) - 1)
|
||||||
&& (buffer[sizeof(buffer) - 1] - 2 != '\n')) {
|
&& (buffer[sizeof(buffer) - 1] - 2 != '\n')) {
|
||||||
@ -1343,7 +1348,7 @@ static int _lvm1_fallback(struct cmd_context *cmd)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void _exec_lvm1_command(struct cmd_context *cmd, int argc, char **argv)
|
static void _exec_lvm1_command(char **argv)
|
||||||
{
|
{
|
||||||
char path[PATH_MAX];
|
char path[PATH_MAX];
|
||||||
|
|
||||||
@ -1400,7 +1405,7 @@ int lvm2_main(int argc, char **argv, int is_static)
|
|||||||
"command specified.");
|
"command specified.");
|
||||||
return ECMD_FAILED;
|
return ECMD_FAILED;
|
||||||
}
|
}
|
||||||
_exec_lvm1_command(cmd, argc, argv);
|
_exec_lvm1_command(argv);
|
||||||
return ECMD_FAILED;
|
return ECMD_FAILED;
|
||||||
}
|
}
|
||||||
#ifdef READLINE_SUPPORT
|
#ifdef READLINE_SUPPORT
|
||||||
|
@ -64,7 +64,7 @@ static void _print(struct cmd_context *cmd, const struct device *dev,
|
|||||||
uint64_t size, const char *what)
|
uint64_t size, const char *what)
|
||||||
{
|
{
|
||||||
log_print("%-*s [%15s] %s", max_len, dev_name(dev),
|
log_print("%-*s [%15s] %s", max_len, dev_name(dev),
|
||||||
display_size(cmd, size, SIZE_SHORT), what ? : "");
|
display_size(cmd, size), what ? : "");
|
||||||
}
|
}
|
||||||
|
|
||||||
static int _check_device(struct cmd_context *cmd, struct device *dev)
|
static int _check_device(struct cmd_context *cmd, struct device *dev)
|
||||||
@ -91,7 +91,8 @@ static int _check_device(struct cmd_context *cmd, struct device *dev)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int lvmdiskscan(struct cmd_context *cmd, int argc, char **argv)
|
int lvmdiskscan(struct cmd_context *cmd, int argc __attribute((unused)),
|
||||||
|
char **argv __attribute((unused)))
|
||||||
{
|
{
|
||||||
uint64_t size;
|
uint64_t size;
|
||||||
struct dev_iter *iter;
|
struct dev_iter *iter;
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
#include "tools.h"
|
#include "tools.h"
|
||||||
|
|
||||||
static int lvremove_single(struct cmd_context *cmd, struct logical_volume *lv,
|
static int lvremove_single(struct cmd_context *cmd, struct logical_volume *lv,
|
||||||
void *handle)
|
void *handle __attribute((unused)))
|
||||||
{
|
{
|
||||||
struct volume_group *vg;
|
struct volume_group *vg;
|
||||||
struct lvinfo info;
|
struct lvinfo info;
|
||||||
|
@ -25,7 +25,7 @@ struct lvresize_params {
|
|||||||
uint32_t stripe_size;
|
uint32_t stripe_size;
|
||||||
uint32_t mirrors;
|
uint32_t mirrors;
|
||||||
|
|
||||||
struct segment_type *segtype;
|
const struct segment_type *segtype;
|
||||||
|
|
||||||
/* size */
|
/* size */
|
||||||
uint32_t extents;
|
uint32_t extents;
|
||||||
@ -181,7 +181,7 @@ static int _lvresize(struct cmd_context *cmd, struct lvresize_params *lp)
|
|||||||
|
|
||||||
if (arg_uint_value(cmd, stripesize_ARG, 0) > STRIPE_SIZE_LIMIT) {
|
if (arg_uint_value(cmd, stripesize_ARG, 0) > STRIPE_SIZE_LIMIT) {
|
||||||
log_error("Stripe size cannot be larger than %s",
|
log_error("Stripe size cannot be larger than %s",
|
||||||
display_size(cmd, STRIPE_SIZE_LIMIT, SIZE_SHORT));
|
display_size(cmd, (uint64_t) STRIPE_SIZE_LIMIT));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -191,9 +191,8 @@ static int _lvresize(struct cmd_context *cmd, struct lvresize_params *lp)
|
|||||||
log_error("Reducing stripe size %s to maximum, "
|
log_error("Reducing stripe size %s to maximum, "
|
||||||
"physical extent size %s",
|
"physical extent size %s",
|
||||||
display_size(cmd,
|
display_size(cmd,
|
||||||
arg_uint_value(cmd, stripesize_ARG, 0) * 2,
|
(uint64_t) arg_uint_value(cmd, stripesize_ARG, 0) * 2),
|
||||||
SIZE_SHORT),
|
display_size(cmd, (uint64_t) vg->extent_size));
|
||||||
display_size(cmd, vg->extent_size, SIZE_SHORT));
|
|
||||||
lp->stripe_size = vg->extent_size;
|
lp->stripe_size = vg->extent_size;
|
||||||
} else
|
} else
|
||||||
lp->stripe_size = 2 * arg_uint_value(cmd,
|
lp->stripe_size = 2 * arg_uint_value(cmd,
|
||||||
@ -216,7 +215,7 @@ static int _lvresize(struct cmd_context *cmd, struct lvresize_params *lp)
|
|||||||
return ECMD_FAILED;
|
return ECMD_FAILED;
|
||||||
}
|
}
|
||||||
|
|
||||||
alloc = (alloc_policy_t) arg_uint_value(cmd, alloc_ARG, lv->alloc);
|
alloc = arg_uint_value(cmd, alloc_ARG, lv->alloc);
|
||||||
|
|
||||||
if (lp->size) {
|
if (lp->size) {
|
||||||
if (lp->size % vg->extent_size) {
|
if (lp->size % vg->extent_size) {
|
||||||
@ -227,8 +226,7 @@ static int _lvresize(struct cmd_context *cmd, struct lvresize_params *lp)
|
|||||||
(lp->size % vg->extent_size);
|
(lp->size % vg->extent_size);
|
||||||
|
|
||||||
log_print("Rounding up size to full physical extent %s",
|
log_print("Rounding up size to full physical extent %s",
|
||||||
display_size(cmd, (uint64_t) lp->size,
|
display_size(cmd, (uint64_t) lp->size));
|
||||||
SIZE_SHORT));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
lp->extents = lp->size / vg->extent_size;
|
lp->extents = lp->size / vg->extent_size;
|
||||||
@ -266,8 +264,7 @@ static int _lvresize(struct cmd_context *cmd, struct lvresize_params *lp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* FIXME Support LVs with mixed segment types */
|
/* FIXME Support LVs with mixed segment types */
|
||||||
if (lp->segtype != (struct segment_type *) arg_ptr_value(cmd, type_ARG,
|
if (lp->segtype != arg_ptr_value(cmd, type_ARG, lp->segtype)) {
|
||||||
lp->segtype)) {
|
|
||||||
log_error("VolumeType does not match (%s)", lp->segtype->name);
|
log_error("VolumeType does not match (%s)", lp->segtype->name);
|
||||||
return EINVALID_CMD_LINE;
|
return EINVALID_CMD_LINE;
|
||||||
}
|
}
|
||||||
@ -300,8 +297,7 @@ static int _lvresize(struct cmd_context *cmd, struct lvresize_params *lp)
|
|||||||
if (!lp->stripe_size && lp->stripes > 1) {
|
if (!lp->stripe_size && lp->stripes > 1) {
|
||||||
if (seg_stripesize) {
|
if (seg_stripesize) {
|
||||||
log_print("Using stripesize of last segment %s",
|
log_print("Using stripesize of last segment %s",
|
||||||
display_size(cmd, seg_stripesize,
|
display_size(cmd, (uint64_t) seg_stripesize));
|
||||||
SIZE_SHORT));
|
|
||||||
lp->stripe_size = seg_stripesize;
|
lp->stripe_size = seg_stripesize;
|
||||||
} else {
|
} else {
|
||||||
lp->stripe_size =
|
lp->stripe_size =
|
||||||
@ -309,8 +305,7 @@ static int _lvresize(struct cmd_context *cmd, struct lvresize_params *lp)
|
|||||||
"metadata/stripesize",
|
"metadata/stripesize",
|
||||||
DEFAULT_STRIPESIZE) * 2;
|
DEFAULT_STRIPESIZE) * 2;
|
||||||
log_print("Using default stripesize %s",
|
log_print("Using default stripesize %s",
|
||||||
display_size(cmd, lp->stripe_size,
|
display_size(cmd, (uint64_t) lp->stripe_size));
|
||||||
SIZE_SHORT));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -387,7 +382,7 @@ static int _lvresize(struct cmd_context *cmd, struct lvresize_params *lp)
|
|||||||
|
|
||||||
if (lp->stripe_size < STRIPE_SIZE_MIN) {
|
if (lp->stripe_size < STRIPE_SIZE_MIN) {
|
||||||
log_error("Invalid stripe size %s",
|
log_error("Invalid stripe size %s",
|
||||||
display_size(cmd, lp->stripe_size, SIZE_SHORT));
|
display_size(cmd, (uint64_t) lp->stripe_size));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -467,8 +462,7 @@ static int _lvresize(struct cmd_context *cmd, struct lvresize_params *lp)
|
|||||||
log_print("WARNING: Reducing active%s logical volume "
|
log_print("WARNING: Reducing active%s logical volume "
|
||||||
"to %s", info.open_count ? " and open" : "",
|
"to %s", info.open_count ? " and open" : "",
|
||||||
display_size(cmd, (uint64_t) lp->extents *
|
display_size(cmd, (uint64_t) lp->extents *
|
||||||
vg->extent_size,
|
vg->extent_size));
|
||||||
SIZE_SHORT));
|
|
||||||
|
|
||||||
log_print("THIS MAY DESTROY YOUR DATA "
|
log_print("THIS MAY DESTROY YOUR DATA "
|
||||||
"(filesystem etc.)");
|
"(filesystem etc.)");
|
||||||
@ -523,8 +517,7 @@ static int _lvresize(struct cmd_context *cmd, struct lvresize_params *lp)
|
|||||||
log_print("%sing logical volume %s to %s",
|
log_print("%sing logical volume %s to %s",
|
||||||
(lp->resize == LV_REDUCE) ? "Reduc" : "Extend",
|
(lp->resize == LV_REDUCE) ? "Reduc" : "Extend",
|
||||||
lp->lv_name,
|
lp->lv_name,
|
||||||
display_size(cmd, (uint64_t) lp->extents * vg->extent_size,
|
display_size(cmd, (uint64_t) lp->extents * vg->extent_size));
|
||||||
SIZE_SHORT));
|
|
||||||
|
|
||||||
if (lp->resize == LV_REDUCE) {
|
if (lp->resize == LV_REDUCE) {
|
||||||
if (!lv_reduce(lv, lv->le_count - lp->extents)) {
|
if (!lv_reduce(lv, lv->le_count - lp->extents)) {
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
#include "tools.h"
|
#include "tools.h"
|
||||||
|
|
||||||
static int lvscan_single(struct cmd_context *cmd, struct logical_volume *lv,
|
static int lvscan_single(struct cmd_context *cmd, struct logical_volume *lv,
|
||||||
void *handle)
|
void *handle __attribute((unused)))
|
||||||
{
|
{
|
||||||
struct lvinfo info;
|
struct lvinfo info;
|
||||||
int lv_total = 0;
|
int lv_total = 0;
|
||||||
@ -63,7 +63,7 @@ static int lvscan_single(struct cmd_context *cmd, struct logical_volume *lv,
|
|||||||
|
|
||||||
log_print("%s%s '%s%s/%s' [%s] %s", active_str, snapshot_str,
|
log_print("%s%s '%s%s/%s' [%s] %s", active_str, snapshot_str,
|
||||||
cmd->dev_dir, lv->vg->name, lv->name,
|
cmd->dev_dir, lv->vg->name, lv->name,
|
||||||
display_size(cmd, lv->size, SIZE_SHORT),
|
display_size(cmd, lv->size),
|
||||||
get_alloc_string(lv->alloc));
|
get_alloc_string(lv->alloc));
|
||||||
|
|
||||||
lv_total++;
|
lv_total++;
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#include <sys/wait.h>
|
#include <sys/wait.h>
|
||||||
|
|
||||||
static void _sigchld_handler(int sig)
|
static void _sigchld_handler(int sig __attribute((unused)))
|
||||||
{
|
{
|
||||||
while (wait4(-1, NULL, WNOHANG | WUNTRACED, NULL) > 0) ;
|
while (wait4(-1, NULL, WNOHANG | WUNTRACED, NULL) > 0) ;
|
||||||
}
|
}
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
/* FIXME Locking. PVs in VG. */
|
/* FIXME Locking. PVs in VG. */
|
||||||
|
|
||||||
static int _pvchange_single(struct cmd_context *cmd, struct physical_volume *pv,
|
static int _pvchange_single(struct cmd_context *cmd, struct physical_volume *pv,
|
||||||
void *handle)
|
void *handle __attribute((unused)))
|
||||||
{
|
{
|
||||||
struct volume_group *vg = NULL;
|
struct volume_group *vg = NULL;
|
||||||
struct pv_list *pvl;
|
struct pv_list *pvl;
|
||||||
|
@ -15,7 +15,8 @@
|
|||||||
|
|
||||||
#include "tools.h"
|
#include "tools.h"
|
||||||
|
|
||||||
static int _pvdisplay_single(struct cmd_context *cmd, struct volume_group *vg,
|
static int _pvdisplay_single(struct cmd_context *cmd,
|
||||||
|
struct volume_group *vg __attribute((unused)),
|
||||||
struct physical_volume *pv, void *handle)
|
struct physical_volume *pv, void *handle)
|
||||||
{
|
{
|
||||||
uint64_t size;
|
uint64_t size;
|
||||||
@ -29,7 +30,7 @@ static int _pvdisplay_single(struct cmd_context *cmd, struct volume_group *vg,
|
|||||||
|
|
||||||
if (arg_count(cmd, short_ARG)) {
|
if (arg_count(cmd, short_ARG)) {
|
||||||
log_print("Device \"%s\" has a capacity of %s", pv_name,
|
log_print("Device \"%s\" has a capacity of %s", pv_name,
|
||||||
display_size(cmd, size, SIZE_SHORT));
|
display_size(cmd, size));
|
||||||
return ECMD_PROCESSED;
|
return ECMD_PROCESSED;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -39,7 +40,7 @@ static int _pvdisplay_single(struct cmd_context *cmd, struct volume_group *vg,
|
|||||||
|
|
||||||
if (!pv->vg_name)
|
if (!pv->vg_name)
|
||||||
log_print("\"%s\" is a new physical volume of \"%s\"",
|
log_print("\"%s\" is a new physical volume of \"%s\"",
|
||||||
pv_name, display_size(cmd, size, SIZE_SHORT));
|
pv_name, display_size(cmd, size));
|
||||||
|
|
||||||
if (arg_count(cmd, colon_ARG)) {
|
if (arg_count(cmd, colon_ARG)) {
|
||||||
pvdisplay_colons(pv);
|
pvdisplay_colons(pv);
|
||||||
|
@ -335,8 +335,7 @@ static int _set_up_pvmove(struct cmd_context *cmd, const char *pv_name,
|
|||||||
return ECMD_FAILED;
|
return ECMD_FAILED;
|
||||||
}
|
}
|
||||||
|
|
||||||
alloc = (alloc_policy_t) arg_uint_value(cmd, alloc_ARG,
|
alloc = arg_uint_value(cmd, alloc_ARG, ALLOC_INHERIT);
|
||||||
ALLOC_INHERIT);
|
|
||||||
if (alloc == ALLOC_INHERIT)
|
if (alloc == ALLOC_INHERIT)
|
||||||
alloc = vg->alloc;
|
alloc = vg->alloc;
|
||||||
|
|
||||||
@ -483,11 +482,11 @@ static struct volume_group *_get_move_vg(struct cmd_context *cmd,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static struct poll_functions _pvmove_fns = {
|
static struct poll_functions _pvmove_fns = {
|
||||||
get_copy_name_from_lv:get_pvmove_pvname_from_lv_mirr,
|
.get_copy_name_from_lv = get_pvmove_pvname_from_lv_mirr,
|
||||||
get_copy_vg:_get_move_vg,
|
.get_copy_vg = _get_move_vg,
|
||||||
get_copy_lv:find_pvmove_lv_from_pvname,
|
.get_copy_lv = find_pvmove_lv_from_pvname,
|
||||||
update_metadata:_update_metadata,
|
.update_metadata = _update_metadata,
|
||||||
finish_copy:_finish_pvmove,
|
.finish_copy = _finish_pvmove,
|
||||||
};
|
};
|
||||||
|
|
||||||
int pvmove_poll(struct cmd_context *cmd, const char *pv_name,
|
int pvmove_poll(struct cmd_context *cmd, const char *pv_name,
|
||||||
@ -525,5 +524,5 @@ int pvmove(struct cmd_context *cmd, int argc, char **argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
return pvmove_poll(cmd, pv_name,
|
return pvmove_poll(cmd, pv_name,
|
||||||
arg_count(cmd, background_ARG) ? 1 : 0);
|
arg_count(cmd, background_ARG) ? 1U : 0);
|
||||||
}
|
}
|
||||||
|
@ -73,7 +73,7 @@ static int pvremove_check(struct cmd_context *cmd, const char *name)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int pvremove_single(struct cmd_context *cmd, const char *pv_name,
|
static int pvremove_single(struct cmd_context *cmd, const char *pv_name,
|
||||||
void *handle)
|
void *handle __attribute((unused)))
|
||||||
{
|
{
|
||||||
struct device *dev;
|
struct device *dev;
|
||||||
|
|
||||||
|
@ -19,10 +19,11 @@ int pv_max_name_len = 0;
|
|||||||
int vg_max_name_len = 0;
|
int vg_max_name_len = 0;
|
||||||
|
|
||||||
static void _pvscan_display_single(struct cmd_context *cmd,
|
static void _pvscan_display_single(struct cmd_context *cmd,
|
||||||
struct physical_volume *pv, void *handle)
|
struct physical_volume *pv,
|
||||||
|
void *handle __attribute((unused)))
|
||||||
{
|
{
|
||||||
char uuid[64];
|
char uuid[64];
|
||||||
unsigned int vg_name_len = 0;
|
unsigned vg_name_len = 0;
|
||||||
|
|
||||||
char pv_tmp_name[NAME_LEN] = { 0, };
|
char pv_tmp_name[NAME_LEN] = { 0, };
|
||||||
char vg_tmp_name[NAME_LEN] = { 0, };
|
char vg_tmp_name[NAME_LEN] = { 0, };
|
||||||
@ -66,7 +67,7 @@ static void _pvscan_display_single(struct cmd_context *cmd,
|
|||||||
pv_max_name_len, pv_tmp_name,
|
pv_max_name_len, pv_tmp_name,
|
||||||
vg_max_name_len, " ",
|
vg_max_name_len, " ",
|
||||||
pv->fmt ? pv->fmt->name : " ",
|
pv->fmt ? pv->fmt->name : " ",
|
||||||
display_size(cmd, pv->size, SIZE_SHORT));
|
display_size(cmd, pv->size));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -77,10 +78,10 @@ static void _pvscan_display_single(struct cmd_context *cmd,
|
|||||||
pv_max_name_len, pv_tmp_name,
|
pv_max_name_len, pv_tmp_name,
|
||||||
vg_name_this,
|
vg_name_this,
|
||||||
display_size(cmd, (uint64_t) pv->pe_count *
|
display_size(cmd, (uint64_t) pv->pe_count *
|
||||||
pv->pe_size, SIZE_SHORT),
|
pv->pe_size),
|
||||||
display_size(cmd, (uint64_t) (pv->pe_count -
|
display_size(cmd, (uint64_t) (pv->pe_count -
|
||||||
pv->pe_alloc_count)
|
pv->pe_alloc_count)
|
||||||
* pv->pe_size, SIZE_SHORT));
|
* pv->pe_size));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -88,16 +89,15 @@ static void _pvscan_display_single(struct cmd_context *cmd,
|
|||||||
log_print("PV %-*s VG %-*s %s [%s / %s free]", pv_max_name_len,
|
log_print("PV %-*s VG %-*s %s [%s / %s free]", pv_max_name_len,
|
||||||
pv_tmp_name, vg_max_name_len, vg_tmp_name,
|
pv_tmp_name, vg_max_name_len, vg_tmp_name,
|
||||||
pv->fmt ? pv->fmt->name : " ",
|
pv->fmt ? pv->fmt->name : " ",
|
||||||
display_size(cmd, (uint64_t) pv->pe_count * pv->pe_size,
|
display_size(cmd, (uint64_t) pv->pe_count * pv->pe_size),
|
||||||
SIZE_SHORT),
|
|
||||||
display_size(cmd,
|
display_size(cmd,
|
||||||
(uint64_t) (pv->pe_count - pv->pe_alloc_count) *
|
(uint64_t) (pv->pe_count - pv->pe_alloc_count) *
|
||||||
pv->pe_size,
|
pv->pe_size));
|
||||||
SIZE_SHORT));
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int pvscan(struct cmd_context *cmd, int argc, char **argv)
|
int pvscan(struct cmd_context *cmd, int argc __attribute((unused)),
|
||||||
|
char **argv __attribute((unused)))
|
||||||
{
|
{
|
||||||
int new_pvs_found = 0;
|
int new_pvs_found = 0;
|
||||||
int pvs_found = 0;
|
int pvs_found = 0;
|
||||||
@ -185,10 +185,10 @@ int pvscan(struct cmd_context *cmd, int argc, char **argv)
|
|||||||
|
|
||||||
log_print("Total: %d [%s] / in use: %d [%s] / in no VG: %d [%s]",
|
log_print("Total: %d [%s] / in use: %d [%s] / in no VG: %d [%s]",
|
||||||
pvs_found,
|
pvs_found,
|
||||||
display_size(cmd, size_total, SIZE_SHORT),
|
display_size(cmd, size_total),
|
||||||
pvs_found - new_pvs_found,
|
pvs_found - new_pvs_found,
|
||||||
display_size(cmd, (size_total - size_new), SIZE_SHORT),
|
display_size(cmd, (size_total - size_new)),
|
||||||
new_pvs_found, display_size(cmd, size_new, SIZE_SHORT));
|
new_pvs_found, display_size(cmd, size_new));
|
||||||
|
|
||||||
return ECMD_PROCESSED;
|
return ECMD_PROCESSED;
|
||||||
}
|
}
|
||||||
|
@ -16,8 +16,9 @@
|
|||||||
#include "tools.h"
|
#include "tools.h"
|
||||||
#include "report.h"
|
#include "report.h"
|
||||||
|
|
||||||
static int _vgs_single(struct cmd_context *cmd, const char *vg_name,
|
static int _vgs_single(struct cmd_context *cmd __attribute((unused)),
|
||||||
struct volume_group *vg, int consistent, void *handle)
|
const char *vg_name, struct volume_group *vg,
|
||||||
|
int consistent __attribute((unused)), void *handle)
|
||||||
{
|
{
|
||||||
if (!vg) {
|
if (!vg) {
|
||||||
log_error("Volume group %s not found", vg_name);
|
log_error("Volume group %s not found", vg_name);
|
||||||
@ -44,8 +45,8 @@ static int _lvs_single(struct cmd_context *cmd, struct logical_volume *lv,
|
|||||||
return ECMD_PROCESSED;
|
return ECMD_PROCESSED;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int _segs_single(struct cmd_context *cmd, struct lv_segment *seg,
|
static int _segs_single(struct cmd_context *cmd __attribute((unused)),
|
||||||
void *handle)
|
struct lv_segment *seg, void *handle)
|
||||||
{
|
{
|
||||||
if (!report_object(handle, seg->lv->vg, seg->lv, NULL, seg, NULL))
|
if (!report_object(handle, seg->lv->vg, seg->lv, NULL, seg, NULL))
|
||||||
return ECMD_FAILED;
|
return ECMD_FAILED;
|
||||||
|
@ -15,7 +15,8 @@
|
|||||||
|
|
||||||
#include "tools.h"
|
#include "tools.h"
|
||||||
|
|
||||||
int segtypes(struct cmd_context *cmd, int argc, char **argv)
|
int segtypes(struct cmd_context *cmd, int argc __attribute((unused)),
|
||||||
|
char **argv __attribute((unused)))
|
||||||
{
|
{
|
||||||
display_segtypes(cmd);
|
display_segtypes(cmd);
|
||||||
|
|
||||||
|
22
tools/stub.h
22
tools/stub.h
@ -14,13 +14,27 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#define unimplemented \
|
#define unimplemented \
|
||||||
{ log_error("Command not implemented yet."); return ECMD_FAILED;}
|
log_error("Command not implemented yet."); return ECMD_FAILED
|
||||||
|
|
||||||
/*int e2fsadm(struct cmd_context *cmd, int argc, char **argv) unimplemented*/
|
/*int e2fsadm(struct cmd_context *cmd, int argc, char **argv) unimplemented*/
|
||||||
int lvmsadc(struct cmd_context *cmd, int argc, char **argv) unimplemented
|
int lvmsadc(struct cmd_context *cmd __attribute((unused)),
|
||||||
int lvmsar(struct cmd_context *cmd, int argc, char **argv) unimplemented
|
int argc __attribute((unused)),
|
||||||
|
char **argv __attribute((unused)))
|
||||||
|
{
|
||||||
|
unimplemented;
|
||||||
|
}
|
||||||
|
|
||||||
int pvdata(struct cmd_context *cmd, int argc, char **argv) {
|
int lvmsar(struct cmd_context *cmd __attribute((unused)),
|
||||||
|
int argc __attribute((unused)),
|
||||||
|
char **argv __attribute((unused)))
|
||||||
|
{
|
||||||
|
unimplemented;
|
||||||
|
}
|
||||||
|
|
||||||
|
int pvdata(struct cmd_context *cmd __attribute((unused)),
|
||||||
|
int argc __attribute((unused)),
|
||||||
|
char **argv __attribute((unused)))
|
||||||
|
{
|
||||||
log_error("There's no 'pvdata' command in LVM2.");
|
log_error("There's no 'pvdata' command in LVM2.");
|
||||||
log_error("Use lvs, pvs, vgs instead; or use vgcfgbackup and read the text file backup.");
|
log_error("Use lvs, pvs, vgs instead; or use vgcfgbackup and read the text file backup.");
|
||||||
log_error("Metadata in LVM1 format can still be displayed using LVM1's pvdata command.");
|
log_error("Metadata in LVM1 format can still be displayed using LVM1's pvdata command.");
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
#include <sys/wait.h>
|
#include <sys/wait.h>
|
||||||
|
|
||||||
/* Command line args */
|
/* Command line args */
|
||||||
unsigned int arg_count(struct cmd_context *cmd, int a)
|
unsigned arg_count(struct cmd_context *cmd, int a)
|
||||||
{
|
{
|
||||||
return cmd->args[a].count;
|
return cmd->args[a].count;
|
||||||
}
|
}
|
||||||
@ -45,7 +45,7 @@ uint32_t arg_uint_value(struct cmd_context *cmd, int a, const uint32_t def)
|
|||||||
return arg_count(cmd, a) ? cmd->args[a].ui_value : def;
|
return arg_count(cmd, a) ? cmd->args[a].ui_value : def;
|
||||||
}
|
}
|
||||||
|
|
||||||
int64_t arg_int64_value(struct cmd_context *cmd, int a, const uint64_t def)
|
int64_t arg_int64_value(struct cmd_context *cmd, int a, const int64_t def)
|
||||||
{
|
{
|
||||||
return arg_count(cmd, a) ? cmd->args[a].i64_value : def;
|
return arg_count(cmd, a) ? cmd->args[a].i64_value : def;
|
||||||
}
|
}
|
||||||
@ -87,11 +87,11 @@ int process_each_lv_in_vg(struct cmd_context *cmd, struct volume_group *vg,
|
|||||||
{
|
{
|
||||||
int ret_max = 0;
|
int ret_max = 0;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
int process_all = 0;
|
unsigned process_all = 0;
|
||||||
int process_lv = 0;
|
unsigned process_lv = 0;
|
||||||
int tags_supplied = 0;
|
unsigned tags_supplied = 0;
|
||||||
int lvargs_supplied = 0;
|
unsigned lvargs_supplied = 0;
|
||||||
int lvargs_matched = 0;
|
unsigned lvargs_matched = 0;
|
||||||
|
|
||||||
struct lv_list *lvl;
|
struct lv_list *lvl;
|
||||||
|
|
||||||
@ -1082,8 +1082,8 @@ int validate_vg_name(struct cmd_context *cmd, const char *vg_name)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int generate_log_name_format(struct volume_group *vg, const char *lv_name,
|
int generate_log_name_format(struct volume_group *vg __attribute((unused)),
|
||||||
char *buffer, size_t size)
|
const char *lv_name, char *buffer, size_t size)
|
||||||
{
|
{
|
||||||
if (lvm_snprintf(buffer, size, "%s_mlog", lv_name) < 0) {
|
if (lvm_snprintf(buffer, size, "%s_mlog", lv_name) < 0) {
|
||||||
stack;
|
stack;
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
#define _GNU_SOURCE
|
#define _GNU_SOURCE
|
||||||
#define _FILE_OFFSET_BITS 64
|
#define _FILE_OFFSET_BITS 64
|
||||||
|
|
||||||
|
#include <configure.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <libdevmapper.h>
|
#include <libdevmapper.h>
|
||||||
|
|
||||||
@ -95,7 +96,7 @@ struct arg {
|
|||||||
|
|
||||||
int (*fn) (struct cmd_context * cmd, struct arg * a);
|
int (*fn) (struct cmd_context * cmd, struct arg * a);
|
||||||
|
|
||||||
unsigned int count;
|
unsigned count;
|
||||||
char *value;
|
char *value;
|
||||||
int32_t i_value;
|
int32_t i_value;
|
||||||
uint32_t ui_value;
|
uint32_t ui_value;
|
||||||
@ -143,7 +144,7 @@ const char *arg_value(struct cmd_context *cmd, int a);
|
|||||||
const char *arg_str_value(struct cmd_context *cmd, int a, const char *def);
|
const char *arg_str_value(struct cmd_context *cmd, int a, const char *def);
|
||||||
int32_t arg_int_value(struct cmd_context *cmd, int a, const int32_t def);
|
int32_t arg_int_value(struct cmd_context *cmd, int a, const int32_t def);
|
||||||
uint32_t arg_uint_value(struct cmd_context *cmd, int a, const uint32_t def);
|
uint32_t arg_uint_value(struct cmd_context *cmd, int a, const uint32_t def);
|
||||||
int64_t arg_int64_value(struct cmd_context *cmd, int a, const uint64_t def);
|
int64_t arg_int64_value(struct cmd_context *cmd, int a, const int64_t def);
|
||||||
uint64_t arg_uint64_value(struct cmd_context *cmd, int a, const uint64_t def);
|
uint64_t arg_uint64_value(struct cmd_context *cmd, int a, const uint64_t def);
|
||||||
const void *arg_ptr_value(struct cmd_context *cmd, int a, const void *def);
|
const void *arg_ptr_value(struct cmd_context *cmd, int a, const void *def);
|
||||||
sign_t arg_sign_value(struct cmd_context *cmd, int a, const sign_t def);
|
sign_t arg_sign_value(struct cmd_context *cmd, int a, const sign_t def);
|
||||||
|
@ -1 +1,3 @@
|
|||||||
|
#ifndef _LVM_VERSION_H
|
||||||
#define LVM_VERSION @LVM_VERSION@
|
#define LVM_VERSION @LVM_VERSION@
|
||||||
|
#endif
|
||||||
|
@ -114,7 +114,7 @@ static int _vgchange_alloc(struct cmd_context *cmd, struct volume_group *vg)
|
|||||||
{
|
{
|
||||||
alloc_policy_t alloc;
|
alloc_policy_t alloc;
|
||||||
|
|
||||||
alloc = (alloc_policy_t) arg_uint_value(cmd, alloc_ARG, ALLOC_NORMAL);
|
alloc = arg_uint_value(cmd, alloc_ARG, ALLOC_NORMAL);
|
||||||
|
|
||||||
if (alloc == ALLOC_INHERIT) {
|
if (alloc == ALLOC_INHERIT) {
|
||||||
log_error("Volume Group allocation policy cannot inherit "
|
log_error("Volume Group allocation policy cannot inherit "
|
||||||
@ -290,7 +290,7 @@ static int _vgchange_pesize(struct cmd_context *cmd, struct volume_group *vg)
|
|||||||
|
|
||||||
if (extent_size == vg->extent_size) {
|
if (extent_size == vg->extent_size) {
|
||||||
log_error("Physical extent size of VG %s is already %s",
|
log_error("Physical extent size of VG %s is already %s",
|
||||||
vg->name, display_size(cmd, extent_size, SIZE_SHORT));
|
vg->name, display_size(cmd, (uint64_t) extent_size));
|
||||||
return ECMD_PROCESSED;
|
return ECMD_PROCESSED;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -367,7 +367,8 @@ static int _vgchange_tag(struct cmd_context *cmd, struct volume_group *vg,
|
|||||||
return ECMD_PROCESSED;
|
return ECMD_PROCESSED;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int _vgchange_uuid(struct cmd_context *cmd, struct volume_group *vg)
|
static int _vgchange_uuid(struct cmd_context *cmd __attribute((unused)),
|
||||||
|
struct volume_group *vg)
|
||||||
{
|
{
|
||||||
struct lv_list *lvl;
|
struct lv_list *lvl;
|
||||||
|
|
||||||
@ -401,7 +402,7 @@ static int _vgchange_uuid(struct cmd_context *cmd, struct volume_group *vg)
|
|||||||
|
|
||||||
static int vgchange_single(struct cmd_context *cmd, const char *vg_name,
|
static int vgchange_single(struct cmd_context *cmd, const char *vg_name,
|
||||||
struct volume_group *vg, int consistent,
|
struct volume_group *vg, int consistent,
|
||||||
void *handle)
|
void *handle __attribute((unused)))
|
||||||
{
|
{
|
||||||
int r = ECMD_FAILED;
|
int r = ECMD_FAILED;
|
||||||
|
|
||||||
|
@ -15,8 +15,10 @@
|
|||||||
|
|
||||||
#include "tools.h"
|
#include "tools.h"
|
||||||
|
|
||||||
static int vgck_single(struct cmd_context *cmd, const char *vg_name,
|
static int vgck_single(struct cmd_context *cmd __attribute((unused)),
|
||||||
struct volume_group *vg, int consistent, void *handle)
|
const char *vg_name,
|
||||||
|
struct volume_group *vg, int consistent,
|
||||||
|
void *handle __attribute((unused)))
|
||||||
{
|
{
|
||||||
if (!vg) {
|
if (!vg) {
|
||||||
log_error("Volume group \"%s\" not found", vg_name);
|
log_error("Volume group \"%s\" not found", vg_name);
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
|
|
||||||
static int vgconvert_single(struct cmd_context *cmd, const char *vg_name,
|
static int vgconvert_single(struct cmd_context *cmd, const char *vg_name,
|
||||||
struct volume_group *vg, int consistent,
|
struct volume_group *vg, int consistent,
|
||||||
void *handle)
|
void *handle __attribute((unused)))
|
||||||
{
|
{
|
||||||
struct physical_volume *pv, *existing_pv;
|
struct physical_volume *pv, *existing_pv;
|
||||||
struct logical_volume *lv;
|
struct logical_volume *lv;
|
||||||
|
@ -41,7 +41,7 @@ int vgcreate(struct cmd_context *cmd, int argc, char **argv)
|
|||||||
vg_name = argv[0];
|
vg_name = argv[0];
|
||||||
max_lv = arg_uint_value(cmd, maxlogicalvolumes_ARG, 0);
|
max_lv = arg_uint_value(cmd, maxlogicalvolumes_ARG, 0);
|
||||||
max_pv = arg_uint_value(cmd, maxphysicalvolumes_ARG, 0);
|
max_pv = arg_uint_value(cmd, maxphysicalvolumes_ARG, 0);
|
||||||
alloc = (alloc_policy_t) arg_uint_value(cmd, alloc_ARG, ALLOC_NORMAL);
|
alloc = arg_uint_value(cmd, alloc_ARG, ALLOC_NORMAL);
|
||||||
|
|
||||||
if (alloc == ALLOC_INHERIT) {
|
if (alloc == ALLOC_INHERIT) {
|
||||||
log_error("Volume Group allocation policy cannot inherit "
|
log_error("Volume Group allocation policy cannot inherit "
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
|
|
||||||
static int vgdisplay_single(struct cmd_context *cmd, const char *vg_name,
|
static int vgdisplay_single(struct cmd_context *cmd, const char *vg_name,
|
||||||
struct volume_group *vg, int consistent,
|
struct volume_group *vg, int consistent,
|
||||||
void *handle)
|
void *handle __attribute((unused)))
|
||||||
{
|
{
|
||||||
/* FIXME Do the active check here if activevolumegroups_ARG ? */
|
/* FIXME Do the active check here if activevolumegroups_ARG ? */
|
||||||
if (!vg) {
|
if (!vg) {
|
||||||
|
@ -15,9 +15,10 @@
|
|||||||
|
|
||||||
#include "tools.h"
|
#include "tools.h"
|
||||||
|
|
||||||
static int vgexport_single(struct cmd_context *cmd, const char *vg_name,
|
static int vgexport_single(struct cmd_context *cmd __attribute((unused)),
|
||||||
|
const char *vg_name,
|
||||||
struct volume_group *vg, int consistent,
|
struct volume_group *vg, int consistent,
|
||||||
void *handle)
|
void *handle __attribute((unused)))
|
||||||
{
|
{
|
||||||
struct pv_list *pvl;
|
struct pv_list *pvl;
|
||||||
struct physical_volume *pv;
|
struct physical_volume *pv;
|
||||||
|
@ -15,9 +15,10 @@
|
|||||||
|
|
||||||
#include "tools.h"
|
#include "tools.h"
|
||||||
|
|
||||||
static int vgimport_single(struct cmd_context *cmd, const char *vg_name,
|
static int vgimport_single(struct cmd_context *cmd __attribute((unused)),
|
||||||
|
const char *vg_name,
|
||||||
struct volume_group *vg, int consistent,
|
struct volume_group *vg, int consistent,
|
||||||
void *handle)
|
void *handle __attribute((unused)))
|
||||||
{
|
{
|
||||||
struct pv_list *pvl;
|
struct pv_list *pvl;
|
||||||
struct physical_volume *pv;
|
struct physical_volume *pv;
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
#include "tools.h"
|
#include "tools.h"
|
||||||
|
|
||||||
static int _vgmknodes_single(struct cmd_context *cmd, struct logical_volume *lv,
|
static int _vgmknodes_single(struct cmd_context *cmd, struct logical_volume *lv,
|
||||||
void *handle)
|
void *handle __attribute((unused)))
|
||||||
{
|
{
|
||||||
if (!lv_mknodes(cmd, lv))
|
if (!lv_mknodes(cmd, lv))
|
||||||
return ECMD_FAILED;
|
return ECMD_FAILED;
|
||||||
|
@ -157,7 +157,7 @@ static int _make_vg_consistent(struct cmd_context *cmd, struct volume_group *vg)
|
|||||||
struct physical_volume *pv;
|
struct physical_volume *pv;
|
||||||
struct lv_segment *seg, *mirrored_seg;
|
struct lv_segment *seg, *mirrored_seg;
|
||||||
struct lv_segment_area area;
|
struct lv_segment_area area;
|
||||||
unsigned int s;
|
unsigned s;
|
||||||
uint32_t mimages;
|
uint32_t mimages;
|
||||||
int list_unsafe, only_mirror_images_found;
|
int list_unsafe, only_mirror_images_found;
|
||||||
LIST_INIT(lvs_changed);
|
LIST_INIT(lvs_changed);
|
||||||
@ -323,7 +323,8 @@ static int _make_vg_consistent(struct cmd_context *cmd, struct volume_group *vg)
|
|||||||
|
|
||||||
/* Or take pv_name instead? */
|
/* Or take pv_name instead? */
|
||||||
static int _vgreduce_single(struct cmd_context *cmd, struct volume_group *vg,
|
static int _vgreduce_single(struct cmd_context *cmd, struct volume_group *vg,
|
||||||
struct physical_volume *pv, void *handle)
|
struct physical_volume *pv,
|
||||||
|
void *handle __attribute((unused)))
|
||||||
{
|
{
|
||||||
struct pv_list *pvl;
|
struct pv_list *pvl;
|
||||||
const char *name = dev_name(pv->dev);
|
const char *name = dev_name(pv->dev);
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
|
|
||||||
static int vgremove_single(struct cmd_context *cmd, const char *vg_name,
|
static int vgremove_single(struct cmd_context *cmd, const char *vg_name,
|
||||||
struct volume_group *vg, int consistent,
|
struct volume_group *vg, int consistent,
|
||||||
void *handle)
|
void *handle __attribute((unused)))
|
||||||
{
|
{
|
||||||
struct physical_volume *pv;
|
struct physical_volume *pv;
|
||||||
struct pv_list *pvl;
|
struct pv_list *pvl;
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
int vgrename(struct cmd_context *cmd, int argc, char **argv)
|
int vgrename(struct cmd_context *cmd, int argc, char **argv)
|
||||||
{
|
{
|
||||||
char *dev_dir;
|
char *dev_dir;
|
||||||
unsigned int length;
|
unsigned length;
|
||||||
struct id id;
|
struct id id;
|
||||||
int consistent = 1;
|
int consistent = 1;
|
||||||
int match = 0;
|
int match = 0;
|
||||||
@ -90,9 +90,9 @@ int vgrename(struct cmd_context *cmd, int argc, char **argv)
|
|||||||
log_suppress(2);
|
log_suppress(2);
|
||||||
found_id = id_read_format(&id, vg_name_old);
|
found_id = id_read_format(&id, vg_name_old);
|
||||||
log_suppress(0);
|
log_suppress(0);
|
||||||
if (found_id && (vg_name = vgname_from_vgid(cmd->mem, id.uuid))) {
|
if (found_id && (vg_name = vgname_from_vgid(cmd->mem, (char *)id.uuid))) {
|
||||||
vg_name_old = vg_name;
|
vg_name_old = vg_name;
|
||||||
vgid = id.uuid;
|
vgid = (char *)id.uuid;
|
||||||
} else
|
} else
|
||||||
vgid = NULL;
|
vgid = NULL;
|
||||||
|
|
||||||
|
@ -16,7 +16,8 @@
|
|||||||
#include "tools.h"
|
#include "tools.h"
|
||||||
|
|
||||||
static int vgscan_single(struct cmd_context *cmd, const char *vg_name,
|
static int vgscan_single(struct cmd_context *cmd, const char *vg_name,
|
||||||
struct volume_group *vg, int consistent, void *handle)
|
struct volume_group *vg, int consistent,
|
||||||
|
void *handle __attribute((unused)))
|
||||||
{
|
{
|
||||||
if (!vg) {
|
if (!vg) {
|
||||||
log_error("Volume group \"%s\" not found", vg_name);
|
log_error("Volume group \"%s\" not found", vg_name);
|
||||||
|
@ -64,7 +64,7 @@ static int _move_lvs(struct volume_group *vg_from, struct volume_group *vg_to)
|
|||||||
struct lv_segment *seg;
|
struct lv_segment *seg;
|
||||||
struct physical_volume *pv;
|
struct physical_volume *pv;
|
||||||
struct volume_group *vg_with;
|
struct volume_group *vg_with;
|
||||||
unsigned int s;
|
unsigned s;
|
||||||
|
|
||||||
list_iterate_safe(lvh, lvht, &vg_from->lvs) {
|
list_iterate_safe(lvh, lvht, &vg_from->lvs) {
|
||||||
lv = list_item(lvh, struct lv_list)->lv;
|
lv = list_item(lvh, struct lv_list)->lv;
|
||||||
|
Loading…
Reference in New Issue
Block a user