#Hard Drive Problems
6 messages in this thread
Don,
If anyone tells you that they hae a complete handle on the Amiga
file system, listem closely. Either the man is VERY good or he is VERY
wrong. I hae programed on the Amiga for several years and I am still leary
of messing with my drives. I am not very happy about having to reformat my
DH0:, but if that is what it takes. Lucky thing I have a backup that is
only a few days old!
Thanks for the help!!! I have leaqrned alot.
<<<BP>>>
Bruce,
I know enought about the file system to repair some errors, such as
the "key xxx already in use" or how to make an invalidated filesystem valid
no matter what's wrong with it. I've moved pointers around, etc.
But I do agree with you…it's not an easy task, and I'm certainly
no "guru" (why did we start to use guru rather than "maven"?) on the Amiga
filesystem.
Don
In any case you're more of a maven than I am! I've been fiddling around
with DiskX lately to get rid of file/disk corruption that results when you
reboot in the middle of disk writing, and I was fairly successful. But
most of what I learned came from brute force/trial and error, and there's
GOT to be a better way! Can you recommend a book or magazine article or
text file on CIS that explains the ins and outs of the FFS?
Also, could you explain how to find out at which key the file header block
list is continued?
Thanks in advance for your help,
– Roger
Roger,
The book I used was the AmigaDOS manual, published by Bantam books,
written by Commodore.
There is no file header block list per-se. What there is, is the
root block since all filenames start at the root block of a filesystem.
The root block contains a list of header blocks for files/directories
attached directly to the root block of the filesystem. The file or
directory name is run thru a hashing algorithm and the result is an offset
within the root block. Located at that offset is the key number of the
block that contains a header block.
That header block can be either a file header, or a directory
header. If it's a file header, it contains pointers to what blocks the file
itself is using. If it's a directory header, it then acts like the root
block. It contains pointers (the key numbers) to files and/or directories
attached directly to that directory. Again a file or directory name would
be hashed, and offset generated and a jump to the keynumber at that offset
would be another header block…again, it could be either a file or
directory block.
Let's take the filename: df0:junk/downloads/files/george
The filesystem first "moves" to df0: and grabs the root block. It
then hashes the name "junk" and jumps to the header found at the hash
generated offset in the root block. It then hashes the name "downloads"
and jumps to the header found at the hash generated offset in the "junk"
directory block. The name "files" is now hashed, the offset located within
the "downloads" directory block and another jump is made. Finally,
"george" is hashed, the offset in the "files" directory is used to locate
the header block of the file "george". The system then reads the pointers
to the blocks containing "george" from that header, and starts to read them
in.
The above is a simplification of what goes on. There are extension
blocks for long files, extension blocks for hash offset collisions and so
forth. But it should give you a bit of a clue as to what's going on.
Don
Don:
"We" probably started using Guru, because it's the commonly accepted term
for it. The Amiga's use of the word Guru is the one that's no in keeping
with the rest of computerdom. Personally, I'd prefer maven as well.
-Mike Schiller
In sunny Fort Lauderdale
If I recall correctly, guru is Hindi for 'one who illuminates the path'.
Leave it to Western culture to twist that into meaning 'one who knows all'.
– Nelson …
(Byte all you want, we'll make more.)