Remove support for BTRFS 86/274386/1
authorMateusz Moscicki <m.moscicki2@partner.samsung.com>
Mon, 25 Apr 2022 14:27:35 +0000 (16:27 +0200)
committerMateusz Moscicki <m.moscicki2@partner.samsung.com>
Mon, 25 Apr 2022 14:27:35 +0000 (16:27 +0200)
Change-Id: Ibe03cda03f8494b17b37b3d6f6c7f165f021e34d

scripts/40-fota.list.in
scripts/fota-init.sh

index 65e1112dc74a49bb2fb6e7dcabdd9864bc8744c4..d7f014e8e14d14cc03bf5c6ad9a5664651a6eb90 100755 (executable)
@@ -38,7 +38,6 @@ WITHLIBS="
 /usr/sbin/dmsetup
 /usr/sbin/bow-restore
 /usr/sbin/fstrim
-/usr/sbin/btrfs
 "
 
 # LinkFileName:Target
index 00554da18b1c0afcd5e0c209e7816dbf3331eb08..fb5ee98391232f8963cebca560c3a14773d46346 100755 (executable)
@@ -40,7 +40,6 @@ BOW_RESTORE="bow-restore"
 DMSETUP="dmsetup"
 FSTRIM="fstrim"
 STAT="stat"
-BTRFS="/usr/sbin/btrfs"
 
 FOTA_GUI="/usr/bin/fota_gui"
 FOTA_GUI_ENABLE=
@@ -104,106 +103,6 @@ get_partition_id() {
     PART_USER=$("$BLKID" --match-token PARTLABEL=user -o device || "$BLKID" --match-token LABEL=user -o device)
 }
 
-delete_btrfs_snapshot() {
-       PART="$1"
-       MNT_POINT="$2"
-       log "[Info] Deleting btrfs snapshot"
-       # we have to delete /fota/RO_update subvolume form root volume
-       # so ensure that root volume is mounted
-       if ! "$UMOUNT" "$MNT_POINT"; then
-               log "[Error] Unable to umount $MNT_POINT"
-               return 1
-       fi
-       if ! "$MOUNT" -o subvolid=5,rw "$PART" "$MNT_POINT"; then
-               log "[Error] Unable to mount $PART root subvolume to: $MNT_POINT"
-               return 1
-       fi
-       # delete subvolume /fota/RO_update containing checkpoint data
-       "$BTRFS" subvolume delete "$MNT_POINT/fota/RO_update"
-       # delete /fota directory, as it is no longer needed
-       # because data was already restored
-       rm -rf -- "$MNT_POINT/fota"
-       if ! "$UMOUNT" "$MNT_POINT"; then
-               log "[Error] Unable to umount $MNT_POINT"
-               return 1
-       fi
-       # mount default volume
-       if ! "$MOUNT" "$PART" "$MNT_POINT"; then
-               log "[Error] Unable to mount default subvolume $PART to $MNT_POINT"
-               return 1
-       fi
-}
-
-restore_btrfs_snapshot() {
-       PART="$1"
-       MNT_POINT="$2"
-       DEST_DIR="$MNT_POINT/ROOTFS"
-
-       if [ -d "$MNT_POINT/fota/RO_update" ] && "$BTRFS" subvolume list "$MNT_POINT/fota/RO_update"; then
-               # There is snapshot form previously failed update
-               # Use snapshot as source data.
-               log "[Info] Got previous snapshot."
-               SOURCE_DIR="$MNT_POINT/fota/RO_update"
-               # root volume 5 has to be set as default otherwise /ROOTFS subvolume can not be deleted
-               # as it is default subvolume
-               if ! "$BTRFS" subvolume set-default "$MNT_POINT"; then
-                       log "[Error] Unable to set $DEST_DIR as default subvolume"
-                       return 1
-               fi
-               "$BTRFS" subvolume delete "$DEST_DIR"
-               rm -rf "$DEST_DIR"
-       elif [ ! -d "$MNT_POINT/ROOTFS" ]; then
-               # There is no /ROOTFS subvolume, create it and set is as default one.
-               # This will execute during first update when data on root volume 5 exist.
-               # After this update /ROOTFS will be default subvolume. Automatically mounted by mount.
-               # Use / (root volume 5) as source data.
-               log '[Info] Create initial /ROOTFS subvolume'
-               SOURCE_DIR="$MNT_POINT"
-       else
-               # There is no data to restore because there was not previous update attempts.
-               # Howether data is stored in /ROOTFS instead off inside root volume 5 /
-               # Therefore there is no need to restore anything so remove any leftover data
-               # and proceed with the update.
-               log "[Info] Removing leftover data from previous snapshot."
-               rm -rf -- "$MNT_POINT/fota"
-               return 0
-       fi
-       if ! "$BTRFS" subvolume snapshot "$SOURCE_DIR" "$DEST_DIR"; then
-               log "[Error] Unable to create snapshot from: $SOURCE_DIR to $DEST_DIR"
-               return 1
-       fi
-
-       # Remove special directories /dev /proc /sys content
-       # it is required because "btrfs subvolume snapshot" copies some files from this directories
-       rm -rf -- "$DEST_DIR/proc/"* "$DEST_DIR/sys/"*
-
-       # Make $DEST_DIR (/ROOTFS) as new root (/).
-       # From now on it will become new default filesystem mounted by mount command.
-       if ! "$BTRFS" subvolume set-default "$DEST_DIR"; then
-               log "[Error] Unable to set $DEST_DIR as default subvolume"
-               return 1
-       fi
-       if [ -d "$MNT_POINT/fota" ]; then
-               delete_btrfs_snapshot "$PART" "$MNT_POINT"
-               # Remount root volume 5 because delete_btrfs_snapshot will mount default subvolume
-               # which is /ROOTFS.
-               if ! "$UMOUNT" "$MNT_POINT"; then
-                       log "[Error] Unable to umount $MNT_POINT"
-                       return 1
-               fi
-               if ! "$MOUNT" -o subvolid=5,rw "$PART" "$MNT_POINT"; then
-                       log "[Error] Unable to mount $PART root subvolume to: $MNT_POINT"
-                       return 1
-               fi
-       fi
-       # delete all files in root volume except new rootfs /ROOTFS
-       for var in "$MNT_POINT"/* "$MNT_POINT"/.[!.]*; do
-               test "$var" = "$MNT_POINT/ROOTFS" && continue
-               rm -rf -- "$var"
-       done
-}
-
-
 #------------------------------------------------
 #       restore_checkpoint
 #------------------------------------------------
@@ -216,8 +115,6 @@ restore_checkpoint() {
        FS_TYPE="$(blkid -o value -s TYPE "${PART}")"
        if [ "$FS_TYPE" = "ext4" ]; then
                "$BOW_RESTORE" "${PART}"
-       elif [ "$FS_TYPE" = "btrfs" ]; then
-               restore_btrfs_snapshot "${PART}" "${DIRECTORY}"
        fi
 }
 
@@ -257,18 +154,6 @@ mount_f2fs_partition() {
        log "[Debug] Mounted ${PARTITION} as F2FS checkpoint=disable" "${INT_LOG_FILE}"
 }
 
-mount_btrfs_partition() {
-       LABEL=${1}
-       PARTITION=${2}
-       DIRECTORY=${3}
-       # mount btrfs root subvolume
-       if ! "${MOUNT}" -o rw,subvolid=5 "${PARTITION}" "${DIRECTORY}"; then
-               log "[Error] Cannot mount ${PARTITION} into ${DIRECTORY}"
-               return 1
-       fi
-       log "[Debug] Mounted ${PARTITION} as btrfs" "${INT_LOG_FILE}"
-}
-
 restore_mount_checkpoint_partition() {
        LABEL=${1}
        PARTITION=${2}
@@ -285,31 +170,6 @@ restore_mount_checkpoint_partition() {
                if ! mount_f2fs_partition "${LABEL}" "${PARTITION}" "${DIRECTORY}" ; then
                        return 1
                fi
-       elif [ "${FSTYPE}" = "btrfs" ]; then
-               # btrfs has to be mounted to restore data
-               if ! mount_btrfs_partition "${LABEL}" "${PARTITION}" "${DIRECTORY}"; then
-                       return 1
-               fi
-               restore_checkpoint "${PARTITION}" "${DIRECTORY}"
-               # Create new checkpoint
-               if ! "$MKDIR" -p "$DIRECTORY/fota"; then
-                       log "[Error] Unable to create $DIRECTORY/fota dir."
-                       return 1
-               fi
-               if ! "$BTRFS" subvolume snapshot "$DIRECTORY/ROOTFS" "$DIRECTORY/fota/RO_update"; then
-                       log "[Error] Unable to create snapshot from $DIRECTORY/ROOTFS to $DIRECTORY/fota/RO_update"
-                       retun 1
-               fi
-               # mount /ROOTFS partition instead of root volume
-               if ! "$UMOUNT" "${PARTITION}"; then
-                       log "[Error] Cannot umount ${PARTITION}"
-                       return 1
-               fi
-               if ! "$MOUNT" "${PARTITION}" "${DIRECTORY}"; then
-                       log "[Error] Cannot mount ${PARTITION} into ${DIRECTORY}"
-                       return 1
-               fi
-
        else
                "${MOUNT}" "${PARTITION}" "${DIRECTORY}"
                log "[Info] Unsupported filesystem ${FSTYPE} on ${PARTITION}" "${INT_LOG_FILE}"
@@ -335,15 +195,6 @@ commit_f2fs_partition()
        log "[Info] Changes on partition ${LABEL} commited (f2fs)" "${INT_LOG_FILE}"
 }
 
-commit_btrfs_partition()
-{
-       LABEL=${1}
-       MNT_POINT=${2}
-       PART_SYSTEM_DATA=$(blkid --match-token PARTLABEL="${LABEL}" -o device || blkid --match-token LABEL="${LABEL}" -o device)
-       delete_btrfs_snapshot "${PART_SYSTEM_DATA}" "${MNT_POINT}"
-       log "[Info] Changes on partition ${LABEL} commited (btrfs)" "${INT_LOG_FILE}"
-}
-
 commit_partition()
 {
        LABEL=${1}
@@ -353,8 +204,6 @@ commit_partition()
                commit_bow_partition "${LABEL}"
        elif [ "${TYPE}" = "f2fs" ]; then
                commit_f2fs_partition "${LABEL}"
-       elif [ "$TYPE" = "btrfs" ]; then
-               commit_btrfs_partition "${LABEL}" "${MNT_POINT}"
        else
                log "[Info] Cannot commit ${LABEL}: Unsupported filesystem ${TYPE}" "${INT_LOG_FILE}"
        fi