This helper simplifies mounting ubifs filesystems via /etc/fstab. This
helper already exists upstream, is not released yet, though.

Signed-off-by: Uwe Kleine-König <[email protected]>
---
 .../0002-Add-an-ubifs-mount-helper.patch      | 142 ++++++++++++++++++
 patches/mtd-utils-2.1.2/series                |   3 +-
 rules/mtd-utils.in                            |   6 +
 rules/mtd-utils.make                          |   4 +
 4 files changed, 154 insertions(+), 1 deletion(-)
 create mode 100644 patches/mtd-utils-2.1.2/0002-Add-an-ubifs-mount-helper.patch

diff --git a/patches/mtd-utils-2.1.2/0002-Add-an-ubifs-mount-helper.patch 
b/patches/mtd-utils-2.1.2/0002-Add-an-ubifs-mount-helper.patch
new file mode 100644
index 000000000000..f45b660ee2d1
--- /dev/null
+++ b/patches/mtd-utils-2.1.2/0002-Add-an-ubifs-mount-helper.patch
@@ -0,0 +1,142 @@
+From: =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= <[email protected]>
+Date: Tue, 6 Oct 2020 11:19:13 +0200
+Subject: [PATCH] Add an ubifs mount helper
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+This abstracts away attaching of the right ubi and then selecting the right
+ubi device and volume to mount.
+
+As described in the comment at the top this allows to mount ubifs volumes
+directly from /etc/fstab without having to use hardcoded numbers (which
+depend on mount order and so are unreliable) and extra magic to care for
+attaching.
+
+Signed-off-by: Uwe Kleine-König <[email protected]>
+Signed-off-by: David Oberhollenzer <[email protected]>
+Origin: upstream, commit:efeba0875ed181e7c1c7915742a3868799604d0c
+---
+ ubifs-utils/Makemodule.am |   2 +
+ ubifs-utils/mount.ubifs   | 101 ++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 103 insertions(+)
+ create mode 100755 ubifs-utils/mount.ubifs
+
+diff --git a/ubifs-utils/Makemodule.am b/ubifs-utils/Makemodule.am
+index 59109ccd613c..5c5d99f7572b 100644
+--- a/ubifs-utils/Makemodule.am
++++ b/ubifs-utils/Makemodule.am
+@@ -47,4 +47,6 @@ UBIFS_EXTRA = \
+ 
+ EXTRA_DIST += $(UBIFS_HEADER) $(UBIFS_EXTRA)
+ 
++dist_sbin_SCRIPTS = ubifs-utils/mount.ubifs
++
+ sbin_PROGRAMS += $(UBIFS_BINS)
+diff --git a/ubifs-utils/mount.ubifs b/ubifs-utils/mount.ubifs
+new file mode 100755
+index 000000000000..b94ddc5649f4
+--- /dev/null
++++ b/ubifs-utils/mount.ubifs
+@@ -0,0 +1,101 @@
++#!/bin/sh
++
++# This script should be installed as /sbin/mount.ubifs. The benefit is that an
++# fstab entry like:
++#
++#     mtd=mtddev:home     /home        ubifs   defaults 0 0
++#
++# results in the ubi contained in the mtd named "mtddev" to be attached (if 
not
++# already done) and then the volume named "home" being mounted to /home.
++
++# This is called by mount with the following options:
++# /sbin/mount.ubifs spec dir [-sfnv] [-N namespace] [-o options] [-t 
type.subtype]
++
++spec="$1"
++shift
++
++mtdname2num() {
++      local name
++
++      name="$1"
++
++      for d in $(find /sys/class/mtd/ -regex '.*/mtd[0-9]*'); do
++              case "$d" in
++                      *ro)
++                              continue
++                              ;;
++              esac
++
++              if test "$name" = "$(cat "$d/name")"; then
++                      local dev mtdnum
++
++                      dev="$(basename "$d")"
++                      mtdnum="${dev#mtd}"
++                      echo "$mtdnum"
++                      return
++              fi
++      done
++
++      return 1
++}
++
++mtdnum2ubi() {
++      local mtdnum
++
++      mtdnum="$1"
++
++      for d in $(find /sys/class/ubi/ -regex '.*/ubi[0-9]*'); do
++              case "$d" in
++                      *_[0-9]*)
++                              continue
++                              ;;
++              esac
++
++              if test "$mtdnum" = "$(cat "$d/mtd_num")"; then
++                      local ubi
++
++                      ubi="$(basename "$d")"
++                      echo "$ubi"
++                      return;
++              fi
++      done
++
++      return 1
++}
++
++mtdnum2ubi_autoattach() {
++      local mtdnum ubi
++
++      mtdnum="$1"
++
++      ubi="$(mtdnum2ubi "$mtdnum")" && { echo "$ubi"; return; }
++
++      # ubiattach might fail with "mtdX is already attached to ubiY" if there
++      # is more than one mount to do in the same mtd partition. So ignore 
errors.
++      ubiattach -m "$mtdnum" >&2 || true
++
++      mtdnum2ubi "$mtdnum"
++}
++
++case "$spec" in
++      mtd=*:*)
++              spec="${spec#mtd=}"
++              mtd="${spec%:*}"
++              rspec="${spec#*:}"
++
++              mtdnum="$(mtdname2num "$mtd")" || {
++                      echo "Failed to find mtdnum for mtd \"$mtd\""
++                      exit 1
++              }
++
++              ubi="$(mtdnum2ubi_autoattach "$mtdnum")" || {
++                      echo "Failed to find ubi for mtd \"$mtd\""
++                      exit 1
++              }
++
++              spec="$ubi:$rspec"
++
++              ;;
++esac
++
++/bin/mount -i -t ubifs "$spec" "$@"
diff --git a/patches/mtd-utils-2.1.2/series b/patches/mtd-utils-2.1.2/series
index 92dc1b94f4ca..7a5eec8b0eeb 100644
--- a/patches/mtd-utils-2.1.2/series
+++ b/patches/mtd-utils-2.1.2/series
@@ -1,4 +1,5 @@
 # generated by git-ptx-patches
 #tag:base --start-number 1
 0001-nandmarkbad-new-util-to-mark-blocks-as-bad.patch
-# 407ded52b82ffa3ff91d50cf6b2388e0  - git-ptx-patches magic
+0002-Add-an-ubifs-mount-helper.patch
+# 096af547b18d202f08576089a0cee058  - git-ptx-patches magic
diff --git a/rules/mtd-utils.in b/rules/mtd-utils.in
index cdf8b15adfac..2cb2b88eb0c3 100644
--- a/rules/mtd-utils.in
+++ b/rules/mtd-utils.in
@@ -288,6 +288,12 @@ config MTD_UTILS_UBIFORMAT
        help
          Format an MTD device
 
+config MTD_UTILS_UBIFS_MOUNTHELPER
+       bool
+       prompt "mount.ubifs"
+       help
+         Simplifies attaching an ubi and mounting an ubifs via /etc/fstab.
+
 config MTD_UTILS_UBIHEALTHD
        bool
        prompt "ubihealthd"
diff --git a/rules/mtd-utils.make b/rules/mtd-utils.make
index a5a12b3d14a9..248443b85345 100644
--- a/rules/mtd-utils.make
+++ b/rules/mtd-utils.make
@@ -197,6 +197,10 @@ ifdef PTXCONF_MTD_UTILS_UBICRC32
        @$(call install_copy, mtd-utils, 0, 0, 0755, -, \
                /usr/sbin/ubicrc32)
 endif
+ifdef PTXCONF_MTD_UTILS_UBIFS_MOUNTHELPER
+       @$(call install_copy, mtd-utils, 0, 0, 0755, -, \
+               /usr/sbin/mount.ubifs)
+endif
 ifdef PTXCONF_MTD_UTILS_UBIHEALTHD
        @$(call install_copy, mtd-utils, 0, 0, 0755, -, \
                /usr/sbin/ubihealthd)
-- 
2.30.0


_______________________________________________
ptxdist mailing list
[email protected]
To unsubscribe, send a mail with subject "unsubscribe" to 
[email protected]

Reply via email to