fs_mgr: overlayfs: test issues with single super device
Cleanup test issues with single super device. Indicate mount point instead of partitions as that can lead to confusion when referencing the partition when there is none. For example root (/) partition uses overlay on /system. Resolve a script syntax error when there are no devices. Fix script logic surrounding detection of overlayfs takeover and handling of reboot device request from adb disable-verity. In README.overlayfs.md discuss BOARD_<partitiion>IMAGE_PARTITION_RESERVED_SIZE and its negative impact on right sizing. Soften README.overlayfs.md wording with respect to update_engine to match changes in handling. Test: adb-remount-test.sh Bug: 120536582 Bug: 109821005 Change-Id: Iad7e19a436322ff9c3bdc597f4545028be112ff5
This commit is contained in:
parent
17d41711c6
commit
38a17f0d76
|
@ -83,18 +83,19 @@ Caveats
|
|||
-------
|
||||
|
||||
- Space used in the backing storage is on a file by file basis
|
||||
and will require more space than if updated in place.
|
||||
and will require more space than if updated in place. As such
|
||||
it is important to be mindful of any wasted space, for instance
|
||||
**BOARD_<partition>IMAGE_PARTITION_RESERVED_SIZE** being defined
|
||||
will have a negative impact on the overall right-sizing of images
|
||||
and thus free dynamic partition space.
|
||||
- Kernel must have CONFIG_OVERLAY_FS=y and will need to be patched
|
||||
with "*overlayfs: override_creds=off option bypass creator_cred*"
|
||||
if higher than 4.6.
|
||||
- *adb enable-verity* will free up overlayfs and as a bonus the
|
||||
device will be reverted pristine to before any content was updated.
|
||||
Update engine does not take advantage of this, will perform a full OTA.
|
||||
- Update engine will not run if *fs_mgr_overlayfs_is_setup*() reports
|
||||
true as adb remount overrides are incompatable with an OTA for
|
||||
multiple reasons.
|
||||
NB: This is not a problem for fastbootd or recovery as overrides are
|
||||
disabled for those special boot scenarios.
|
||||
- Update engine may not run if *fs_mgr_overlayfs_is_setup*() reports
|
||||
true as adb remount overrides are incompatable with an OTA resources.
|
||||
- For implementation simplicity on retrofit dynamic partition devices,
|
||||
take the whole alternate super (eg: if "*a*" slot, then the whole of
|
||||
"*system_b*").
|
||||
|
|
|
@ -92,7 +92,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 -ne "`get_property ro.debuggable`" ]; then
|
||||
false
|
||||
fi
|
||||
}
|
||||
|
@ -389,16 +389,16 @@ if [ ${err} != 0 ]; then
|
|||
die -t "${T}" "disable-verity"
|
||||
fi
|
||||
rebooted=false
|
||||
if [ X"${D}" != X"${H}" -a X"${D}" = X"${D##*using overlayfs}" ]; then
|
||||
if [ X"${D}" != X"${H}" ]; then
|
||||
echo "${H}"
|
||||
if [ X"${D}" != X"${D##*setup failed}" ]; then
|
||||
echo "${ORANGE}[ WARNING ]${NORMAL} overlayfs setup whined" >&2
|
||||
fi
|
||||
D=`adb_sh df -k </dev/null` &&
|
||||
H=`echo "${D}" | head -1` &&
|
||||
D=`echo "${D}" | grep "^overlay "` &&
|
||||
[ -n "${D}" ] &&
|
||||
( echo "${H}" && echo "${D}" ) &&
|
||||
D=`echo "${D}" | grep "^overlay " || true` &&
|
||||
[ -z "${D}" ] ||
|
||||
( echo "${H}" && echo "${D}" && false ) ||
|
||||
die -t ${T} "overlay takeover unexpected at this phase"
|
||||
echo "${GREEN}[ INFO ]${NORMAL} rebooting as requested" >&2
|
||||
L=`adb_logcat -b all -v nsec -t ${T} 2>&1`
|
||||
|
@ -426,12 +426,12 @@ if ${overlayfs_supported} && ${overlayfs_needed} && [ X"${D}" != X"${D##*setup f
|
|||
die -t "${T}" "setup for overlay"
|
||||
fi
|
||||
if [ X"${D}" != X"${D##*Successfully disabled verity}" ]; then
|
||||
echo "${D}"
|
||||
echo "${H}"
|
||||
D=`adb_sh df -k </dev/null` &&
|
||||
H=`echo "${D}" | head -1` &&
|
||||
D=`echo "${D}" | grep "^overlay " | true` &&
|
||||
[ -n "${D}" ] &&
|
||||
( echo "${H}" && echo "${D}" ) &&
|
||||
D=`echo "${D}" | grep "^overlay " || true` &&
|
||||
[ -z "${D}" ] ||
|
||||
( echo "${H}" && echo "${D}" && false ) ||
|
||||
( [ -n "${L}" ] && echo "${L}" && false ) ||
|
||||
die -t "${T}" "overlay takeover unexpected"
|
||||
[ -n "${L}" ] && echo "${L}"
|
||||
|
@ -504,17 +504,17 @@ fi
|
|||
|
||||
# Check something
|
||||
|
||||
echo "${GREEN}[ RUN ]${NORMAL} push content to system and vendor" >&2
|
||||
echo "${GREEN}[ RUN ]${NORMAL} push content to /system and /vendor" >&2
|
||||
|
||||
A="Hello World! $(date)"
|
||||
echo "${A}" | adb_sh "cat - > /system/hello"
|
||||
echo "${A}" | adb_sh "cat - > /vendor/hello"
|
||||
B="`adb_cat /system/hello`" ||
|
||||
die "sytem hello"
|
||||
check_eq "${A}" "${B}" system before reboot
|
||||
check_eq "${A}" "${B}" /system before reboot
|
||||
B="`adb_cat /vendor/hello`" ||
|
||||
die "vendor hello"
|
||||
check_eq "${A}" "${B}" vendor before reboot
|
||||
check_eq "${A}" "${B}" /vendor before reboot
|
||||
|
||||
echo "${GREEN}[ RUN ]${NORMAL} reboot to confirm content persistent" >&2
|
||||
|
||||
|
@ -537,18 +537,21 @@ if ${overlayfs_needed}; then
|
|||
fi
|
||||
|
||||
B="`adb_cat /system/hello`" ||
|
||||
die "re-read system hello after reboot"
|
||||
check_eq "${A}" "${B}" system after reboot
|
||||
die "re-read /system/hello after reboot"
|
||||
check_eq "${A}" "${B}" /system after reboot
|
||||
echo "${GREEN}[ OK ]${NORMAL} /system content remains after reboot" >&2
|
||||
# Only root can read vendor if sepolicy permissions are as expected
|
||||
if ${enforcing}; then
|
||||
B="`adb_cat /vendor/hello`" &&
|
||||
die "re-read vendor hello after reboot w/o root"
|
||||
die "re-read /vendor/hello after reboot w/o root"
|
||||
check_eq "cat: /vendor/hello: Permission denied" "${B}" vendor after reboot w/o root
|
||||
echo "${GREEN}[ OK ]${NORMAL} /vendor content correct MAC after reboot" >&2
|
||||
fi
|
||||
adb_root &&
|
||||
B="`adb_cat /vendor/hello`" ||
|
||||
die "re-read vendor hello after reboot"
|
||||
die "re-read /vendor/hello after reboot"
|
||||
check_eq "${A}" "${B}" vendor after reboot
|
||||
echo "${GREEN}[ OK ]${NORMAL} /vendor content remains after reboot" >&2
|
||||
|
||||
echo "${GREEN}[ RUN ]${NORMAL} flash vendor, confirm its content disappears" >&2
|
||||
|
||||
|
@ -608,17 +611,17 @@ else
|
|||
echo "${H}" &&
|
||||
echo "${D}" &&
|
||||
echo "${D}" | grep "^overlay .* /system\$" >/dev/null ||
|
||||
die "overlay system takeover after flash vendor"
|
||||
die "overlay /system takeover after flash vendor"
|
||||
echo "${D}" | grep "^overlay .* /vendor\$" >/dev/null &&
|
||||
die "overlay minus vendor takeover after flash vendor"
|
||||
die "overlay supposed to be minus /vendor takeover after flash vendor"
|
||||
fi
|
||||
B="`adb_cat /system/hello`" ||
|
||||
die "re-read system hello after flash vendor"
|
||||
die "re-read /system/hello after flash vendor"
|
||||
check_eq "${A}" "${B}" system after flash vendor
|
||||
adb_root ||
|
||||
die "adb root"
|
||||
B="`adb_cat /vendor/hello`" &&
|
||||
die "re-read vendor hello after flash vendor"
|
||||
die "re-read /vendor/hello after flash vendor"
|
||||
check_eq "cat: /vendor/hello: No such file or directory" "${B}" vendor after flash vendor
|
||||
fi
|
||||
|
||||
|
@ -630,10 +633,10 @@ adb remount &&
|
|||
adb_sh rm /system/hello </dev/null ||
|
||||
die -t ${T} "cleanup hello"
|
||||
B="`adb_cat /system/hello`" &&
|
||||
die "re-read system hello after rm"
|
||||
die "re-read /system/hello after rm"
|
||||
check_eq "cat: /system/hello: No such file or directory" "${B}" after flash rm
|
||||
B="`adb_cat /vendor/hello`" &&
|
||||
die "re-read vendor hello after rm"
|
||||
die "re-read /vendor/hello after rm"
|
||||
check_eq "cat: /vendor/hello: No such file or directory" "${B}" after flash rm
|
||||
|
||||
if [ -n "${scratch_partition}" ]; then
|
||||
|
|
Loading…
Reference in New Issue