]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
xfs: add debian initramfs hook to package
authorDarrick J. Wong <darrick.wong@oracle.com>
Wed, 1 Aug 2018 22:06:45 +0000 (17:06 -0500)
committerEric Sandeen <sandeen@redhat.com>
Wed, 1 Aug 2018 22:06:45 +0000 (17:06 -0500)
In Debian bug 904086, the reporter complained that xfs_repair wasn't
present in the initramfs, which prevented him from using shutdown -F to
force a filesystem fsck after a reboot.  Add a hook to put the xfs
utilities in the initramfs if xfs is the root filesystem.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Bill O'Donnell <billodo@redhat.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
debian/local/initramfs.hook [new file with mode: 0644]
debian/rules

diff --git a/debian/local/initramfs.hook b/debian/local/initramfs.hook
new file mode 100644 (file)
index 0000000..5b24eae
--- /dev/null
@@ -0,0 +1,52 @@
+#!/bin/sh
+
+# Put XFS utilities in initramfs if the root fs is XFS.
+
+PREREQ=""
+
+prereqs()
+{
+       echo "$PREREQ"
+}
+
+case $1 in
+prereqs)
+       prereqs
+       exit 0
+       ;;
+esac
+
+fstab_files()
+{
+       echo /etc/fstab
+       if [ -d /etc/fstab.d ]; then
+               ls -1 /etc/fstab.d | grep '\.fstab$' | sed -e 's;^;/etc/fstab.d/;'
+       fi
+}
+
+rootfs_type() {
+       fstab_files | while read file; do
+               test ! -f "$file" && continue
+
+               while read MNT_FSNAME MNT_DIR MNT_TYPE MNT_OPTS MNT_FREQ MNT_PASS MNT_JUNK; do
+                       case "$MNT_FSNAME" in
+                       ""|\#*)
+                               continue;
+                               ;;
+                       esac
+                       test "$MNT_DIR" != "/" && continue
+                       echo "$MNT_TYPE"
+                       break;
+               done < "$file"
+       done
+}
+
+. /usr/share/initramfs-tools/scripts/functions
+. /usr/share/initramfs-tools/hook-functions
+
+if [ "$(rootfs_type)" = "xfs" ]; then
+       copy_exec /sbin/xfs_repair
+       copy_exec /usr/sbin/xfs_db
+       copy_exec /usr/sbin/xfs_metadump
+fi
+exit 0
index cb4fa22c1584e582d7e4f794db12e25e07a428f3..4c50654c20cf5ba73d90fbc690f8f9188612b8a7 100755 (executable)
@@ -77,6 +77,7 @@ binary-arch: checkroot built
        $(pkgdev) $(MAKE) -C . install-dev
        $(pkgdi)  $(MAKE) -C debian install-d-i
        $(pkgme)  $(MAKE) dist
+       install -D -m 0755 debian/local/initramfs.hook debian/xfsprogs/usr/share/initramfs-tools/hooks/xfs
        rmdir debian/xfslibs-dev/usr/share/doc/xfsprogs
        rm -f debian/xfslibs-dev/lib/libhandle.la
        rm -fr debian/xfslibs-dev/usr/lib