Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 30 Oct 1998 00:12:12 +0100 (CET)
From:      Andrzej Bialecki <abial@nask.pl>
To:        Terry Lambert <terry@whistle.com>
Cc:        Bryan Mann <bmann@whistle.com>, small@FreeBSD.ORG
Subject:   Re: Unified Configuration Interface
Message-ID:  <Pine.BSF.4.02A.9810292344200.3317-100000@korin.warman.org.pl>
In-Reply-To: <3638C745.39FD@whistle.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, 29 Oct 1998, Terry Lambert wrote:

> I don't think this is more complicated than dealing with "make
> depend" and/or "make -j8".  You *could* replace the entire rc
> file system with /etc/startup/Makefile, and everything you
> install that need startup gets a subdir, as in somthing like
> /etc/startup/smtp/Makefile, and there is an implied recursive
> descent into subdirectories.

Hehe.. So, we think similar sometimes... :-) This idea also occured to me
when I started thinking about dependencies.

> I think the important point is hidden in my naming the subdir
> "smtp" instead of naming it "sendmail".

Yes, definitely. I don't care what is the name of such and such process,
as long as *someone* provides this particular service for me.

> The roundevous point has got to be the definition of what is
> exported by a server, and what is imported, not the server
> name, and not the definition.
> 
> For example, sendmail exports "smtp", and it imports "dns"...
> so you don't want to start sendmail until its imports are
> satisfied.

Now, yet another idea occured to me: in fact, the initial startup could
just try to start some highest level function of the system, and this
function (since it has multiple dependencies) would try to satisfy its
needs by requesting an "INIT" action from all service providers it is
dependent upon.

This is a nice picture, indeed.. it also means that if for some reason
one of these providers stops working properly, the higher level function
requests from it a restart procedure, which it can pass to the next level
down, which it knows is not working properly, etc...

> Now consider a server that exports "dns", and wants to send
> out usage reports via "smtp".  There is a dependency of this
> server on "smtp", and there is a dependency of the server
> that supplies "smtp" on "dns".
> 
> But there is a distinction: the dependency to send reports
> is *soft*, while the dependence of the "smtp" exporting
> server is *hard*.

I'd call them "critical" and "non-critical" to distinguish between the
situation when subsystem is still able to function (though perhaps
impaired) and the situation when such lack of provider is so severe that
the service cannot possibly be performed.

> We can think of the "dns" exporting server as actually being
> in the business of prividing *two* services: the hard service
> "dns", and the abstract service "dns usage reports".  These
> are seperate, and the "dns" service can be brought up before
> the "dns usage reports" service.
> 
> 
> We can also see that both these servers will probably have
> other dependencies, like "syslog", a service that needs to
> be defined as existing defacto, if it is on another server
> (we can say the same thing of "smtp" and "dns"; nothing states
> that these services must all reside on the same host).
> 
> 
> So I think the problem is resolvable; it's just an issue of
> establishing that you're really dependent on services, not
> daemons, and then using a sufficient granularity for your
> definition of services to avoid starvation deadlocks.

Hmmm... I don't think this resolves the issue of deadlocks - it just moves
it to more abstract level of services, instead of real objects/processes.
The real problem (i.e. mutual "critical" dependency, like

                depends on
               1<----------2<--------3
               |                    /|\
               +---------------------+

) still exists.


> Of course, we are ignoring the real issue here, which is that
> most services only exist in the first place because we insist
> on having a procedurally abstracted configuration space.  Why

??? I can't parse it...


Andrzej Bialecki

--------------------   ++-------++  -------------------------------------
 <abial@nask.pl>       ||PicoBSD||   FreeBSD in your pocket? Go and see:
 Research & Academic   |+-------+|       "Small & Embedded FreeBSD"
 Network in Poland     | |TT~~~| |    http://www.freebsd.org/~picobsd/
--------------------   ~-+==---+-+  -------------------------------------


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-small" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.02A.9810292344200.3317-100000>