From: peace@geiger.rtp.dg.com (John Peace)
Subject: Re: Multi-threaded fs for MINIX 1.5.10
Summary: RSN for Atari 1.5.10.4
Date: Thu, 24 Dec 92 18:51:39 GMT
Organization: Data General Corporation, RTP, NC.
Keywords: ATARI MTFS

In article <1992Dec18.141909.26655@udel.edu> <HENRIKS@odin.uniras.dk> writes:
>
>We've had the discussion about the Minix fs being single threaded
>some time ago. Someone actually went on and coded a multi threaded fs
>for Minix 1.6.16. So far so good.
>
>Has anyone ever done the same at the 1.5.10 level?

I've been running the MTFS on my Atari Minix 1.5.10 (patchlevel 4) for
about 6 months now.  It has been stable for the last 5 of those months.
(I had a couple of nights of fun reconstructing a disk with "fsdb"
during that first month! :-)  I plan to post my port to the Net shortly
after the turn of the year.

I highly recommend the MTFS.  Interactive response in Minix is much
better with it, especially when you want TTY output concurrent with
disk I/O.  This was especially important to me 6 months ago, before I
got a hard disk.  And when you combine the MTFS with one of the
scheduler enhancements that have been posted (such as that of Kai-Uwe
Bloem, which I use), you can do a Make in one virtual console while
editing, etc. in another with very little noticeable performance drop.

There's still one annoying glitch with my port - occasionally programs
reading from pipes will start hanging in XPIPE state.  This seems to
happen most often following simultaneous use of a couple of pipes
(e.g., "cdiff | more", where "cdiff" uses a pipe internally).  Once
the problem occurs, it does not go away until the system is rebooted.
I'm going to try to fix this problem once and for all over the
holidays.  Then I'll pull together the patches and post them ASAP.

>I'm running an 'almost out of the box' Minix 1.5.10 on a PC/AT 286 ...

Fortunately, the MTFS patches target FS code, so they should be
portable to other platforms.  However, there were a few changes that I
had to make in the kernel area on the Atari.  The kernel patches give
each device driver task a private scattered I/O structure.  On the
base Atari 1.5.10 Minix, a single structure is shared by all tasks
that accept scattered I/O.  This was safe only because no more than
one scatter-gather I/O request could be active at any one time, due to
the single-threaded FS.  As I found out, the multiple I/O requests
generated by a MTFS could trash things pretty badly with the shared
data structure!  Note that no kernel changes were provided as part of
the MTFS patch for 1.6.16, so I assume the 1.5.10 kernel is different
in this area.

Since the MTFS patches target FS and not the kernel, I think my Atari
port should work for PC users, as well.  I am not sure if the kernel
patches will be needed on a PC; but if so, I think they are straight-
forward enough that applying them to PC's would not be too difficult.
(Although it will probably have to be done by hand instead of by the
"patch" utility, since some of the files are specific to the ST).

>-------------------------------------------------------------------------------
>Henrik Schultz, UNIRAS A/S, Copenhagen, Denmark
>INTERNET mail: henriks@odin.uniras.dk
>-------------------------------------------------------------------------------

Happy Holidays! -- JRP
----
John R. Peace			CSnet:       peace@dg-rtp.dg.com
Data General Corporation	UUCP:        ...!mcnc!rti!xyzzy!peace
Research Triangle Park, NC	Disclaimer:  Speaking for me, not DG.
----
John R. Peace			CSnet:       peace@dg-rtp.dg.com
Data General Corporation	UUCP:        ...!mcnc!rti!xyzzy!peace
Research Triangle Park, NC	Disclaimer:  Speaking for me, not DG.
Newsgroups: comp.os.minix