The Unix Heritage Society mailing list
 help / color / mirror / Atom feed
From: Gavin Tersteeg <gctersteeg@gmail.com>
To: heinz@osta.com
Cc: tuhs@tuhs.org, jnc@mercury.lcs.mit.edu
Subject: [TUHS] Re: LSX issues and musing
Date: Tue, 2 Aug 2022 12:56:18 -0500	[thread overview]
Message-ID: <CA+99DoJHumFEutVP=ZJL33u4AKJFsg7U8iujxrw9MYH3TNUYpw@mail.gmail.com> (raw)
In-Reply-To: <dc201446-e3ad-e666-42b5-ddb4177b5d45@osta.com>

[-- Attachment #1: Type: text/plain, Size: 6919 bytes --]

I was heavily considering using Mini-UNIX for this project, but picked LSX
for a few reasons. The biggest reason is that Mini-UNIX has features that I
don't really need, and I figured it would be easier to add what I wanted to
LSX than remove what I didn't from Mini-UNIX. My target system (A Heathkit
H11) does have the full 56K of memory, but I would like to get as much user
space as possible. It will also be running on the equivalent of a RX02 disk
system, not a high speed spinning disk that Mini-UNIX seems to expect.
Regardless, if LSX proves to be too much of a hassle, I will probably just
switch to Mini-UNIX.

The inode allocation stuff seems to be what is causing the issues. When I
mount the filesystem on stock V6, create a file, and then remount it on
LSX, it (seems) to work again. Hopefully this code isn't too hard to add
back, but if need be I can live with the 100 file limit. Unless I decide to
try to get a hard drive hooked up, of course.

Right now I am working on getting the hardware up and running again. I am
hoping to bring all of this to VCFMW to show off, but since I have to go
back to college in a few weeks I have a lot of work ahead of me.

Thank you for the help,
Gavin

On Mon, Aug 1, 2022 at 12:37 AM Heinz Lycklama <heinz@osta.com> wrote:

> Remember that the LSX and Mini-UNIX systems were
> developed for two different purposes.
>      1. LSX had limited resources available to it and thus
>          some general-purpose features had to be removed.
>          LSX supported some new features for the support
>          of real-time systems and intelligent terminals. The
>          features included contiguous files and asynchronous
>          read/write capabilities.
>      2. Mini-UNIX was developed to run on PDP11/10 computers
>          without memory management support at the hardware level.
>          Larger main memory and faster larger disks were available.
>          It was designed to support up to four users at a time, and
>          thus needed to support the latest UNIX System features
>          without the additional features available on LSX.
>
> To answer the question below about kernel code to create
> contiguous - the only change in the kernel code was to
> recognize a contiguous file in the inode. The actual file
> had to be created by a system program to keep the
> kernel as small as possible.
>
> Heinz
>
> On 7/31/2022 12:57 PM, Noel Chiappa wrote:
> > {I was going to reply to an earlier message, but my CFS left me with
> > insufficient energy; I'll try and catch up on the points I was goibf to
> make
> > here.}
> >
> >      > From: Gavin Tersteeg
> >
> >      > This leaves me with about 1.9kb of space left in the kernel for
> >      > additional drivers
> >
> > I'm curious how much memory you have in your target system; it must not
> be a
> > lot, if you're targeting LSX.
> >
> > I ask because LSX has been somewhat 'lobotimized' (I don't mean that in a
> > negative way; it's just recognition that LSX has had a lot of corners
> > trimmed, to squeeze it down as much as possible), and some of those trims
> > behind some of the issues you're having (below).
> >
> > At the time the LSI-11 came out, semiconductor DRAM was just getting
> started,
> > so an LSI-11 with 8KB onboard and a 32KB DRAM card (or four 8KB MMV11
> core
> > memory cards :-), to produce the 40KB target for LSX systems, was then a
> > reasonable configuration. These days, one has to really search to find
> > anything smaller than 64KB...
> >
> > It might be easier to just run MINI-UNIX (which is much closer to V6, and
> > thus a known quantity), than add a lot of things back in to LSX to
> produce
> > what will effectively be MINI-UNIX; even if you have to buy a bit more
> QBUS
> > memory for the machine.
> >
> >
> >      > the LSX "mkfs" was hardcoded to create filesystems with 6 blocks
> of
> >      > inodes. This maxed the number of files on a disk to 96, but even
> with
> >      > the maximum circumvented LSX would only tolerate a maximum of 101
> files.
> >
> > And here you're seeing the 'lobotomizing' of LSX come into play. That
> '101'
> > made me suspicious, as the base V6 'caches' 100 free inodes in the
> > super-block; once those are used, it scans the ilist on disk to refill
> it.
> >
> > The code in alloc$ialloc in LSX is hard to understand (there are a lot of
> > #ifdef's), and it's very different from the V6 code, but I'm pretty sure
> it
> > doesn't refill the 'cache' after it uses the cached 100 free inodes. So,
> you
> > can have as many free inodes on a disk as you want, but LSX will never
> use
> > more than the first 100.
> >
> > (Note that the comment in the LSX source "up to 100 spare I nodes in the
> > super block. When this runs out, a linear search through the I list is
> > instituted to pick up 100 more." is inaccurate; it probably wasn't
> updated
> > after the code was changed. ISTR tis is true of a lot of the comments.)
> >
> > Use MINI-UNIX.
> >
> >     > A fresh filesystem that was mkfs'd on stock V6 can be mounted on
> LSX,
> >     > but any attempt to create files on it will fail.
> >
> > The V6 'mkfs' does not fill the free inode cache in the super-block. So,
> it's
> > empty when you start out. The LSX ialloc() says:
> >
> >       if(fp->s_ninode > 0) {
> >       ...
> >       }
> >       u.u_error = ENOSPC;
> >       return(NULL);
> >
> > which would produce what you're seeing.
> >
> > Also, another problem with trying to 'push' LSX into a previously
> un-handled
> > operating regions (e.g. large disks, but there are likely others) is that
> > there are probably things that are un-tested in that previously unused
> > operating mode, and there may be un-found bugs that you trip across.
> >
> > Use MINI-UNIX.
> >
> >      > Interestingly enough, existing large V6 RK05 images can be
> mounted,
> >      > read from, and written to. The only limitations on these pre
> existing
> >      > images is that if enough files are deleted, the system will
> randomly crash.
> >
> > I had a look at the source (in sys4.c, nami.c, iget.c, rdwri.c, and
> alloc.c),
> > but I couldn't quickly find the cause; it isn't obvious. (When unlinking
> a
> > file, the blocks in the file have to be freed - that's inode 'ip' - and
> the
> > directory - inode 'pp' - has to be updated; so it's pretty complicated.)
> >
> > Use MINI-UNIX.
> >
> >
> >     > The information there about continuous files ... will be extremely
> >     > helpful if I ever try to make those work in the future.
> >
> > My recollection is that the LSX kernel doesn't have code to create
> contiguous
> > files; the LSX page at the CHWiki says "the paper describing LSX
> indicates
> > there were two separate programs, one to allocate space for such files,
> and
> > one to move a file into such an area, but they do not seem to be
> extant". If
> > you find them, could you let me know? Thanks.
> >
> >       Noel
>
>

[-- Attachment #2: Type: text/html, Size: 8234 bytes --]

  reply	other threads:[~2022-08-02 17:58 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-31 19:57 Noel Chiappa
2022-08-01  5:37 ` Heinz Lycklama
2022-08-02 17:56   ` Gavin Tersteeg [this message]
2022-08-03  4:32     ` steve jenkin
2022-08-03  4:55       ` Ron Natalie
2022-08-03  5:09       ` G. Branden Robinson
  -- strict thread matches above, loose matches on Subject: below --
2022-08-05  4:35 Paul Ruizendaal via TUHS
2022-08-03 15:17 Noel Chiappa
2022-07-11 23:47 Noel Chiappa
2022-07-15  8:07 ` Gavin Tersteeg
2022-07-27  8:02   ` Gavin Tersteeg
2022-07-27 16:24     ` Heinz Lycklama
2022-07-30  4:39       ` Gavin Tersteeg
2022-07-11 21:47 Paul Ruizendaal via TUHS
2022-07-11 21:24 Noel Chiappa
2022-07-11 21:37 ` Gavin Tersteeg
2022-07-11 21:06 Noel Chiappa
2022-07-11 19:47 [TUHS] " Gavin Tersteeg
2022-07-11 20:01 ` [TUHS] " Warner Losh
2022-07-11 20:26   ` Clem Cole
2022-07-11 20:30     ` Warner Losh
2022-07-11 20:37 ` Phil Budne

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CA+99DoJHumFEutVP=ZJL33u4AKJFsg7U8iujxrw9MYH3TNUYpw@mail.gmail.com' \
    --to=gctersteeg@gmail.com \
    --cc=heinz@osta.com \
    --cc=jnc@mercury.lcs.mit.edu \
    --cc=tuhs@tuhs.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).