linux-xfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] xfs: add debian initramfs hook to package
@ 2018-07-26 21:51 Darrick J. Wong
  2018-07-27 14:28 ` Bill O'Donnell
                   ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: Darrick J. Wong @ 2018-07-26 21:51 UTC (permalink / raw)
  To: Eric Sandeen; +Cc: xfs

From: Darrick J. Wong <darrick.wong@oracle.com>

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>
---
 debian/local/initramfs.hook |   47 +++++++++++++++++++++++++++++++++++++++++++
 debian/rules                |    1 +
 2 files changed, 48 insertions(+)
 create mode 100644 debian/local/initramfs.hook

diff --git a/debian/local/initramfs.hook b/debian/local/initramfs.hook
new file mode 100644
index 00000000..20df5d69
--- /dev/null
+++ b/debian/local/initramfs.hook
@@ -0,0 +1,47 @@
+#!/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
+			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
diff --git a/debian/rules b/debian/rules
index cb4fa22c..4c50654c 100755
--- a/debian/rules
+++ b/debian/rules
@@ -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

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH] xfs: add debian initramfs hook to package
  2018-07-26 21:51 [PATCH] xfs: add debian initramfs hook to package Darrick J. Wong
@ 2018-07-27 14:28 ` Bill O'Donnell
  2018-07-28  0:13 ` Eric Sandeen
  2018-07-28 18:36 ` [PATCH v2] " Darrick J. Wong
  2 siblings, 0 replies; 9+ messages in thread
From: Bill O'Donnell @ 2018-07-27 14:28 UTC (permalink / raw)
  To: Darrick J. Wong; +Cc: Eric Sandeen, xfs

On Thu, Jul 26, 2018 at 02:51:54PM -0700, Darrick J. Wong wrote:
> From: Darrick J. Wong <darrick.wong@oracle.com>
> 
> 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>
> ---

Makes sense.
Reviewed-by: Bill O'Donnell <billodo@redhat.com>

>  debian/local/initramfs.hook |   47 +++++++++++++++++++++++++++++++++++++++++++
>  debian/rules                |    1 +
>  2 files changed, 48 insertions(+)
>  create mode 100644 debian/local/initramfs.hook
> 
> diff --git a/debian/local/initramfs.hook b/debian/local/initramfs.hook
> new file mode 100644
> index 00000000..20df5d69
> --- /dev/null
> +++ b/debian/local/initramfs.hook
> @@ -0,0 +1,47 @@
> +#!/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
> +			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
> diff --git a/debian/rules b/debian/rules
> index cb4fa22c..4c50654c 100755
> --- a/debian/rules
> +++ b/debian/rules
> @@ -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
> --
> To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] xfs: add debian initramfs hook to package
  2018-07-26 21:51 [PATCH] xfs: add debian initramfs hook to package Darrick J. Wong
  2018-07-27 14:28 ` Bill O'Donnell
@ 2018-07-28  0:13 ` Eric Sandeen
  2018-07-28  0:22   ` Eric Sandeen
  2018-07-28  7:44   ` Darrick J. Wong
  2018-07-28 18:36 ` [PATCH v2] " Darrick J. Wong
  2 siblings, 2 replies; 9+ messages in thread
From: Eric Sandeen @ 2018-07-28  0:13 UTC (permalink / raw)
  To: Darrick J. Wong, Eric Sandeen; +Cc: xfs



On 7/26/18 2:51 PM, Darrick J. Wong wrote:
> From: Darrick J. Wong <darrick.wong@oracle.com>
> 
> 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>
> ---
>  debian/local/initramfs.hook |   47 +++++++++++++++++++++++++++++++++++++++++++
>  debian/rules                |    1 +
>  2 files changed, 48 insertions(+)
>  create mode 100644 debian/local/initramfs.hook
> 
> diff --git a/debian/local/initramfs.hook b/debian/local/initramfs.hook
> new file mode 100644
> index 00000000..20df5d69
> --- /dev/null
> +++ b/debian/local/initramfs.hook
> @@ -0,0 +1,47 @@
> +#!/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/;'

Is this just a fancy 

ls -1 /etc/fstab.d/*.fstab 2>/dev/null

?  *shrug* ok :)

> +	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
> +			test "$MNT_DIR" != "/" && continue
> +			echo "$MNT_TYPE"
> +			break;
> +		done < "$file"
> +	done
> +}

ok, I was scheming up something, uh, more obtuse,

awk '$2 == "/" {print $3}' $(fstab_files)

but *shrug* :)

Actually... this sort of fstqab poses a problem for your function and mine:

#/dev/mapper/vg-lv_root /                      xfs    defaults        1 1
/dev/mapper/vg-lv_root /                       ext4    defaults        1 1

because it'll happily pick xfs.  Need to exclude comment lines, so exclude
MNT_FSNAME starting with # - 

test ${MNT_FSNAME::1} == "#" && continue

or in my fancy world could do:

awk '(!/^#/) && ($2 == "/") {print $3}' $(fstab_files)

tho I guess mine assumes only one matching line... | head -n 1 ;)


> +. /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

Just to be sure, it gets fsck.xfs already?  or does it need to?

-Eric

> +fi
> +exit 0
> diff --git a/debian/rules b/debian/rules
> index cb4fa22c..4c50654c 100755
> --- a/debian/rules
> +++ b/debian/rules
> @@ -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
> --
> To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] xfs: add debian initramfs hook to package
  2018-07-28  0:13 ` Eric Sandeen
@ 2018-07-28  0:22   ` Eric Sandeen
  2018-07-28  7:44   ` Darrick J. Wong
  1 sibling, 0 replies; 9+ messages in thread
From: Eric Sandeen @ 2018-07-28  0:22 UTC (permalink / raw)
  To: Darrick J. Wong, Eric Sandeen; +Cc: xfs

On 7/27/18 5:13 PM, Eric Sandeen wrote:

> Actually... this sort of fstab poses a problem for your function and mine:
> 
> #/dev/mapper/vg-lv_root /                      xfs    defaults        1 1
> /dev/mapper/vg-lv_root /                       ext4    defaults        1 1

As would this:

# / on zfs won't work, use ext4:
/dev/sda2	/	ext4	defaults	1 1

... anyway, regardless of likelihood need to filter out comments I think.

Thanks,
-Eric

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] xfs: add debian initramfs hook to package
  2018-07-28  0:13 ` Eric Sandeen
  2018-07-28  0:22   ` Eric Sandeen
@ 2018-07-28  7:44   ` Darrick J. Wong
  2018-07-28 15:47     ` Eric Sandeen
  1 sibling, 1 reply; 9+ messages in thread
From: Darrick J. Wong @ 2018-07-28  7:44 UTC (permalink / raw)
  To: Eric Sandeen; +Cc: Eric Sandeen, xfs

On Fri, Jul 27, 2018 at 05:13:42PM -0700, Eric Sandeen wrote:
> 
> 
> On 7/26/18 2:51 PM, Darrick J. Wong wrote:
> > From: Darrick J. Wong <darrick.wong@oracle.com>
> > 
> > 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>
> > ---
> >  debian/local/initramfs.hook |   47 +++++++++++++++++++++++++++++++++++++++++++
> >  debian/rules                |    1 +
> >  2 files changed, 48 insertions(+)
> >  create mode 100644 debian/local/initramfs.hook
> > 
> > diff --git a/debian/local/initramfs.hook b/debian/local/initramfs.hook
> > new file mode 100644
> > index 00000000..20df5d69
> > --- /dev/null
> > +++ b/debian/local/initramfs.hook
> > @@ -0,0 +1,47 @@
> > +#!/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/;'
> 
> Is this just a fancy 
> 
> ls -1 /etc/fstab.d/*.fstab 2>/dev/null
> 
> ?  *shrug* ok :)

Yeah, it's ... bizarre, but it matches the debian initramfs scripts for
shoving fsck and fsck.$FSTYP into the initramfs.

> > +	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
> > +			test "$MNT_DIR" != "/" && continue
> > +			echo "$MNT_TYPE"
> > +			break;
> > +		done < "$file"
> > +	done
> > +}
> 
> ok, I was scheming up something, uh, more obtuse,
> 
> awk '$2 == "/" {print $3}' $(fstab_files)
> 
> but *shrug* :)

Yeah, that fugly mess is also cribbed from the Debian initramfs scripts.

> Actually... this sort of fstqab poses a problem for your function and mine:
> 
> #/dev/mapper/vg-lv_root /                      xfs    defaults        1 1
> /dev/mapper/vg-lv_root /                       ext4    defaults        1 1
> 
> because it'll happily pick xfs.  Need to exclude comment lines, so exclude
> MNT_FSNAME starting with # - 
> 
> test ${MNT_FSNAME::1} == "#" && continue
> 
> or in my fancy world could do:
> 
> awk '(!/^#/) && ($2 == "/") {print $3}' $(fstab_files)
> 
> tho I guess mine assumes only one matching line... | head -n 1 ;)

Might have to add awk as a Depends: dependency in debian/control if you
do that.  I think it's cleaner....

> 
> > +. /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
> 
> Just to be sure, it gets fsck.xfs already?  or does it need to?

fsck.xfs will be put in the initramfs by
/usr/share/initramfs-tools/hooks/fsck if /etc/fstab says the rootfs is
pass 1 or greater.  I find it weird that the bug reporter has pass == 0
and complains that xfs_repair isn't present even though neither fsck nor
fsck.xfs are in his initramfs either!

Buuuut, it would be nice to have the xfs tools show up in the initramfs
in case the rootfs is corrupt and the admin boots with 'break=premount'
to get a shell to fix the root fs.

--D

> -Eric
> 
> > +fi
> > +exit 0
> > diff --git a/debian/rules b/debian/rules
> > index cb4fa22c..4c50654c 100755
> > --- a/debian/rules
> > +++ b/debian/rules
> > @@ -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
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
> > the body of a message to majordomo@vger.kernel.org
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html
> > 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] xfs: add debian initramfs hook to package
  2018-07-28  7:44   ` Darrick J. Wong
@ 2018-07-28 15:47     ` Eric Sandeen
  2018-07-28 18:35       ` Darrick J. Wong
  0 siblings, 1 reply; 9+ messages in thread
From: Eric Sandeen @ 2018-07-28 15:47 UTC (permalink / raw)
  To: Darrick J. Wong; +Cc: Eric Sandeen, xfs



On 7/28/18 12:44 AM, Darrick J. Wong wrote:
>> Actually... this sort of fstqab poses a problem for your function and mine:
>>
>> #/dev/mapper/vg-lv_root /                      xfs    defaults        1 1
>> /dev/mapper/vg-lv_root /                       ext4    defaults        1 1
>>
>> because it'll happily pick xfs.  Need to exclude comment lines, so exclude
>> MNT_FSNAME starting with # - 
>>
>> test ${MNT_FSNAME::1} == "#" && continue
>>
>> or in my fancy world could do:
>>
>> awk '(!/^#/) && ($2 == "/") {print $3}' $(fstab_files)
>>
>> tho I guess mine assumes only one matching line... | head -n 1 ;)
> Might have to add awk as a Depends: dependency in debian/control if you
> do that.  I think it's cleaner....
> 

Ok, up to you.  If this is all just boilerplate from other debian
scripts and it's good enough for them I guess I can just merge as
is.  The only thing that seemed to matter was not ignoring comment lines,
which would be trivial to fix.

-Eric

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] xfs: add debian initramfs hook to package
  2018-07-28 15:47     ` Eric Sandeen
@ 2018-07-28 18:35       ` Darrick J. Wong
  0 siblings, 0 replies; 9+ messages in thread
From: Darrick J. Wong @ 2018-07-28 18:35 UTC (permalink / raw)
  To: Eric Sandeen; +Cc: Eric Sandeen, xfs

On Sat, Jul 28, 2018 at 08:47:49AM -0700, Eric Sandeen wrote:
> 
> 
> On 7/28/18 12:44 AM, Darrick J. Wong wrote:
> >> Actually... this sort of fstqab poses a problem for your function and mine:
> >>
> >> #/dev/mapper/vg-lv_root /                      xfs    defaults        1 1
> >> /dev/mapper/vg-lv_root /                       ext4    defaults        1 1
> >>
> >> because it'll happily pick xfs.  Need to exclude comment lines, so exclude
> >> MNT_FSNAME starting with # - 
> >>
> >> test ${MNT_FSNAME::1} == "#" && continue
> >>
> >> or in my fancy world could do:
> >>
> >> awk '(!/^#/) && ($2 == "/") {print $3}' $(fstab_files)
> >>
> >> tho I guess mine assumes only one matching line... | head -n 1 ;)
> > Might have to add awk as a Depends: dependency in debian/control if you
> > do that.  I think it's cleaner....
> > 
> 
> Ok, up to you.  If this is all just boilerplate from other debian
> scripts and it's good enough for them I guess I can just merge as
> is.  The only thing that seemed to matter was not ignoring comment lines,
> which would be trivial to fix.

Ok, I'll do that.

--D

> -Eric
> --
> To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH v2] xfs: add debian initramfs hook to package
  2018-07-26 21:51 [PATCH] xfs: add debian initramfs hook to package Darrick J. Wong
  2018-07-27 14:28 ` Bill O'Donnell
  2018-07-28  0:13 ` Eric Sandeen
@ 2018-07-28 18:36 ` Darrick J. Wong
  2018-07-30 16:04   ` Eric Sandeen
  2 siblings, 1 reply; 9+ messages in thread
From: Darrick J. Wong @ 2018-07-28 18:36 UTC (permalink / raw)
  To: Eric Sandeen; +Cc: xfs, billodo

From: Darrick J. Wong <darrick.wong@oracle.com>

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>
---
v2: ignore comment lines
---
 debian/local/initramfs.hook |   52 +++++++++++++++++++++++++++++++++++++++++++
 debian/rules                |    1 +
 2 files changed, 53 insertions(+)
 create mode 100644 debian/local/initramfs.hook

diff --git a/debian/local/initramfs.hook b/debian/local/initramfs.hook
new file mode 100644
index 00000000..5b24eaec
--- /dev/null
+++ b/debian/local/initramfs.hook
@@ -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
diff --git a/debian/rules b/debian/rules
index cb4fa22c..4c50654c 100755
--- a/debian/rules
+++ b/debian/rules
@@ -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

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH v2] xfs: add debian initramfs hook to package
  2018-07-28 18:36 ` [PATCH v2] " Darrick J. Wong
@ 2018-07-30 16:04   ` Eric Sandeen
  0 siblings, 0 replies; 9+ messages in thread
From: Eric Sandeen @ 2018-07-30 16:04 UTC (permalink / raw)
  To: Darrick J. Wong, Eric Sandeen; +Cc: xfs, billodo



On 7/28/18 1:36 PM, Darrick J. Wong wrote:
> From: Darrick J. Wong <darrick.wong@oracle.com>
> 
> 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: Eric Sandeen <sandeen@redhat.com>


^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2018-07-30 17:39 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-07-26 21:51 [PATCH] xfs: add debian initramfs hook to package Darrick J. Wong
2018-07-27 14:28 ` Bill O'Donnell
2018-07-28  0:13 ` Eric Sandeen
2018-07-28  0:22   ` Eric Sandeen
2018-07-28  7:44   ` Darrick J. Wong
2018-07-28 15:47     ` Eric Sandeen
2018-07-28 18:35       ` Darrick J. Wong
2018-07-28 18:36 ` [PATCH v2] " Darrick J. Wong
2018-07-30 16:04   ` Eric Sandeen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).