[lvm-devel] master - lvmdump: Add -l, to collect a state dump from lvmetad.
Petr Rockai
mornfall at fedoraproject.org
Thu Oct 11 20:47:51 UTC 2012
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=4022fd3e79099fb22b2b7d3d6dca8de733a2a783
Commit: 4022fd3e79099fb22b2b7d3d6dca8de733a2a783
Parent: 8557b412f679f1a9c8edb91e43b35793645c901e
Author: Petr Rockai <prockai at redhat.com>
AuthorDate: Thu Oct 11 22:42:20 2012 +0200
Committer: Petr Rockai <prockai at redhat.com>
CommitterDate: Thu Oct 11 22:42:20 2012 +0200
lvmdump: Add -l, to collect a state dump from lvmetad.
---
scripts/lvmdump.sh | 23 ++++++++++++++++++++++-
1 files changed, 22 insertions(+), 1 deletions(-)
diff --git a/scripts/lvmdump.sh b/scripts/lvmdump.sh
index 5901892..641d109 100755
--- a/scripts/lvmdump.sh
+++ b/scripts/lvmdump.sh
@@ -33,11 +33,14 @@ BASENAME=basename
UDEVADM=udevadm
UNAME=uname
TR=tr
+SOCAT=socat # either socat or nc is needed for dumping lvmetad state
+NC=nc
# user may override lvm and dmsetup location by setting LVM_BINARY
# and DMSETUP_BINARY respectively
LVM=${LVM_BINARY-lvm}
DMSETUP=${DMSETUP_BINARY-dmsetup}
+LVMETAD_SOCKET=${LVM_LVMETAD_SOCKET-/var/run/lvm/lvmetad.socket}
die() {
code=$1; shift
@@ -57,6 +60,7 @@ function usage {
echo " -d <directory> dump into a directory instead of tarball"
echo " -c if running clvmd, gather cluster data as well"
echo " -u gather udev info and context"
+ echo " -l gather lvmetad state if running"
echo ""
exit 1
@@ -66,7 +70,7 @@ advanced=0
clustered=0
metadata=0
udev=0
-while getopts :acd:hmu opt; do
+while getopts :acd:hmul opt; do
case $opt in
s) sysreport=1 ;;
a) advanced=1 ;;
@@ -75,6 +79,7 @@ while getopts :acd:hmu opt; do
h) usage ;;
m) metadata=1 ;;
u) udev=1 ;;
+ l) lvmetad=1 ;;
:) echo "$0: $OPTARG requires a value:"; usage ;;
\?) echo "$0: unknown option $OPTARG"; usage ;;
*) usage ;;
@@ -240,6 +245,22 @@ if (( $udev )); then
log "$CP -aR /lib/udev/rules.d \"$udev_dir/rules_lib\" 2>> \"$log\""
fi
+if (( $lvmetad )); then
+ (echo 'request="dump"'; echo '##') | {
+ if type -p $SOCAT >& /dev/null; then
+ echo "$SOCAT unix-connect:$LVMETAD_SOCKET -" >> "$log"
+ $SOCAT "unix-connect:$LVMETAD_SOCKET" - 2>> "$log"
+ elif echo | $NC -U "$LVMETAD_SOCKET"; then
+ echo "$NC -U $LVMETAD_SOCKET" >> "$log"
+ $NC -U "$LVMETAD_SOCKET" 2>> "$log"
+ else
+ myecho "WARNING: Neither socat nor nc -U seems to be available." 1>&2
+ echo "# DUMP FAILED"
+ return 1
+ fi
+ } > "$dir/lvmetad.txt"
+fi
+
if test -z "$userdir"; then
lvm_dump="$dirbase.tgz"
myecho "Creating report tarball in $HOME/$lvm_dump..."
More information about the lvm-devel
mailing list