[Info-vax] Request description of UFS for VMS person
Bob Eager
rde42 at spamcop.net
Tue Apr 21 02:44:48 EDT 2009
On Tue, 21 Apr 2009 01:17:48 UTC, AEF <spamsink2001 at yahoo.com> wrote:
> That's the problem: that's ALL they do. I've checked Wikipedia.
> Superficial description. A while back I checked Wikipedia about
> several file systems and the only one described in reasonable detail
> was -- drum roll . . . . . . . . . -- VMS!
Did you look at the references in the Wikipedia article?
> How are inodes found by the OS?
(the following isn't the whole story, I know, but it may help).
They start at a fixed block number. That number is in the super block.
> Directories seem to be
> mostly the same as in VMS: a one-to-one mapping of filenames to inode
> numbers (FID's in VMSland). I did notice some strange extra bytes in
> the equivalent of DUMP blah.DIR;1 output. I wonder what they are. Once
> the inode number is found from the filename, how does Unix find the
> actual inode?
Simple arithmetic; the i-list (which isn't a file, unlike INDEXF.SYS) is
contiguous and preallocated. Once one knows the start blck, finding an
i-node is trivial.
> One Web page I read says some confusing words about a
> single block in the super block listing a free block's address and a
> pointer other "data blocks" containing 10 of them and more pointers
> and I don't know -- it didn't make any sense to me.
What it says. The free block data structure is a list (several lists)
rather than a bitmap.
> (Speaking of DUMP <blah>.DIR;1: Why do only some versions of 'od' read
> directory files? The version I have on a Solaris 10.something box -- I
> think it's the gnu or gcc or Linux-like or whatever version --
> complains that "Its a directory"? Well, duh. Another machine with
> Solaris 8 could read it just fine. We're talking about dumping bytes
> in a file. Is there something hard about this in Unix?)
Nothing at all; just a silly restriction. I bet that 'cat dirname od'
would work.
> In VMS you have INDEXF.SYS. When RMS, XQP, or whatever it is, is asked
> to find the data in a file, it reads the directory, finds the
> requested filename, learns its FID, goes to INDEXF.SYS finds the VBN
> for the file-header offset by some formula I can't recall offhand, and
> finally reads the file header with that number. And that file header
> tells you all about the file and which blocks contain its data.
Pretty well exactly what UFS does. Reads the directory, finds teh
requested filename, learns the i-number, goes to the i-list, directly
gets the i-node. And the i-node tells you all about the file and which
blocks contains its data.
> There
> is the bitmap in the INDEXF.SYS file that keeps track of whether a
> file header is in use.
There isn't a bitmap, but it keeps track somehow.
> There is the 3-number FID: number, sequence
> number, relative volume number. Unix appears to only have the first.
Sequence number is merely a sanity check and isn't operationally
necessary (although it's quite a good idea). RVN is only necessary if
files span multiple volumes, which on modern disks is unlikely anyway.
> There's the home block
Super block.
> the boot block
It's not a file, but it's defined in the manual pages for 'boot'.
> the backups thereof
Defined in the 'newfs' program.
> BITMAP.SYS
There isn't one.
> I want to learn how UFS works at the level mentioned above. I don't
> have any particular problem to solve. I just want to learn it out of
> curiosity and in case I need it later.
I'd start by reading the papers mentioned. The Berkeley FFS is a
development of UFS with nice things such as snapshots. Go to
www.freebsd.org and follow the documentation links....
--
Bob Eager
More information about the Info-vax
mailing list