recovery: Workaround to enable update via sdcard on UFS devices.

The recovery code relies on the recovery.fstab file to locate the
block dev that represents the external sdcard. The dev path is
differrent for UFS and EMMC devices but we can only have a single
entry for both in the fstab.

Since our build is required to support both UFS and EMMC devices
from the same binaries we make this change where recovery when it
sees a request for a update from a sdcard, checks if it is running
on a UFS based target and then does the mount on the correct device.

This is a temporary needed only on builds where we need to support
both UFS and EMMC devices. In practice only one of these will be
present on a device and the recovery.fstab can be updated accordingly.

Change-Id: I28aa99c69c31aa4cfe01bf6854de78b170d75bdb
2 files changed
tree: 3c0dbf4a814ba117c35164bfa1f5adb4d181d180
  1. applypatch/
  2. edify/
  3. etc/
  4. fonts/
  5. minadbd/
  6. minui/
  7. minzip/
  8. mtdutils/
  9. otafault/
  10. res-hdpi/
  11. res-mdpi/
  12. res-xhdpi/
  13. res-xxhdpi/
  14. res-xxxhdpi/
  15. tests/
  16. tools/
  17. uncrypt/
  18. update_verifier/
  19. updater/
  20. adb_install.cpp
  21. adb_install.h
  22. Android.mk
  23. asn1_decoder.cpp
  24. asn1_decoder.h
  25. bootloader.cpp
  26. bootloader.h
  27. CleanSpec.mk
  28. common.h
  29. default_device.cpp
  30. device.cpp
  31. device.h
  32. error_code.h
  33. fuse_sdcard_provider.cpp
  34. fuse_sdcard_provider.h
  35. fuse_sideload.cpp
  36. fuse_sideload.h
  37. install.cpp
  38. install.h
  39. interlace-frames.py
  40. NOTICE
  41. print_sha1.h
  42. README.md
  43. recovery-persist.cpp
  44. recovery-persist.rc
  45. recovery-refresh.cpp
  46. recovery-refresh.rc
  47. recovery.cpp
  48. roots.cpp
  49. roots.h
  50. screen_ui.cpp
  51. screen_ui.h
  52. ui.cpp
  53. ui.h
  54. unique_fd.h
  55. verifier.cpp
  56. verifier.h
  57. wear_touch.cpp
  58. wear_touch.h
  59. wear_ui.cpp
  60. wear_ui.h
README.md

The Recovery Image

Quick turn-around testing

mm -j && m ramdisk-nodeps && m recoveryimage-nodeps

# To boot into the new recovery image
# without flashing the recovery partition:
adb reboot bootloader
fastboot boot $ANDROID_PRODUCT_OUT/recovery.img

Running the tests

# After setting up environment and lunch.
mmma -j bootable/recovery

# Running the tests on device.
adb root
adb sync data

# 32-bit device
adb shell /data/nativetest/recovery_unit_test/recovery_unit_test
adb shell /data/nativetest/recovery_component_test/recovery_component_test

# Or 64-bit device
adb shell /data/nativetest64/recovery_unit_test/recovery_unit_test
adb shell /data/nativetest64/recovery_component_test/recovery_component_test