prebuilt: backuptool: Implement dynamic system mount for A-only

* Dynamically mount system to the path chosen by the recovery through backuptool
* This can be helpful because of the fragmentation that will happen with system mount in recovery after Q

Change-Id: I2d1e775efcf87e33319bc7790d1e54bca72116d3
gugelfrei
Davide Garberi 5 years ago committed by Bruno Martins
parent ed9b10f172
commit e40c31887d

@ -4,7 +4,8 @@
# #
export C=/tmp/backupdir export C=/tmp/backupdir
export S=$2 export SYSDEV="$(readlink -nf "$2")"
export SYSFS="$3"
export V=17.1 export V=17.1
export ADDOND_VERSION=1 export ADDOND_VERSION=1
@ -94,11 +95,39 @@ if [ -d /tmp/addon.d/ ]; then
fi fi
} }
determine_system_mount() {
if grep -q -e"^$SYSDEV" /proc/mounts; then
umount $(grep -e"^$SYSDEV" /proc/mounts | cut -d" " -f2)
fi
if [ -d /mnt/system ]; then
SYSMOUNT="/mnt/system"
elif [ -d /system_root ]; then
SYSMOUNT="/system_root"
else
SYSMOUNT="/system"
fi
export S=$SYSMOUNT/system
}
mount_system() {
mount -t $SYSFS $SYSDEV $SYSMOUNT -o rw,discard
}
unmount_system() {
umount $SYSMOUNT
}
determine_system_mount
case "$1" in case "$1" in
backup) backup)
mount_system
mkdir -p $C mkdir -p $C
if check_prereq; then if check_prereq; then
if check_whitelist system; then if check_whitelist system; then
unmount_system
exit 127 exit 127
fi fi
fi fi
@ -107,10 +136,13 @@ case "$1" in
run_stage pre-backup run_stage pre-backup
run_stage backup run_stage backup
run_stage post-backup run_stage post-backup
unmount_system
;; ;;
restore) restore)
mount_system
if check_prereq; then if check_prereq; then
if check_whitelist tmp; then if check_whitelist tmp; then
unmount_system
exit 127 exit 127
fi fi
fi fi
@ -121,6 +153,7 @@ case "$1" in
restore_addon_d restore_addon_d
rm -rf $C rm -rf $C
sync sync
unmount_system
;; ;;
*) *)
echo "Usage: $0 {backup|restore}" echo "Usage: $0 {backup|restore}"

Loading…
Cancel
Save