| #!/bin/sh -f |
| # |
| # 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 |