fs_mgr: overlayfs test fix adb_sh

Some commands like 'adb_sh grep " rw," /proc/mounts' do not preserve
the embedded spaces when transferred to the device and thus do not
entirely behave as expected.  There are several commands issued this
way throughout the test that are similarly broken.  To add
consistency, pass any arguments that are not explicitly (double)
quoted and contain embedded spaces as quoted to preserve.

Also devices that report the kernel internal device /dev/root in
/proc/mounts should be suppressed when investigating whether
overlayfs is needed.  If /dev/root is reported, then we should assume
that the mount point / represents it for the following df command
when trying to determine if the partition is right-sized.

When there is only one device attached, and a serial number is not
specified, correctly determine this condition to progress to
the testing.

Test: adb_remount_test.sh
Bug: 122231184
Change-Id: I913e297dd272d6691110bb5d7a7c7f54321b6833
This commit is contained in:
Mark Salyzyn 2019-01-02 10:09:42 -08:00
parent 789d905b50
commit b3c0074917

View file

@ -49,7 +49,7 @@ inFastboot() {
Returns: true if device is in adb mode" ]
inAdb() {
adb devices |
grep -v 'List of devices attached' |
grep -v -e 'List of devices attached' -e '^$' |
if [ -n "${ANDROID_SERIAL}" ]; then
grep "^${ANDROID_SERIAL}[${SPACE}${TAB}]" > /dev/null
else
@ -61,7 +61,17 @@ inAdb() {
Returns: true if the command succeeded" ]
adb_sh() {
adb shell "${@}"
args=
for i in ${@}; do
if [ X"${i}" != X"${i#\'}" ]; then
args="${args} ${i}"
elif [ X"${i}" != X"${i#* }" ]; then
args="${args} '${i}'"
else
args="${args} ${i}"
fi
done
adb shell ${args}
}
[ "USAGE: adb_date >/dev/stdout
@ -92,7 +102,7 @@ get_property() {
Returns: true if device is (likely) a debug build" ]
isDebuggable() {
if inAdb && [ 1 -ne "`get_property ro.debuggable`" ]; then
if inAdb && [ 1 != "`get_property ro.debuggable`" ]; then
false
fi
}
@ -363,8 +373,12 @@ D=`adb_sh df -k </dev/null` &&
echo "${GREEN}[ OK ]${NORMAL} no overlay present before setup" >&2
overlayfs_needed=true
D=`adb_sh cat /proc/mounts </dev/null |
skip_administrative_mounts data |
cut -s -d' ' -f1`
skip_administrative_mounts data`
if echo "${D}" | grep /dev/root >/dev/null; then
D=`echo / /
echo "${D}" | grep -v /dev/root`
fi
D=`echo "${D}" | cut -s -d' ' -f1`
D=`adb_sh df -k ${D} </dev/null`
echo "${D}"
if [ X"${D}" = X"${D##* 100[%] }" ]; then