blob: 7db5edd5d20d9ee2fd05fda0d093030f060e1a13 (
plain)
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
|
#!/bin/bash
# This script adds contributions of files/directories in backend to volume
# size.
# It can also be used to debug by passing dir as first argument, in which case
# it will just add contributions from immediate children of a directory and
# displays only if added contributions from immediate children is different
# from size stored in directory.
# For Eg., find <backend-directory> -type d -exec ./contri-add.sh dir \{} \;
# will list all the directories which have descrepancies in their
# size/contributions.
usage ()
{
echo >&2 "usage: $0 <file|dir> <list-of-backend-directories>"
}
add_contributions ()
{
local var=0
local count=0
SIZE=`getfattr -h -e hex -n trusted.glusterfs.quota.size $2 2>&1 | sed -e '/^#/d' | sed -e '/^getfattr/d' | sed -e '/^$/d' | cut -d'=' -f 2`
CONTRI=`getfattr -h -e hex -d -m trusted.glusterfs.quota.*.contri $2 2>&1 | sed -e '/^#/d' | sed -e '/^getfattr/d' | sed -e '/^$/d' | cut -d'=' -f 2`
if [ $1 == "file" ]; then
PATHS=`find $2 ! -type d | sed -e "\|^$2$|d" | sed -e '/^[ \t]*$/d'`
else
PATHS=`find $2 -maxdepth 1 | sed -e "\|^$2$|d" | sed -e '/^[ \t]*$/d'`
fi
if [ -z "$PATHS" ]; then
return 0
fi
CONTRIBUTIONS=`echo $PATHS | xargs getfattr -h -e hex -d -m trusted.glusterfs.quota.*.contri 2>&1 | sed -e '/^#/d' | sed -e '/^getfattr/d' | sed -e '/^$/d' | cut -d'=' -f 2 | sed -e 's/^[ \t]*\([^ \t]*\)/\1/g'`
if [ -n "$CONTRIBUTIONS" ]; then
for i in $CONTRIBUTIONS; do
count=$(($count + 1))
var=$(($var + $i))
done
fi
if [ $1 == "file" ] || [ $var -ne $(($SIZE)) ] || [ $(($SIZE)) -ne $(($CONTRI)) ]; then
if [ $1 == "dir" ]; then
TMP_PATH=`echo $2 | sed -e "s/\/home\/export\/[0-9]*/\/mnt\/raghu/g"`
stat $TMP_PATH > /dev/null
fi
echo "file count $count"
echo "added contribution of $2=$var"
echo "size stored in xattrs on $2=$(($SIZE))"
echo "contribution of $2 to its parent directory=$(($CONTRI))"
echo "=============================================================="
fi
}
main ()
{
[ $# -lt 1 ] && usage
TYPE=$1
shift 1
for i in $@; do
add_contributions $TYPE $i
done
}
main $@
|