File: xfs_admin.sh

package info (click to toggle)
xfsprogs 6.17.0-2
  • links: PTS
  • area: main
  • in suites: forky, sid
  • size: 11,324 kB
  • sloc: ansic: 167,334; sh: 4,604; makefile: 1,336; python: 835; cpp: 5
file content (108 lines) | stat: -rwxr-xr-x 2,232 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#!/bin/sh -f
# SPDX-License-Identifier: GPL-2.0
#
# Copyright (c) 2000-2001 Silicon Graphics, Inc.  All Rights Reserved.
#

status=0
require_offline=""
require_online=""
DB_OPTS=""
DB_DEV_OPTS=""
REPAIR_OPTS=""
IO_OPTS=""
REPAIR_DEV_OPTS=""
LOG_OPTS=""
USAGE="Usage: xfs_admin [-efjlpuV] [-c 0|1] [-L label] [-O v5_feature] [-r rtdev] [-U uuid] device [logdev]"

while getopts "c:efjlL:O:pr:uU:V" c
do
	case $c in
	c)	REPAIR_OPTS=$REPAIR_OPTS" -c lazycount="$OPTARG
		require_offline=1
		;;
	e)	DB_OPTS=$DB_OPTS" -c 'version extflg'"
		require_offline=1
		;;
	f)	DB_OPTS=$DB_OPTS" -f"
		require_offline=1
		;;
	j)	DB_OPTS=$DB_OPTS" -c 'version log2'"
		require_offline=1
		;;
	l)	DB_OPTS=$DB_OPTS" -r -c label"
		IO_OPTS=$IO_OPTS" -r -c label"
		;;
	L)	DB_OPTS=$DB_OPTS" -c 'label "$OPTARG"'"
		IO_OPTS=$IO_OPTS" -c 'label -s "$OPTARG"'"
		;;
	O)	REPAIR_OPTS=$REPAIR_OPTS" -c $OPTARG"
		require_offline=1
		;;
	p)	DB_OPTS=$DB_OPTS" -c 'version projid32bit'"
		require_offline=1
		;;
	r)	REPAIR_DEV_OPTS=" -r '$OPTARG'"
		DB_DEV_OPTS=" -R '$OPTARG'"
		require_offline=1
		;;
	u)	DB_OPTS=$DB_OPTS" -r -c uuid"
		IO_OPTS=$IO_OPTS" -r -c fsuuid"
		;;
	U)	DB_OPTS=$DB_OPTS" -c 'uuid "$OPTARG"'"
		require_offline=1
		;;
	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|2)
		if mntpt="$(findmnt -t xfs -f -n -o TARGET "$1" 2>/dev/null)"; then
			# filesystem is mounted
			if [ -n "$require_offline" ]; then
				echo "$1: filesystem is mounted."
				exit 2
			fi

			if [ -n "$IO_OPTS" ]; then
				eval xfs_io -p xfs_admin $IO_OPTS "$mntpt"
				exit $?
			fi
		fi

		# filesystem is not mounted
		if [ -n "$require_online" ]; then
			echo "$1: filesystem is not mounted"
			exit 2
		fi

		# Pick up the log device, if present
		if [ -n "$2" ]; then
			LOG_OPTS=" -l '$2'"
		fi

		if [ -n "$DB_OPTS" ]
		then
			eval xfs_db -x -p xfs_admin $LOG_OPTS $DB_DEV_OPTS $DB_OPTS "$1"
			status=$?
		fi
		if [ -n "$REPAIR_OPTS" ]
		then
			echo "Running xfs_repair to upgrade filesystem."
			eval xfs_repair $LOG_OPTS $REPAIR_DEV_OPTS $REPAIR_OPTS "$1"
			status=`expr $? + $status`
		fi
		;;
	*)	echo $USAGE 1>&2
		exit 2
		;;
esac
exit $status