Lennart Poettering píše v St 25. 08. 2010 v 02:52 +0200:
On Tue, 24.08.10 20:14, Matt McCutchen (matt(a)mattmccutchen.net)
wrote:
> On Tue, 2010-08-24 at 23:31 +0200, Lennart Poettering wrote:
> > On Tue, 24.08.10 16:38, Bill Nottingham (notting(a)redhat.com) wrote:
> > > Lennart Poettering (mzerqung(a)0pointer.de) said:
> > > > > - init shall support a mechanism to re-exec itself to not cause
dirty
> > > > > inodes on shutdown; initscripts will use this method on
shutdown.
> > > >
> > > > This is bad. While we support this just fine I think it is a really
bad
> > > > idea to reexec init at shutdown. What's the point of this, can
you elaborate on
> > > > this? This smells to me as a workaround for brokeness in older init
> > > > systems, and I don't see a reason why reexecing itself would be
> > > > necessary for systemd.
> > >
> > > If the libraries or binaries used by systemd are replaced during runtime,
> > > and it is not re-executed on shutdown, the filesystem will have busy
inodes
> > > on shutdown. (If you'd like to take the filesystem semantics up with
the
> > > kernel, feel free to tilt at that windmill.)
<snip>
Well, what me still puzzles is this: the reexec is done
asynchronously,
via signals. Shouldn't this be done synchronously at least to make
sure the daemon really is reexec'ed when we try to remount r/o?
The traditional
solution is to reexec not on shutdown, but immediately
after init upgrade (which also frees the inodes early); this can still
race with shutdown in theory, but is probably good enough in practice.
Mirek