In some cases you want to fix a certain directory while you don't really
care whether there are other VMs running. Add a option to disable the
check.
Signed-off-by: Peter Krempa <pkrempa(a)redhat.com>
---
tools/libvirt_recover_xattrs.sh | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)
diff --git a/tools/libvirt_recover_xattrs.sh b/tools/libvirt_recover_xattrs.sh
index b7a8c05cf4..bb5f23cff0 100755
--- a/tools/libvirt_recover_xattrs.sh
+++ b/tools/libvirt_recover_xattrs.sh
@@ -7,7 +7,7 @@ function die {
function show_help {
cat << EOF
-Usage: ${0##*/} -[hqn] [PATH]
+Usage: ${0##*/} -[hqnu] [PATH]
Clear out any XATTRs set by libvirt on all files that have them.
The idea is to reset refcounting, should it break.
@@ -15,6 +15,7 @@ The idea is to reset refcounting, should it break.
-h display this help and exit
-q quiet (don't print which files are being fixed)
-n dry run; don't remove any XATTR just report the file name
+ -u unsafe; don't check whether there are running VMs; PATH must be specified
PATH can be specified to refine search to only to given path
instead of whole root ('/'), which is the default.
@@ -23,6 +24,7 @@ EOF
QUIET=0
DRY_RUN=0
+UNSAFE=0
DIR="/"
# So far only qemu and lxc drivers use security driver.
@@ -33,7 +35,7 @@ if [ $(whoami) != "root" ]; then
die "Must be run as root"
fi
-while getopts hqn opt; do
+while getopts hqnu opt; do
case $opt in
h)
show_help
@@ -45,6 +47,9 @@ while getopts hqn opt; do
n)
DRY_RUN=1
;;
+ u)
+ UNSAFE=1
+ ;;
*)
show_help >&2
exit 1
@@ -55,6 +60,10 @@ done
shift $((OPTIND - 1))
if [ $# -gt 0 ]; then
DIR=$1
+else
+ if [ ${UNSAFE} -eq 1 ]; then
+ die "Unsafe mode (-u) requires explicit 'PATH' argument"
+ fi
fi
case $(uname -s) in
@@ -72,7 +81,7 @@ case $(uname -s) in
esac
-if [ ${DRY_RUN} -eq 0 ]; then
+if [ ${DRY_RUN} -eq 0 ] && [ ${UNSAFE} -eq 0 ]; then
for u in ${URI[*]} ; do
if [ -n "`virsh -q -c $u list 2>/dev/null`" ]; then
die "There are still some domains running for $u"
--
2.28.0