1
0
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:
Alasdair Kergon 2006-05-09 21:23:51 +00:00
parent b810c54700
commit 72b2cb613a
92 changed files with 1766 additions and 553 deletions

View File

@ -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
View File

@ -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

View File

@ -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)

View File

@ -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);

View File

@ -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

View File

@ -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;

View File

@ -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);

View File

@ -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;

View File

@ -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;
} }

View File

@ -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);

View File

@ -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)

View File

@ -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;
} }

View File

@ -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 "

View File

@ -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 */

View File

@ -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

View File

@ -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;

View File

@ -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).",

View File

@ -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)

View File

@ -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;

View File

@ -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 */

View File

@ -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 */

View File

@ -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"))) {

View File

@ -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)

View File

@ -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);

View File

@ -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;
} }

View File

@ -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;
}; }

View File

@ -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

View File

@ -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)

View File

@ -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));

View File

@ -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 */

View File

@ -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

View File

@ -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);

View File

@ -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,

View File

@ -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;
} }

View File

@ -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);

View File

@ -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 (!

View File

@ -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,

View File

@ -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)

View File

@ -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
View 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
View 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

View File

@ -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

View File

@ -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

View File

@ -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();

View File

@ -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

View File

@ -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;

View File

@ -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

View File

@ -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;
} }

View File

@ -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;
} }

View File

@ -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

View File

@ -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)

View File

@ -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;

View File

@ -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];
}; };
/* /*

View File

@ -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)

View File

@ -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@

View File

@ -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

View File

@ -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"

View File

@ -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);

View File

@ -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;

View File

@ -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)) {

View File

@ -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;

View File

@ -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;

View File

@ -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

View File

@ -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;

View File

@ -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;

View File

@ -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)) {

View File

@ -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++;

View File

@ -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) ;
} }

View File

@ -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;

View File

@ -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);

View File

@ -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);
} }

View File

@ -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;

View File

@ -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;
} }

View File

@ -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;

View File

@ -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);

View File

@ -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.");

View File

@ -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;

View File

@ -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);

View File

@ -1 +1,3 @@
#ifndef _LVM_VERSION_H
#define LVM_VERSION @LVM_VERSION@ #define LVM_VERSION @LVM_VERSION@
#endif

View File

@ -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;

View File

@ -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);

View File

@ -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;

View File

@ -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 "

View File

@ -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) {

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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);

View File

@ -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;

View File

@ -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;

View File

@ -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);

View File

@ -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;