User Tools

Site Tools


Release Notes of MINIX 3.1.3

MINIX 3.1.3 was released friday, april 13th 2007. On 8 june 2007, 3.1.3a, containing some fixes to 3.1.3, was released.

Bugs Fixed in 3.1.3a

Found after release time and fixed in 3.1.3a:

  • mkfs does not check for overflow of firstdatazone field in superblock.
  • a missing check in rename caused moving directories to hang sometimes.
  • autopart truncates new partitions at 4GB. If you want to create a larger partition, use part (expert mode) to do that first.
  • dp8390 (for qemu) is broken due to pci changes. This is fixed by the following change to src/drivers/dp8390/rtl8029.c at line 121:
    -       pci_reserve(devind);
    +        if(pci_reserve_ok(devind) != OK)
    +               return 0;
  • Friday's 3.1.3 release contained an outdated cpp binary that broke xdm; please get the updated 3.1.3. (Nothing has changed in the MINIX base system source.)

Known at release time, and will be corrected in the future:

  • The interface between VFS and its filesystems is certain to change when code cleanup of VFS/MFS is finished.
  • 4 MFS (filesystem) processes are started, all the same size as the old FS, of which one is not used after initial boot. So this release uses up (and wastes) much more memory than the previous release. This will be corrected in the future.
  • The AMD LANCE driver has to be loaded below 16MB. Currently there is no way to indicate this to the system; the only way is to have enough space under 16MB at the time it's being loaded. Therefore, when using AMD LANCE, you have to select a 'small' MINIX making 2 MFS processes 500k instead of 4MB.
  • Core dumps are broken.

Please report other bugs

If you find any not-yet reported bugs in this release, please file a bug at the MINIX gforge bug tracker.

Changes in MINIX 3.1.3 since 3.1.2a

We've switched from CVS to Subversion on gforge. For access to the SVN repository, see tracking current. The below summarizes the most significant changes, roughly in order of significance. SVN has a complete changelog.

Significant visible changes

  • 64-bit file offsets allowing >4GB filesystems.
  • VFS implementation by Balasz Gerofi.
  • System statistical and call profiling by Rogier Meurs.
  • doc/UPDATING in the svn repository documents things to look out for when updating from source.
  • Import of zoneinfo system, so abbreviations like TZ=CET and such can be used, fixing a bug in the previous daylight savings time code, found by Al Woodhull.

Significant internal changes

  • Infrastructure to control which drivers can call which kernel calls, and register which which IRQ's and access which I/O ports. Full support from the PCI server to automate this to a large extent. Special cases and other configuration in /etc/drivers.conf.
  • Introduced 'safecopies', a restricted form of the MINIX copying functions that requires explicit permission from the target before copying happens. Normal device drivers now don't need physcopies/vircopies any more, so they can be denied these calls. Also, change fs/driver interface and inet/driver interfaces to use safecopies.
  • PM as been made non-blocking, doing asynchronous requests to FS (now VFS) when it has to be updated on something. This is mainly significant for device driver recovery.
  • Architecture dependent- and independent split in kernel source tree, (accomodating currently-defunct PPC port by Ingmar Alting). Architecture-independent code is in /usr/src/kernel/*.[ch], architecture-dependent code is in /usr/src/kernel/ARCH/.
  • Interface with RS is based on labels, instead of pids.
  • New boot procedure. First-stage booting now happens from a ramdisk image that is compiled into the memory driver. Drivers for the root device are started and the actual root device is mounted from there. This makes the system need less boot-specific code in e.g. FS, needing no drivers compiled into the image, and makes it more generic.
  • Allow more than 32 fd's per process (OPEN_MAX).
  • All 3rd-party ack libraries go into /usr/local/lib/ack, and 3rd-party gcc libraries go into /usr/local/lib/gcc.
  • new CMOS driver that runs once on boot, instead of remaining active; also can be invoked again afterwards to update the CMOS clock.
  • off_t is signed now.
  • Introduced RTS_SET/RTS_UNSET macros, making kernel code simpler, and reducing code (logic) duplication.

Significant bugfixes

There are many small bugfixes, probably not worth listing all here. See the 3.1.2a-3.1.3 changelog for a complete list.

  • Some drivers (TTY) still sent REVIVE messages, causing a deadlock bug with FS. (REVIVE is totally gone now.)
  • Various bugs in at_wini causing odd behaviour on some systems; not initializing word 6 in ATAPI SCSI_READ10 for instance.
  • fix a race condition between CLOCK and SYSTEM when CLOCK becomes ready (due to an interrupt) while SYSTEM is running
  • Start multiple at_wini's for systems with more than two IDE/SATA controllers.
  • Fix wait()/waitpid() hanging forever on previously-ZOMBIE processes
  • Fix race condition when runnable processes get a signal; signal stack location can be wrong
  • strcasecmp() and strncasecmp() replaced by BSD library version due to a bug.
  • If sys_privctl() was invoked, the s_flags field for user processes would be clobbered, making them un-PREEMPTIBLE.
www/download/releasenotes-3.1.3.txt · Last modified: 2014/11/19 14:24 by lionelsambuc