Sophie

Sophie

distrib > Mageia > 5 > i586 > media > core-release > by-pkgid > ad8acdd608199608e6f091cab94f5c2e > files > 21

makedev-4.4-19.mga5.noarch.rpm

#-*- outline -*-

* bugs : see BUGS section in makedev(8)

* history : see HISTORY section in makedev(8)

* updating the dev package while devfs is mounted on /dev
Updating dev package is easy once we mount / elsewhere with --bind
option (eg: "mount --bind / /lib/root-mirror") in %pre and umount it
in %post.

Then can go on several ways:

- moving all dev entries from /dev to /lib/root-mirror/dev
  Drawback: rpm'll complain the dev files're missing on verify pass.

- mounting /lib/root-mirror/dev/ on /dev after the first mount in
  %pre, and umouting it in %post
  drawback: if something open some file in /dev while updating, devfsd
  can become crazy (adressable by stopping devfsd while updating dev)
  or we won't be able to umount /dev, and then /lib/root-mirror/

- using the -S option of the redhat MAKEDEV : 
  this results in MAKEDEV outputing the shell commands equivalent to
  what he does
  drawback: he generate a 53983 lines scripts that takes minutes to
  execute.

* accelerate the MAKDEV program
profiling this silly program show that he did tons of useless loops on
its whole config files. eg; calling "MAKDEV std" take a few minutes
and it did 150 000 makenodes() calls in order to create 2200 device
entries :-( 

its whole control flow is gratuitously garbage (scores of program
execution, each one resulting in parsing all files,

then came the gen* scripts that generate config fles that're slow to
handle by MAKDEV.

so we :
- comment all useless entries
- patch the gen* scripts so that they create "faster to handle" config
  files
- write a new 69 lines perl script called mdk_makedev that takes a few
  seconds to do the job done by the old MAKDEV program
  and the 9.5 seconds it takes on my 700 mhz machine're mostly spent
  in the kernel, in the ext2 filesystem module that spent cpu cycles
  to expand the dev directory.
  this'll hopefully be faster when ext3 cvs will get its hash table
  managment into the main kernel or if you use reiserfs.