Parallel Booting

Matthias Clasen mclasen at redhat.com
Tue Jun 26 13:18:28 UTC 2007


On Fri, 2007-06-22 at 17:18 +0200, Harald Hoyer wrote:
> Hello,
> 
> some of you may have read some wiki pages about the plans for the new init system [1]. As a first step in
> this direction [2], I packaged prcsys from Mandriva, patched initscripts with a very small patch, and uploaded
> the src.rpm to [3]. To enable parallel booting just build and install both packages and edit 
> /etc/sysconfig/init. Set PARALLEL_STARTUP=yes and there we go.


Harald, I had a quick look over the prcsys code, here are some initial
impressions

- No test suite

- Calls system() without checking for error

- Doesn't check for $ in facility names

- Doesn't differentiate between Required and Should, ie. Should is 
  treated as a hard requirement too, which seems to violate the LSB
  intent

- Checks for mandriva flags, X-Mandriva-Interactive,
  X-Mandriva-Compat-Mode

- Uses the same fixed length of 256 for facility names and paths

- There is a bunch of other hardcoded string lengths in there, 
  like char file[255], this should probably be cleaned up

- I regularly see "Cannot create temporary file" in --test output

- Some init script output seems to go into the log file (might
  be related to the previous point)

- It calls exit(1) a bunch - it probably shouldn't

- Typo in message: "Unknow mode" 

- This looks sneaky, with buflen being a function parameter:
        char temp_dep[2][buflen];


All of this is fixable of course, this is after all just 1400 lines of
code. I guess the question is if Mandriva is willing to develop this as
a cross-distro project. If yes, where is the bug tracker to file bugs
and patches about these problems ? If not, I don't see us winning too
much by reusing 1400 lines of mediocre C code.


Anyway, here are what I think are the top priorities if you want
to turn this into an rc implementation suitable for Fedora and RHEL:

- Add a test suite. I would expect at least tests for the parsing
  of the LSB headers, for the construction of the dependencies graphs,
  for correct serialization of the dependencies, handling of missing
  soft dependencies, and tests for compat mode

- Implement Should 

- Do a thorough audit of the code and make it handle errors carefully
  and systematically


Matthias




More information about the fedora-devel-list mailing list