Revision 829083b9
Added by Brad Davis almost 3 years ago
src/usr/local/sbin/ufslabels.sh | ||
---|---|---|
27 | 27 |
return |
28 | 28 |
fi |
29 | 29 |
|
30 |
ID_PARTS=$(/sbin/dumpfs /dev/${_dev} | \
|
|
30 |
ID_PARTS=$(/sbin/dumpfs "/dev/${_dev}" | \
|
|
31 | 31 |
/usr/bin/head -n 2 | \ |
32 | 32 |
/usr/bin/tail -n 1 | \ |
33 | 33 |
/usr/bin/cut -f2 -d'[' | \ |
34 | 34 |
/usr/bin/cut -f1 -d ']') |
35 | 35 |
# " 51110eb0 f288b35d " (note it has more spaces than we need/want) |
36 |
ID_PART1=$(echo ${ID_PARTS} | /usr/bin/awk '{print $1}')
|
|
36 |
ID_PART1=$(echo "${ID_PARTS}" | /usr/bin/awk '{print $1}')
|
|
37 | 37 |
# "51110eb0" |
38 |
ID_PART2=$(echo ${ID_PARTS} | /usr/bin/awk '{print $2}')
|
|
38 |
ID_PART2=$(echo "${ID_PARTS}" | /usr/bin/awk '{print $2}')
|
|
39 | 39 |
# "f288b35d" |
40 | 40 |
|
41 | 41 |
if [ -z "${ID_PART1}" ] || [ -z "${ID_PART2}" ]; then |
... | ... | |
45 | 45 |
|
46 | 46 |
# Safety check to avoid https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=156908 |
47 | 47 |
string_length "${ID_PART1}" |
48 |
if [ ${LEN} -ne 8 ]; then
|
|
48 |
if [ "${LEN}" -ne 8 ]; then
|
|
49 | 49 |
ID_PART1=$(printf "%08s" "${ID_PART1}") |
50 | 50 |
fi |
51 | 51 |
string_length "${ID_PART2}" |
52 |
if [ ${LEN} -ne 8 ]; then
|
|
52 |
if [ "${LEN}" -ne 8 ]; then
|
|
53 | 53 |
ID_PART2=$(printf "%08s" "${ID_PART2}") |
54 | 54 |
fi |
55 | 55 |
UFSID="${ID_PART1}${ID_PART2}" |
... | ... | |
57 | 57 |
|
58 | 58 |
find_fs_device() { |
59 | 59 |
unset DEV |
60 |
DEV=$(/usr/bin/grep -e "[[:blank:]]*${1}[[:blank:]]" ${FSTAB} | /usr/bin/awk '{print $1}')
|
|
60 |
DEV=$(/usr/bin/grep -e "[[:blank:]]*${1}[[:blank:]]" "${FSTAB}" | /usr/bin/awk '{print $1}')
|
|
61 | 61 |
DEV=${DEV##/dev/} |
62 | 62 |
} |
63 | 63 |
|
64 |
FSTAB=${DESTDIR}/etc/fstab
|
|
64 |
FSTAB="${DESTDIR}/etc/fstab"
|
|
65 | 65 |
unset NEED_CHANGES |
66 |
cp ${FSTAB} ${FSTAB}.tmp
|
|
66 |
cp "${FSTAB}" "${FSTAB}.tmp"
|
|
67 | 67 |
|
68 |
ALL_FILESYSTEMS=$(/usr/bin/awk '/ufs/ && !(/dev\/mirror\// || /dev\/ufsid\// || /dev\/label\// || /dev\/geom\//) {print $2}' ${DESTDIR}/etc/fstab)
|
|
68 |
ALL_FILESYSTEMS=$(/usr/bin/awk '/ufs/ && !(/dev\/mirror\// || /dev\/ufsid\// || /dev\/label\// || /dev\/geom\//) {print $2}' "${DESTDIR}/etc/fstab")
|
|
69 | 69 |
|
70 | 70 |
for FS in ${ALL_FILESYSTEMS} |
71 | 71 |
do |
72 | 72 |
find_fs_device "${FS}" |
73 | 73 |
if [ "${DEV}" != "" ]; then |
74 |
get_ufsid ${DEV}
|
|
74 |
get_ufsid "${DEV}"
|
|
75 | 75 |
string_length "${UFSID}" |
76 |
if [ ${LEN} -ne 16 ]; then
|
|
76 |
if [ "${LEN}" -ne 16 ]; then
|
|
77 | 77 |
echo "Invalid UFS ID for FS ${FS} ($UFSID), skipping" |
78 | 78 |
else |
79 |
/usr/bin/sed -i '' -e "s/${DEV}/ufsid\/${UFSID}/g" ${FSTAB}.tmp
|
|
79 |
/usr/bin/sed -i '' -e "s/${DEV}/ufsid\/${UFSID}/g" "${FSTAB}.tmp"
|
|
80 | 80 |
NEED_CHANGES=1 |
81 | 81 |
fi |
82 | 82 |
else |
... | ... | |
86 | 86 |
echo "FS: ${FS} on device ${DEV} with ufsid ${UFSID}" |
87 | 87 |
done |
88 | 88 |
|
89 |
ALL_SWAPFS=$(/usr/bin/awk '/swap/ && !(/dev\/mirror\// || /dev\/ufsid\// || /dev\/label\// || /dev\/geom\//) {print $1}' ${DESTDIR}/etc/fstab)
|
|
89 |
ALL_SWAPFS=$(/usr/bin/awk '/swap/ && !(/dev\/mirror\// || /dev\/ufsid\// || /dev\/label\// || /dev\/geom\//) {print $1}' "${DESTDIR}/etc/fstab")
|
|
90 | 90 |
SWAPNUM=0 |
91 | 91 |
for SFS in ${ALL_SWAPFS} |
92 | 92 |
do |
... | ... | |
95 | 95 |
SWAPDEV=${DEV} |
96 | 96 |
echo "FS: Swap slice ${SWAPNUM} on device ${SWAPDEV}" |
97 | 97 |
if [ "${SWAPDEV}" != "" ]; then |
98 |
/usr/bin/sed -i '' -e "s/${SWAPDEV}/label\/swap${SWAPNUM}/g" ${FSTAB}.tmp
|
|
98 |
/usr/bin/sed -i '' -e "s/${SWAPDEV}/label\/swap${SWAPNUM}/g" "${FSTAB}.tmp"
|
|
99 | 99 |
NEED_CHANGES=1 |
100 | 100 |
fi |
101 | 101 |
SWAPNUM=$((SWAPNUM+1)) |
... | ... | |
109 | 109 |
|
110 | 110 |
echo "====================" |
111 | 111 |
echo "Current fstab:" |
112 |
cat ${FSTAB}
|
|
112 |
cat "${FSTAB}"
|
|
113 | 113 |
echo "====================" |
114 | 114 |
echo "New fstab:" |
115 |
cat ${FSTAB}.tmp
|
|
115 |
cat "${FSTAB}.tmp"
|
|
116 | 116 |
|
117 | 117 |
if [ "${1}" = "commit" ]; then |
118 | 118 |
COMMIT=y |
... | ... | |
133 | 133 |
SWAPDEV=${DEV} |
134 | 134 |
if [ -n "${SWAPDEV}" ]; then |
135 | 135 |
echo "Disabling swap ${SWAPDEV} to apply label" |
136 |
/sbin/swapoff /dev/${SWAPDEV}
|
|
137 |
/sbin/glabel label swap${SWAPNUM} /dev/${SWAPDEV}
|
|
136 |
/sbin/swapoff "/dev/${SWAPDEV}"
|
|
137 |
/sbin/glabel label "swap${SWAPNUM}" "/dev/${SWAPDEV}"
|
|
138 | 138 |
fi |
139 | 139 |
SWAPNUM=$((SWAPNUM+1)) |
140 | 140 |
fi |
141 | 141 |
done |
142 | 142 |
|
143 | 143 |
echo "Activating new fstab" |
144 |
/bin/mv -f ${FSTAB} ${FSTAB}.old
|
|
145 |
/bin/mv -f ${FSTAB}.tmp ${FSTAB}
|
|
144 |
/bin/mv -f "${FSTAB}" "${FSTAB}.old"
|
|
145 |
/bin/mv -f "${FSTAB}.tmp" "${FSTAB}"
|
|
146 | 146 |
|
147 | 147 |
echo "Re-enabling swap" |
148 | 148 |
/sbin/swapon -a 2>/dev/null >/dev/null |
Also available in: Unified diff
Add quotes around variable usage to prevent word splitting