diff mbox series

[v5,1/3] nfs-utils: clean up startup

Message ID 20240329012413.892379-1-danismostlikely@gmail.com
State New
Headers show
Series [v5,1/3] nfs-utils: clean up startup | expand

Commit Message

Daniel McGregor March 29, 2024, 1:24 a.m. UTC
From: Daniel McGregor <daniel.mcgregor@vecima.com>

Change the sysvinit script to start at the S runlevel, this matches
Debian, and prevents systemd from generating a unit file for it.
Also have the nfsd systemd service request the nfsd kernel filesystem
mountpoint. This avoids startup failures in unpriviled containers
or other setups that don't support the filesystem.

Signed-off-by: Daniel McGregor <daniel.mcgregor@vecima.com>
---
 meta/recipes-connectivity/nfs-utils/nfs-utils/nfscommon | 4 ++--
 meta/recipes-connectivity/nfs-utils/nfs-utils_2.6.4.bb  | 9 ++++-----
 2 files changed, 6 insertions(+), 7 deletions(-)

Comments

Alexandre Belloni March 31, 2024, 9:34 p.m. UTC | #1
This still fails on the AB:

https://autobuilder.yoctoproject.org/typhoon/#/builders/23/builds/9115/steps/14/logs/stdio

On 28/03/2024 19:24:10-0600, Dan McGregor wrote:
> From: Daniel McGregor <daniel.mcgregor@vecima.com>
> 
> Change the sysvinit script to start at the S runlevel, this matches
> Debian, and prevents systemd from generating a unit file for it.
> Also have the nfsd systemd service request the nfsd kernel filesystem
> mountpoint. This avoids startup failures in unpriviled containers
> or other setups that don't support the filesystem.
> 
> Signed-off-by: Daniel McGregor <daniel.mcgregor@vecima.com>
> ---
>  meta/recipes-connectivity/nfs-utils/nfs-utils/nfscommon | 4 ++--
>  meta/recipes-connectivity/nfs-utils/nfs-utils_2.6.4.bb  | 9 ++++-----
>  2 files changed, 6 insertions(+), 7 deletions(-)
> 
> diff --git a/meta/recipes-connectivity/nfs-utils/nfs-utils/nfscommon b/meta/recipes-connectivity/nfs-utils/nfs-utils/nfscommon
> index 992267d5a16..4c1ad17c3c6 100644
> --- a/meta/recipes-connectivity/nfs-utils/nfs-utils/nfscommon
> +++ b/meta/recipes-connectivity/nfs-utils/nfs-utils/nfscommon
> @@ -3,7 +3,7 @@
>  # Provides:          nfs-common
>  # Required-Start:    $portmap hwclock
>  # Required-Stop:     $portmap hwclock
> -# Default-Start:     2 3 4 5
> +# Default-Start:     S
>  # Default-Stop:      0 1 6
>  # Short-Description: NFS support for both client and server
>  # Description:       NFS is a popular protocol for file sharing across
> @@ -20,7 +20,7 @@
>  . /etc/init.d/functions
>  
>  test -x "$NFS_STATD" || NFS_STATD=/usr/sbin/rpc.statd
> -test -z "$STATD_PID" && STATD_PID=/var/run/rpc.statd.pid
> +test -z "$STATD_PID" && STATD_PID=/run/rpc.statd.pid
>  #
>  # The default state directory is /var/lib/nfs
>  test -n "$NFS_STATEDIR" || NFS_STATEDIR=/var/lib/nfs
> diff --git a/meta/recipes-connectivity/nfs-utils/nfs-utils_2.6.4.bb b/meta/recipes-connectivity/nfs-utils/nfs-utils_2.6.4.bb
> index 2f2644f9a83..527fcd609c1 100644
> --- a/meta/recipes-connectivity/nfs-utils/nfs-utils_2.6.4.bb
> +++ b/meta/recipes-connectivity/nfs-utils/nfs-utils_2.6.4.bb
> @@ -132,15 +132,14 @@ do_install:append () {
>  	install -m 0644 ${WORKDIR}/nfs-server.service ${D}${systemd_system_unitdir}/
>  	install -m 0644 ${WORKDIR}/nfs-mountd.service ${D}${systemd_system_unitdir}/
>  	install -m 0644 ${WORKDIR}/nfs-statd.service ${D}${systemd_system_unitdir}/
> +	install -m 0644 ${WORKDIR}/proc-fs-nfsd.mount ${D}${systemd_system_unitdir}/
>  	sed -i -e 's,@SBINDIR@,${sbindir},g' \
>  		-e 's,@SYSCONFDIR@,${sysconfdir},g' \
>  		-e 's,@HIGH_RLIMIT_NOFILE@,${HIGH_RLIMIT_NOFILE},g' \
>  		${D}${systemd_system_unitdir}/*.service
> -	if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
> -		install -m 0644 ${WORKDIR}/proc-fs-nfsd.mount ${D}${systemd_system_unitdir}/
> -		install -d ${D}${systemd_system_unitdir}/sysinit.target.wants/
> -		ln -sf ../proc-fs-nfsd.mount ${D}${systemd_system_unitdir}/sysinit.target.wants/proc-fs-nfsd.mount
> -	fi
> +	# Add compatibility symlinks for the sysvinit scripts
> +	ln -s nfs-server.service ${D}${systemd_system_unitdir}/nfsserver.service
> +	ln -s /dev/null ${D}${systemd_system_unitdir}/nfscommon.service
>  
>  	# kernel code as of 3.8 hard-codes this path as a default
>  	install -d ${D}/var/lib/nfs/v4recovery
> -- 
> 2.41.0
> 

> 
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#197616): https://lists.openembedded.org/g/openembedded-core/message/197616
> Mute This Topic: https://lists.openembedded.org/mt/105209254/3617179
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alexandre.belloni@bootlin.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
Daniel McGregor April 3, 2024, 11:24 p.m. UTC | #2
Thanks. All my local testing against the defaults is now working as of v7.
New upstream statuses in patches and fixed packaging errors I had
introduced.

On Sun, Mar 31, 2024, 15:34 Alexandre Belloni <alexandre.belloni@bootlin.com>
wrote:

> This still fails on the AB:
>
>
> https://autobuilder.yoctoproject.org/typhoon/#/builders/23/builds/9115/steps/14/logs/stdio
>
> On 28/03/2024 19:24:10-0600, Dan McGregor wrote:
> > From: Daniel McGregor <daniel.mcgregor@vecima.com>
> >
> > Change the sysvinit script to start at the S runlevel, this matches
> > Debian, and prevents systemd from generating a unit file for it.
> > Also have the nfsd systemd service request the nfsd kernel filesystem
> > mountpoint. This avoids startup failures in unpriviled containers
> > or other setups that don't support the filesystem.
> >
> > Signed-off-by: Daniel McGregor <daniel.mcgregor@vecima.com>
> > ---
> >  meta/recipes-connectivity/nfs-utils/nfs-utils/nfscommon | 4 ++--
> >  meta/recipes-connectivity/nfs-utils/nfs-utils_2.6.4.bb  | 9 ++++-----
> >  2 files changed, 6 insertions(+), 7 deletions(-)
> >
> > diff --git a/meta/recipes-connectivity/nfs-utils/nfs-utils/nfscommon
> b/meta/recipes-connectivity/nfs-utils/nfs-utils/nfscommon
> > index 992267d5a16..4c1ad17c3c6 100644
> > --- a/meta/recipes-connectivity/nfs-utils/nfs-utils/nfscommon
> > +++ b/meta/recipes-connectivity/nfs-utils/nfs-utils/nfscommon
> > @@ -3,7 +3,7 @@
> >  # Provides:          nfs-common
> >  # Required-Start:    $portmap hwclock
> >  # Required-Stop:     $portmap hwclock
> > -# Default-Start:     2 3 4 5
> > +# Default-Start:     S
> >  # Default-Stop:      0 1 6
> >  # Short-Description: NFS support for both client and server
> >  # Description:       NFS is a popular protocol for file sharing across
> > @@ -20,7 +20,7 @@
> >  . /etc/init.d/functions
> >
> >  test -x "$NFS_STATD" || NFS_STATD=/usr/sbin/rpc.statd
> > -test -z "$STATD_PID" && STATD_PID=/var/run/rpc.statd.pid
> > +test -z "$STATD_PID" && STATD_PID=/run/rpc.statd.pid
> >  #
> >  # The default state directory is /var/lib/nfs
> >  test -n "$NFS_STATEDIR" || NFS_STATEDIR=/var/lib/nfs
> > diff --git a/meta/recipes-connectivity/nfs-utils/nfs-utils_2.6.4.bb
> b/meta/recipes-connectivity/nfs-utils/nfs-utils_2.6.4.bb
> > index 2f2644f9a83..527fcd609c1 100644
> > --- a/meta/recipes-connectivity/nfs-utils/nfs-utils_2.6.4.bb
> > +++ b/meta/recipes-connectivity/nfs-utils/nfs-utils_2.6.4.bb
> > @@ -132,15 +132,14 @@ do_install:append () {
> >       install -m 0644 ${WORKDIR}/nfs-server.service
> ${D}${systemd_system_unitdir}/
> >       install -m 0644 ${WORKDIR}/nfs-mountd.service
> ${D}${systemd_system_unitdir}/
> >       install -m 0644 ${WORKDIR}/nfs-statd.service
> ${D}${systemd_system_unitdir}/
> > +     install -m 0644 ${WORKDIR}/proc-fs-nfsd.mount
> ${D}${systemd_system_unitdir}/
> >       sed -i -e 's,@SBINDIR@,${sbindir},g' \
> >               -e 's,@SYSCONFDIR@,${sysconfdir},g' \
> >               -e 's,@HIGH_RLIMIT_NOFILE@,${HIGH_RLIMIT_NOFILE},g' \
> >               ${D}${systemd_system_unitdir}/*.service
> > -     if
> ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
> > -             install -m 0644 ${WORKDIR}/proc-fs-nfsd.mount
> ${D}${systemd_system_unitdir}/
> > -             install -d
> ${D}${systemd_system_unitdir}/sysinit.target.wants/
> > -             ln -sf ../proc-fs-nfsd.mount
> ${D}${systemd_system_unitdir}/sysinit.target.wants/proc-fs-nfsd.mount
> > -     fi
> > +     # Add compatibility symlinks for the sysvinit scripts
> > +     ln -s nfs-server.service
> ${D}${systemd_system_unitdir}/nfsserver.service
> > +     ln -s /dev/null ${D}${systemd_system_unitdir}/nfscommon.service
> >
> >       # kernel code as of 3.8 hard-codes this path as a default
> >       install -d ${D}/var/lib/nfs/v4recovery
> > --
> > 2.41.0
> >
>
> >
> > -=-=-=-=-=-=-=-=-=-=-=-
> > Links: You receive all messages sent to this group.
> > View/Reply Online (#197616):
> https://lists.openembedded.org/g/openembedded-core/message/197616
> > Mute This Topic: https://lists.openembedded.org/mt/105209254/3617179
> > Group Owner: openembedded-core+owner@lists.openembedded.org
> > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [
> alexandre.belloni@bootlin.com]
> > -=-=-=-=-=-=-=-=-=-=-=-
> >
>
>
> --
> Alexandre Belloni, co-owner and COO, Bootlin
> Embedded Linux and Kernel engineering
> https://bootlin.com
>
diff mbox series

Patch

diff --git a/meta/recipes-connectivity/nfs-utils/nfs-utils/nfscommon b/meta/recipes-connectivity/nfs-utils/nfs-utils/nfscommon
index 992267d5a16..4c1ad17c3c6 100644
--- a/meta/recipes-connectivity/nfs-utils/nfs-utils/nfscommon
+++ b/meta/recipes-connectivity/nfs-utils/nfs-utils/nfscommon
@@ -3,7 +3,7 @@ 
 # Provides:          nfs-common
 # Required-Start:    $portmap hwclock
 # Required-Stop:     $portmap hwclock
-# Default-Start:     2 3 4 5
+# Default-Start:     S
 # Default-Stop:      0 1 6
 # Short-Description: NFS support for both client and server
 # Description:       NFS is a popular protocol for file sharing across
@@ -20,7 +20,7 @@ 
 . /etc/init.d/functions
 
 test -x "$NFS_STATD" || NFS_STATD=/usr/sbin/rpc.statd
-test -z "$STATD_PID" && STATD_PID=/var/run/rpc.statd.pid
+test -z "$STATD_PID" && STATD_PID=/run/rpc.statd.pid
 #
 # The default state directory is /var/lib/nfs
 test -n "$NFS_STATEDIR" || NFS_STATEDIR=/var/lib/nfs
diff --git a/meta/recipes-connectivity/nfs-utils/nfs-utils_2.6.4.bb b/meta/recipes-connectivity/nfs-utils/nfs-utils_2.6.4.bb
index 2f2644f9a83..527fcd609c1 100644
--- a/meta/recipes-connectivity/nfs-utils/nfs-utils_2.6.4.bb
+++ b/meta/recipes-connectivity/nfs-utils/nfs-utils_2.6.4.bb
@@ -132,15 +132,14 @@  do_install:append () {
 	install -m 0644 ${WORKDIR}/nfs-server.service ${D}${systemd_system_unitdir}/
 	install -m 0644 ${WORKDIR}/nfs-mountd.service ${D}${systemd_system_unitdir}/
 	install -m 0644 ${WORKDIR}/nfs-statd.service ${D}${systemd_system_unitdir}/
+	install -m 0644 ${WORKDIR}/proc-fs-nfsd.mount ${D}${systemd_system_unitdir}/
 	sed -i -e 's,@SBINDIR@,${sbindir},g' \
 		-e 's,@SYSCONFDIR@,${sysconfdir},g' \
 		-e 's,@HIGH_RLIMIT_NOFILE@,${HIGH_RLIMIT_NOFILE},g' \
 		${D}${systemd_system_unitdir}/*.service
-	if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
-		install -m 0644 ${WORKDIR}/proc-fs-nfsd.mount ${D}${systemd_system_unitdir}/
-		install -d ${D}${systemd_system_unitdir}/sysinit.target.wants/
-		ln -sf ../proc-fs-nfsd.mount ${D}${systemd_system_unitdir}/sysinit.target.wants/proc-fs-nfsd.mount
-	fi
+	# Add compatibility symlinks for the sysvinit scripts
+	ln -s nfs-server.service ${D}${systemd_system_unitdir}/nfsserver.service
+	ln -s /dev/null ${D}${systemd_system_unitdir}/nfscommon.service
 
 	# kernel code as of 3.8 hard-codes this path as a default
 	install -d ${D}/var/lib/nfs/v4recovery