blob: 305ef2b7da635cb7b8a66e69c948d54bc5212faa [file] [log] [blame]
#!/bin/sh -f
# SPDX-License-Identifier: GPL-2.0
#
# Copyright (c) 2000-2001 Silicon Graphics, Inc. All Rights Reserved.
#
status=0
DB_OPTS=""
REPAIR_OPTS=""
USAGE="Usage: xfs_admin [-efjlpuV] [-c 0|1] [-L label] [-U uuid] device"
while getopts "efjlpuc:L:U:V" c
do
case $c in
c) REPAIR_OPTS=$REPAIR_OPTS" -c lazycount="$OPTARG;;
e) DB_OPTS=$DB_OPTS" -c 'version extflg'";;
f) DB_OPTS=$DB_OPTS" -f";;
j) DB_OPTS=$DB_OPTS" -c 'version log2'";;
l) DB_OPTS=$DB_OPTS" -r -c label";;
L) DB_OPTS=$DB_OPTS" -c 'label "$OPTARG"'";;
p) DB_OPTS=$DB_OPTS" -c 'version projid32bit'";;
u) DB_OPTS=$DB_OPTS" -r -c uuid";;
U) DB_OPTS=$DB_OPTS" -c 'uuid "$OPTARG"'";;
V) xfs_db -p xfs_admin -V
status=$?
exit $status
;;
\?) echo $USAGE 1>&2
exit 2
;;
esac
done
set -- extra $@
shift $OPTIND
case $# in
1) if [ -n "$DB_OPTS" ]
then
eval xfs_db -x -p xfs_admin $DB_OPTS $1
status=$?
fi
if [ -n "$REPAIR_OPTS" ]
then
# Hide normal repair output which is sent to stderr
# assuming the filesystem is fine when a user is
# running xfs_admin.
# Ideally, we need to improve the output behaviour
# of repair for this purpose (say a "quiet" mode).
eval xfs_repair $REPAIR_OPTS $1 2> /dev/null
status=`expr $? + $status`
if [ $status -ne 0 ]
then
echo "Conversion failed, is the filesystem unmounted?"
fi
fi
;;
*) echo $USAGE 1>&2
exit 2
;;
esac
exit $status