From 91bfa01a52dfed6ccc6ac38035e0c6812179ab39 Mon Sep 17 00:00:00 2001 From: Hector Palacios Date: Fri, 20 Aug 2021 13:46:54 +0200 Subject: [PATCH] udev: automount UBI volumes named "linux" or "recovery" Traditionally, platforms based on NAND, used one UBI volume per MTD partition. Now it's possible to use only one MTD partition containing many UBI volumes. Signed-off-by: Hector Palacios https://onedigi.atlassian.net/browse/DEL-7614 --- .../recipes-core/udev/udev-extraconf/automount.rules | 1 + .../udev/udev-extraconf/mount_digiparts.sh | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/meta-digi-arm/recipes-core/udev/udev-extraconf/automount.rules b/meta-digi-arm/recipes-core/udev/udev-extraconf/automount.rules index 22534848d..2bd4c6843 100644 --- a/meta-digi-arm/recipes-core/udev/udev-extraconf/automount.rules +++ b/meta-digi-arm/recipes-core/udev/udev-extraconf/automount.rules @@ -16,6 +16,7 @@ # Digi-mounted partitions: linux, update SUBSYSTEM=="block", ENV{ID_PART_ENTRY_NAME}=="linux*|update*", ACTION=="add", RUN+="/etc/udev/scripts/mount_digiparts.sh", GOTO="automount_rules_end" SUBSYSTEM=="mtd", ATTRS{name}=="linux*|update*", ACTION=="add", RUN+="/etc/udev/scripts/mount_digiparts.sh", GOTO="automount_rules_end" +SUBSYSTEM=="ubi", ATTRS{name}=="linux*|update*", ACTION=="add", RUN+="/etc/udev/scripts/mount_digiparts.sh", GOTO="automount_rules_end" # Avoid mounting recovery partition SUBSYSTEM=="block", ENV{ID_PART_ENTRY_NAME}=="recovery*", ACTION=="add", GOTO="automount_rules_end" diff --git a/meta-digi-arm/recipes-core/udev/udev-extraconf/mount_digiparts.sh b/meta-digi-arm/recipes-core/udev/udev-extraconf/mount_digiparts.sh index 08772a222..a7a706f53 100644 --- a/meta-digi-arm/recipes-core/udev/udev-extraconf/mount_digiparts.sh +++ b/meta-digi-arm/recipes-core/udev/udev-extraconf/mount_digiparts.sh @@ -22,6 +22,8 @@ if [ "${SUBSYSTEM}" = "block" ]; then elif [ "${SUBSYSTEM}" = "mtd" ]; then MTDN="$(echo ${DEVNAME} | cut -f 3 -d /)" PARTNAME="$(grep ${MTDN} /proc/mtd | sed -ne 's,.*"\(.*\)",\1,g;T;p')" +elif [ "${SUBSYSTEM}" = "ubi" ]; then + PARTNAME="$(cat /sys/${DEVPATH}/name)" fi MOUNT_PARAMS="-o silent" @@ -89,4 +91,12 @@ elif [ "${SUBSYSTEM}" = "mtd" ]; then logger -t udev "ERROR: Could not mount '${PARTNAME}' partition, volume not found" rmdir --ignore-fail-on-non-empty ${MOUNTPOINT} fi +elif [ "${SUBSYSTEM}" = "ubi" ]; then + # In the case of a 'system' partition with many UBI volumes, the device + # is always /dev/ubi0 + # Mount the volume. + if ! mount -t ubifs ubi0:${PARTNAME} ${MOUNT_PARAMS} ${MOUNTPOINT}; then + logger -t udev "ERROR: Could not mount '${PARTNAME}' volume" + rmdir --ignore-fail-on-non-empty ${MOUNTPOINT} + fi fi