Date: Sun, 27 Jun 2010 15:50:04 -0600 (MDT) From: "M. Warner Losh" <imp@bsdimp.com> To: yanefbsd@gmail.com Cc: freebsd-current@freebsd.org, hselasky@c2i.net Subject: Re: Patch for rc.d/devd on FreeBSD 9-current Message-ID: <20100627.155004.49280345238493664.imp@bsdimp.com> In-Reply-To: <AANLkTilnYGNz7V6z6AkeKsqUvOMN8yLvO57GM1gOIsTD@mail.gmail.com> References: <201006262229.09747.hselasky@c2i.net> <AANLkTilVB_E-BiOtC-gENBQ7FdPTLcmu8qpmdwU1GyXd@mail.gmail.com> <AANLkTilnYGNz7V6z6AkeKsqUvOMN8yLvO57GM1gOIsTD@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
In message: <AANLkTilnYGNz7V6z6AkeKsqUvOMN8yLvO57GM1gOIsTD@mail.gmail.c=
om>
Garrett Cooper <yanefbsd@gmail.com> writes:
: On Sat, Jun 26, 2010 at 1:45 PM, Garrett Cooper <yanefbsd@gmail.com> =
wrote:
: > On Sat, Jun 26, 2010 at 1:29 PM, Hans Petter Selasky <hselasky@c2i.=
net> wrote:
: >> Hi,
: >>
: >> Sometimes utilities that are started by devd require libraries out=
side
: >> /usr/lib. One example is the webcamd utility which is started by d=
evd upon USB
: >> device insertion. What do you think about the following patch:
: >>
: >> --- devd =A0 =A0 =A0 =A0(revision 209463)
: >> +++ devd =A0 =A0 =A0 =A0(local)
: >> @@ -4,7 +4,7 @@
: >> =A0#
: >>
: >> =A0# PROVIDE: devd
: >> -# REQUIRE: netif
: >> +# REQUIRE: netif ldconfig
: >> =A0# BEFORE: NETWORKING mountcritremote
: >> =A0# KEYWORD: nojail shutdown
: >
: > Funny since I was just monkeying around with this. This doesn't app=
ear
: > to be the only issue with devd:
: >
: > # devd
: > devd: devd already running, pid: 430
: > # pgrep 430; echo $?
: > 1
: > #
: >
: > Looks like /etc/rc.d/devd restart is broken :(...
: =
: This seems to fix that.
: Thanks,
: -Garrett
: =
: Index: devd.cc
: =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
: --- devd.cc (revision 209530)
: +++ devd.cc (working copy)
: @@ -739,6 +739,7 @@
: static void
: event_loop(void)
: {
: + bool warn_user_about_cleanup;
: int rv;
: int fd;
: char buffer[DEVCTL_MAXBUF];
: @@ -804,6 +805,17 @@
: new_client(server_fd);
: }
: close(fd);
: + close(server_fd);
: +
: + if (unlink(PIPE) =3D=3D 0) {
: + cfg.remove_pidfile();
: + warn_user_about_cleanup =3D false;
: + } else
: + warn_user_about_cleanup =3D true;
: +
: + if (warn_user_about_cleanup =3D=3D true)
: + warn("cleanup failed");
: +
Why not fix pidfile_open to not return a file handle when the PID
doesn't match? Seems like a bug to me in that routine as well.
Warner
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20100627.155004.49280345238493664.imp>
