From: paul@pentode.uucp (Paul Walker)
Subject: 2nd time:  salvol question/problem (long)
Organization: none
Date: Fri, 22 Jan 1993 05:29:30 GMT

    I posted this once, and I haven't receved any replies.  I guess those that
have some clues are just studying up so they can give an accurate answer :-)
I was hoping that someone out there would have some knowledge in this area ...
so here we go again....


    Recently, I had a bad vtoc bucket show up on my disk.  It was unreadable,
and I finally chose to repair it by writing 0's to it (pehaps mistake #1).  I
then ran salvol, and everything seemed to work OK - meaning no unusual messages.
I ran salvol with the -a option.  Next time expire_news ran, I saw that I had
files that were in a directory, but attributes weren't available.  I began to
question the quality of the salvage done by salvol.  So, I set up a test case. 
The sequence belows shows what I think might be a bug.  This work was done on a
DN3500, with an 8621 controller and a Micropolis 170Mb drive.

As an attempt to try and document my experiment, here is a summary:
    A) Initialize logical volume 1.
    B) Mount the volume, and use the DM to create a file called testfile.
    C) Get the uid of the file, and ensure that its there.  Then dismount the
        volume.
    D) Run fixvol [here is where things get fun :-) ].
    E) Track down all pertinent structures related to the file (vtoce, bucket
        entry, BAT, and even look at the data block).
    F) Use the edit to clear the bucket entry (simulating the 'fix' I did when
        the block wasn't readable due to a header error).
    G) Mount the volume to see if the file has lost its attributes.  It hasn't,
        which I think is strange, but probably due to a smart kernel thinking
        that nothing has changed, so use cached information).
    H) Dismount the volume
    I) Repeat G & H, because I didn't think things would work that way.
    J) Run fixvol again, to see if that convices the kernel that the cached
        information is bogus.
    K) Mount/ld/dismount - still thinks everything is OK.
    L) Salvol - I know its broken, lets see what salvol thinks.  Use the -v,
        just to see if anything is found that I don't want fixed.
    M) Try salvol with -v again, to check that nothing was changed (nope).
    N) Mount/ld/dismount - check for file stats.  Cache still intact.
    O) Salvol, default options - lets fix this :-(
    P) Mount - gee the file is broken (because it can't find the vtoce because
        the bucket was zapped.  Why wasn't the file that was dropped found and
        catalogued with lost+found ?
    Q) Try find_orphans to see if that will find it.  Nope - still broken.
    R) Dismount
    S) Fixvol - lets see what happened.
    T) The bucket is still empty (not fixed).
    U) What used to be a file_$file_type for uid 5D93314D.10022D27 is now a
        file_$dir_type for uid 5D9339E3.90022D27.  Why?  This seems to be a new
        (and bogus) directory block.
    V) Look at daddr 10c51 (I don't know why, but I don't think its relevant).
    W) Look at daddr 10c52 again - yep, its still a dir type.  Looking at it
        shows that stuff is in it.
    X) Try looking at the block.  After much trouble, it looks to be empty.
    Y) The BAT command shows that the block is in use (makes sense).
    Z) Try to check out this new directory uid.  Its a directory that contains
        itself in its filemap (is this normal?).

    I'm confused, but here are my points/questions:

Why did salvol create this bogus directory block?
Why didn't it find my lost file?
Why did it corrupt my lost file?
Is there a better way to try and recover from this?
Would it have been better to try a val vtoc in fixvol and do more manual repair
 before running salvol?


    Any help would be appreciated.


AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
$ invol


invol (initialize_volume), revision 10.3, June 22, 1990  1:20:24 am


Options are:
  0            - EXIT.
  1 [-fnb5uom] - initialize virgin physical volume.
  2 [-fnb5u]   - add a logical volume.
  3 [-fnb5]    - re-initialize an existing logical volume.
    The following flags apply to options 1 thru 3, as indicated:
       f: don't re-format disk    u: don't prompt user - use defaults
       o: make sr9 format disk    n: make non-bootable volume
       b: apply bsd unix acls     5: apply sys5 unix acls
       m: build a multi-disk (e.g., striped) group
  4            - delete a logical volume.
  5            - list logical volumes.
  6 [-e]       - list badspots on disk or volume ... -e: list in decimal.
  7 [-f]       - initialize physical badspot list.
  8            - create or modify an os paging file.
  9            - add to existing badspot list.
 10            - display/change sector interleave factor.
 11            - remove from existing badspot list

Option: 3

Select disk: [w=Winch|s=Storage mod|f=Floppy|q=Quit][ctrl#:][unit#] w

Volume built by Invol version "revision 10.4"  on  Dec. 30, 1992

Physical volume "pv170loan".  Logical volumes:

 #  size (kB)    name
 1  146879(d)    lvol1

Enter logical volume number:  1

Verification options are:
   1 - no verification
   2 - write all blocks on the volume
   3 - write and re-read all blocks on the volume

Enter verification option: 1
Expected average file size, in kB (CR for default, 5 kB):  

Writing logical volume 1.
   Formatting...  % complete: 
       20
       40
       60
       80
      100

Initialization complete.

Anything more to do? n
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
$ mtvol w win1
$ ld win1/... -a

sys   type      blocks  current
type  uid         used   length   attr rights       name

sdir  nil            1      1024  P    prwx-        win1
file  nil            0         0  P    prwx-        win1/lost+found.list
dir   nil            1      1024  P    prwx-        win1/sys
dir   nil            1      1024  P    prwx-        win1/sys/node_data
dir   nil            1      1024  P    prwx-        win1/sys/node_data/system_logs
file  boot          10     10240  P    prwx-        win1/sysboot

6 entries listed, 14 blocks used.
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
$ ld win1/... -a -u

sys   type      blocks  current
type  uid         used   length   attr rights              uid         name

sdir  nil            1      1024  P    prwx-         5D932DAA.90022D27 win1
file  nil            0         0  P    prwx-         5D932DAA.D0022D27 win1/lost+found.list
dir   nil            1      1024  P    prwx-         5D932DAA.B0022D27 win1/sys
dir   nil            1      1024  P    prwx-         5D932DAA.C0022D27 win1/sys/node_data
dir   nil            1      1024  P    prwx-         5D932DAA.E0022D27 win1/sys/node_data/system_logs
file  boot          10     10240  P    prwx-         5D932D67.80022D27 win1/sysboot
file  unstruct       1        15  P    prwx-         5D93314D.10022D27 win1/testfile

7 entries listed, 15 blocks used.
$ dmtvol w win1
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
$ fixvol

Warning: this program is intended only for the use of Apollo service
representatives.  Misuse of this program may irreparably damage your
disk.  To exit, type "q" to the following prompt.

Fix-Volume utility, revision 10.3, 08/08/90

Select disk: [w=Winch|s=Storage mod|f=Floppy|q=Quit][ctrl#:][unit#][s]   w

(fv [p])> lv 1
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
(fv [1])> vu 5D93314D.10022D27
UID hashes to bucket block at daddr = 11FCA, bucket # 2(hex)
... UID contained within bucket block at daddr = 11FCA, bucket # 2, index # 0
... VTOCE contained within block at daddr = 10C51, index # 1
VTOCE # 1 ... at mem address 3B328D58
---Link to next partial block: 0, vtoce count (v_cnt): 2

version = 1, sys_type = 0 (file_type)
con_ctrl = 0 (none), permanent  not-immutable  not-audited 
object uid= 5D93314D.10022D27 
  type uid= 321.00000000 unstruct_$uid
   dir uid= 5D932DAA.90022D27 
cur_len = F, blocks_used = 1(d), ref_cnt = 1, lock_key = 0
dtu= (5D93323D.0000)  Thursday, January 14, 1993   10:38:57 pm (PST)
dtm= (5D933248.81E4)  Thursday, January 14, 1993   10:39:00 pm (PST)
dta= (5D933248.F170)  Thursday, January 14, 1993   10:39:00 pm (PST)
dtv= (5D933248.81DF)  Thursday, January 14, 1993   10:39:00 pm (PST)
Mgr_Data_a = 01009000 00000000
Mgr_Data_b = 00000000 00000000
Real Device # = 0100
owner uid  (unix_id):  51106746.3000AFA2 (    64)   -PRWX-
group uid  (unix_id):  00800040.00000000 (     C)   -PRWX-
org   uid  (unix_id):  00800080.00000000 (     C)   -(ignore_rts)-
World/Stat rights:      -PRWX-    -NO RIGHTS PRESENT-
Extended acl uid: 00000000.00000000
  0:    10C52        0        0        0        0        0        0        0
  8:        0        0        0        0        0        0        0        0
 16:        0        0        0        0        0        0        0        0
 24:        0        0        0        0        0        0        0        0
L1, L2, L3 filemaps:        0        0        0 

(fv [1])> r 10c52
   uid:       5D93314D.10022D27 
   page:      0
   dtm:       5D933248   Thursday, January 14, 1993   10:39:00 pm (PST)
   blk_type:  0 
   sys_type:  0 (file_$file_type)
   pad:       00000000 00000000
   checksum:  0000
   daddr:      10C53: ( 1DD- 0- 3)

(fv [1])> show
unrecognized block type

(fv [1])> edit
ed> d 0 3fc

    0 :  74686973 20697320 61207465 73740A00        0        0        0        0
   20 :         0        0        0        0        0        0        0        0
   40 :         0        0        0        0        0        0        0        0
   60 :         0        0        0        0        0        0        0        0
   80 :         0        0        0        0        0        0        0        0
   A0 :         0        0        0        0        0        0        0        0
   C0 :         0        0        0        0        0        0        0        0
   E0 :         0        0        0        0        0        0        0        0
  100 :         0        0        0        0        0        0        0        0
  120 :         0        0        0        0        0        0        0        0
  140 :         0        0        0        0        0        0        0        0
  160 :         0        0        0        0        0        0        0        0
  180 :         0        0        0        0        0        0        0        0
  1A0 :         0        0        0        0        0        0        0        0
  1C0 :         0        0        0        0        0        0        0        0
  1E0 :         0        0        0        0        0        0        0        0
  200 :         0        0        0        0        0        0        0        0
  220 :         0        0        0        0        0        0        0        0
  240 :         0        0        0        0        0        0        0        0
  260 :         0        0        0        0        0        0        0        0
  280 :         0        0        0        0        0        0        0        0
  2A0 :         0        0        0        0        0        0        0        0
  2C0 :         0        0        0        0        0        0        0        0
  2E0 :         0        0        0        0        0        0        0        0
  300 :         0        0        0        0        0        0        0        0
  320 :         0        0        0        0        0        0        0        0
  340 :         0        0        0        0        0        0        0        0
  360 :         0        0        0        0        0        0        0        0
  380 :         0        0        0        0        0        0        0        0
  3A0 :         0        0        0        0        0        0        0        0
  3C0 :         0        0        0        0        0        0        0        0
  3E0 :         0        0        0        0        0        0        0        0
ed> q

(fv [1])> r 11fca
   uid:       204.00000000 vtoc_bkt_$uid
   page:      11FCA
   dtm:       5D933248   Thursday, January 14, 1993   10:39:00 pm (PST)
   blk_type:  0 
   sys_type:  0 (file_$file_type)
   pad:       00000000 00000000
   checksum:  0000
   daddr:      11FCB: ( 1FF- 5- 1)

(fv [1])> show
VTOC Bucket # 0   (at mem address 3B328C00):
  next block = 0, next bucket = 0
[ 0] ... empty
[ 1] ... empty
[ 2] ... empty
[ 3] ... empty
[ 4] ... empty
[ 5] ... empty
[ 6] ... empty
[ 7] ... empty
[ 8] ... empty
[ 9] ... empty
[ A] ... empty
[ B] ... empty
[ C] ... empty
[ D] ... empty
[ E] ... empty
[ F] ... empty
[10] ... empty
[11] ... empty
[12] ... empty
[13] ... empty
Display next bucket within block?y
VTOC Bucket # 1   (at mem address 3B328CF8):
  next block = 0, next bucket = 0
[ 0] ... empty
[ 1] ... empty
[ 2] ... empty
[ 3] ... empty
[ 4] ... empty
[ 5] ... empty
[ 6] ... empty
[ 7] ... empty
[ 8] ... empty
[ 9] ... empty
[ A] ... empty
[ B] ... empty
[ C] ... empty
[ D] ... empty
[ E] ... empty
[ F] ... empty
[10] ... empty
[11] ... empty
[12] ... empty
[13] ... empty
Display next bucket within block?y
VTOC Bucket # 2   (at mem address 3B328DF0):
  next block = 0, next bucket = 0
[ 0] ... vtocx =   10C511,   5D93314D.10022D27 
[ 1] ... empty
[ 2] ... empty
[ 3] ... empty
[ 4] ... empty
[ 5] ... empty
[ 6] ... empty
[ 7] ... empty
[ 8] ... empty
[ 9] ... empty
[ A] ... empty
[ B] ... empty
[ C] ... empty
[ D] ... empty
[ E] ... empty
[ F] ... empty
[10] ... empty
[11] ... empty
[12] ... empty
[13] ... empty
Display next bucket within block?y
VTOC Bucket # 3   (at mem address 3B328EE8):
  next block = 0, next bucket = 0
[ 0] ... empty
[ 1] ... empty
[ 2] ... empty
[ 3] ... empty
[ 4] ... empty
[ 5] ... empty
[ 6] ... empty
[ 7] ... empty
[ 8] ... empty
[ 9] ... empty
[ A] ... empty
[ B] ... empty
[ C] ... empty
[ D] ... empty
[ E] ... empty
[ F] ... empty
[10] ... empty
[11] ... empty
[12] ... empty
[13] ... empty

(fv [1])> bat 10c52
   bat blk daddr = 120BA ... longword offset = 188 ... bit mask = 80
Block is marked inuse in the BAT

(fv [1])> r 11fca
   uid:       204.00000000 vtoc_bkt_$uid
   page:      11FCA
   dtm:       5D933248   Thursday, January 14, 1993   10:39:00 pm (PST)
   blk_type:  0 
   sys_type:  0 (file_$file_type)
   pad:       00000000 00000000
   checksum:  0000
   daddr:      11FCB: ( 1FF- 5- 1)
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
(fv [1])> edit bkt
bkt> bkt[2]
bkt.bkt[2]> ent[0]
bkt.bkt[2].ent[0]> uid
 (1F8) uid[0]        == 5D93314D  : 0
 (1FC) uid[1]        == 10022D27  : 0
bkt.bkt[2].ent[0]> loc
 (200) loc           ==   10C511  : 0
bkt.bkt[2].ent[0]> q

(fv [1])> w
writing from stack bfr 1 to daddr 11FCA (physical 11FCB), ok (y or n)? y

(fv [1])> q
GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
$ mtvol w win1
$ ld win1/... -a

sys   type      blocks  current
type  uid         used   length   attr rights       name

sdir  nil            1      1024  P    prwx-        win1
file  nil            0         0  P    prwx-        win1/lost+found.list
dir   nil            1      1024  P    prwx-        win1/sys
dir   nil            1      1024  P    prwx-        win1/sys/node_data
dir   nil            1      1024  P    prwx-        win1/sys/node_data/system_logs
file  boot          10     10240  P    prwx-        win1/sysboot
file  unstruct       1        15  P    prwx-        win1/testfile

7 entries listed, 15 blocks used.
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
$ dmtvol w win1
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
$ mtvol w win1
$ ld win1/... -a

sys   type      blocks  current
type  uid         used   length   attr rights       name

sdir  nil            1      1024  P    prwx-        win1
file  nil            0         0  P    prwx-        win1/lost+found.list
dir   nil            1      1024  P    prwx-        win1/sys
dir   nil            1      1024  P    prwx-        win1/sys/node_data
dir   nil            1      1024  P    prwx-        win1/sys/node_data/system_logs
file  boot          10     10240  P    prwx-        win1/sysboot
file  unstruct       1        15  P    prwx-        win1/testfile

7 entries listed, 15 blocks used.
$ dmtvol w win1
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
$ fixvol

Warning: this program is intended only for the use of Apollo service
representatives.  Misuse of this program may irreparably damage your
disk.  To exit, type "q" to the following prompt.

Fix-Volume utility, revision 10.3, 08/08/90

Select disk: [w=Winch|s=Storage mod|f=Floppy|q=Quit][ctrl#:][unit#][s]   w

(fv [p])> q
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
$ mtvol w win1
$ ld win1/... -a

sys   type      blocks  current
type  uid         used   length   attr rights       name

sdir  nil            1      1024  P    prwx-        win1
file  nil            0         0  P    prwx-        win1/lost+found.list
dir   nil            1      1024  P    prwx-        win1/sys
dir   nil            1      1024  P    prwx-        win1/sys/node_data
dir   nil            1      1024  P    prwx-        win1/sys/node_data/system_logs
file  boot          10     10240  P    prwx-        win1/sysboot
file  unstruct       1        15  P    prwx-        win1/testfile

7 entries listed, 15 blocks used.
$ dmtvol w win1
LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
$ salvol


Salvol, revision 10.3, June 18, 1990  12:56:18 pm



Select disk: [w=Winch|s=Storage mod|f=Floppy|q=Quit][ctrl#:][unit#] w

Salvol options:
     -a : read all blocks in all files
     -f : fix disk errors without prompting
     -n : only salvage if disk needs it
     -s : print statistics at the end of salvage
     -p : polite mode, pause before overflowing screen
     -v : verify only (don't write anything to disk)
Please input lv_num (1)[-option]... : 1 -v

    Preparing file list...

    Salvaging...  % complete
        20
        40
        60
        80
       100


    Verifying reference counts...


<---   Salvage complete on logical volume: 1 --->


Summary:

146430 Kb free, previously 146429 Kb free, total capacity: 146868 Kb

7 objects were found using a total of 5 Kb, average length 0 Kb
5 directories; 0 links; 1 catalogued objects not found

Salvage complete
Anything more to do? n
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
$ salvol


Salvol, revision 10.3, June 18, 1990  12:56:18 pm



Select disk: [w=Winch|s=Storage mod|f=Floppy|q=Quit][ctrl#:][unit#] w

Salvol options:
     -a : read all blocks in all files
     -f : fix disk errors without prompting
     -n : only salvage if disk needs it
     -s : print statistics at the end of salvage
     -p : polite mode, pause before overflowing screen
     -v : verify only (don't write anything to disk)
Please input lv_num (1)[-option]... : 1 -v

    Preparing file list...

    Salvaging...  % complete
        20
        40
        60
        80
       100


    Verifying reference counts...


<---   Salvage complete on logical volume: 1 --->


Summary:

146430 Kb free, previously 146429 Kb free, total capacity: 146868 Kb

7 objects were found using a total of 5 Kb, average length 0 Kb
5 directories; 0 links; 1 catalogued objects not found

Salvage complete
Anything more to do? n
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
$ mtvol w win1
$ ld win1/... -a

sys   type      blocks  current
type  uid         used   length   attr rights       name

sdir  nil            1      1024  P    prwx-        win1
file  nil            0         0  P    prwx-        win1/lost+found.list
dir   nil            1      1024  P    prwx-        win1/sys
dir   nil            1      1024  P    prwx-        win1/sys/node_data
dir   nil            1      1024  P    prwx-        win1/sys/node_data/system_logs
file  boot          10     10240  P    prwx-        win1/sysboot
file  unstruct       1        15  P    prwx-        win1/testfile

7 entries listed, 15 blocks used.
$ dmtvol w win1
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
$ salvol


Salvol, revision 10.3, June 18, 1990  12:56:18 pm



Select disk: [w=Winch|s=Storage mod|f=Floppy|q=Quit][ctrl#:][unit#] w

Salvol options:
     -a : read all blocks in all files
     -f : fix disk errors without prompting
     -n : only salvage if disk needs it
     -s : print statistics at the end of salvage
     -p : polite mode, pause before overflowing screen
     -v : verify only (don't write anything to disk)
Please input lv_num (1)[-option]... : 1

    Preparing file list...

    Salvaging...  % complete
        20
        40
        60
        80
       100


    Verifying reference counts...


<---   Salvage complete on logical volume: 1 --->


Summary:

146430 Kb free, previously 146429 Kb free, total capacity: 146868 Kb

7 objects were found using a total of 5 Kb, average length 0 Kb
5 directories; 0 links; 1 catalogued objects not found

Salvage complete
Anything more to do? n
PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
$ mtvol w win1
$ ld win1/... -a

sys   type      blocks  current
type  uid         used   length   attr rights       name

sdir  nil            1      1024  P    prwx-        win1
file  nil            0         0  P    prwx-        win1/lost+found.list
dir   nil            1      1024  P    prwx-        win1/sys
dir   nil            1      1024  P    prwx-        win1/sys/node_data
dir   nil            1      1024  P    prwx-        win1/sys/node_data/system_logs
file  boot          10     10240  P    prwx-        win1/sysboot
(attributes unavailable)                            win1/testfile

7 entries listed, 14 blocks used.
QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ
$ find_orphans -search win1
Number of orphans: 0
$ ld win1/... -a

sys   type      blocks  current
type  uid         used   length   attr rights       name

sdir  nil            1      1024  P    prwx-        win1
dir   nil            1      1024  P    prwx-        win1/lost+found
file  nil            0         0  P    prwx-        win1/lost+found.list
dir   nil            1      1024  P    prwx-        win1/sys
dir   nil            1      1024  P    prwx-        win1/sys/node_data
dir   nil            1      1024  P    prwx-        win1/sys/node_data/system_logs
file  boot          10     10240  P    prwx-        win1/sysboot
(attributes unavailable)                            win1/testfile

8 entries listed, 15 blocks used.
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR
$ dmtvol w win1
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
$ fixvol

Warning: this program is intended only for the use of Apollo service
representatives.  Misuse of this program may irreparably damage your
disk.  To exit, type "q" to the following prompt.

Fix-Volume utility, revision 10.3, 08/08/90

Select disk: [w=Winch|s=Storage mod|f=Floppy|q=Quit][ctrl#:][unit#][s]   w

(fv [p])> lv 1
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
(fv [1])> vu 5D93314D.10022D27
UID hashes to bucket block at daddr = 11FCA, bucket # 2(hex)
... UID contained within bucket block at daddr = 0, bucket # 0, index # 0
... VTOCE contained within block at daddr = 0, index # 0
vtoce entry not found

(fv [1])> r 11fca
   uid:       204.00000000 vtoc_bkt_$uid
   page:      11FCA
   dtm:       5D933248   Thursday, January 14, 1993   10:39:00 pm (PST)
   blk_type:  0 
   sys_type:  0 (file_$file_type)
   pad:       00000000 00000000
   checksum:  0000
   daddr:      11FCB: ( 1FF- 5- 1)

(fv [1])> show
VTOC Bucket # 0   (at mem address 3B328C00):
  next block = 0, next bucket = 0
[ 0] ... empty
[ 1] ... empty
[ 2] ... empty
[ 3] ... empty
[ 4] ... empty
[ 5] ... empty
[ 6] ... empty
[ 7] ... empty
[ 8] ... empty
[ 9] ... empty
[ A] ... empty
[ B] ... empty
[ C] ... empty
[ D] ... empty
[ E] ... empty
[ F] ... empty
[10] ... empty
[11] ... empty
[12] ... empty
[13] ... empty
Display next bucket within block?y
VTOC Bucket # 1   (at mem address 3B328CF8):
  next block = 0, next bucket = 0
[ 0] ... empty
[ 1] ... empty
[ 2] ... empty
[ 3] ... empty
[ 4] ... empty
[ 5] ... empty
[ 6] ... empty
[ 7] ... empty
[ 8] ... empty
[ 9] ... empty
[ A] ... empty
[ B] ... empty
[ C] ... empty
[ D] ... empty
[ E] ... empty
[ F] ... empty
[10] ... empty
[11] ... empty
[12] ... empty
[13] ... empty
Display next bucket within block?y
VTOC Bucket # 2   (at mem address 3B328DF0):
  next block = 0, next bucket = 0
[ 0] ... empty
[ 1] ... empty
[ 2] ... empty
[ 3] ... empty
[ 4] ... empty
[ 5] ... empty
[ 6] ... empty
[ 7] ... empty
[ 8] ... empty
[ 9] ... empty
[ A] ... empty
[ B] ... empty
[ C] ... empty
[ D] ... empty
[ E] ... empty
[ F] ... empty
[10] ... empty
[11] ... empty
[12] ... empty
[13] ... empty
Display next bucket within block?n
UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
(fv [1])> r 10c52
   uid:       5D9339E3.90022D27 
   page:      0
   dtm:       5D933AD3   Thursday, January 14, 1993   10:48:33 pm (PST)
   blk_type:  0 
   sys_type:  1 (file_$dir_type)
   pad:       00000000 00000000
   checksum:  0000
   daddr:      10C53: ( 1DD- 0- 3)
VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
(fv [1])> r 10c51
   uid:       202.00000000 vtoc_$uid
   page:      10C51
   dtm:       5D933B38   Thursday, January 14, 1993   10:49:00 pm (PST)
   blk_type:  0 
   sys_type:  0 (file_$file_type)
   pad:       00000000 00000000
   checksum:  0000
   daddr:      10C52: ( 1DD- 0- 2)

(fv [1])> show
VTOCE # 0 ... at mem address 3B328C08
---Link to next partial block: 0, vtoce count (v_cnt): 2

version = 1, sys_type = 0 (file_type)
con_ctrl = 0 (none), permanent  not-immutable  not-audited 
object uid= 5D932DAA.D0022D27 
  type uid= 0.00000000 uid_$nil
   dir uid= 5D932DAA.90022D27 
cur_len = 0, blocks_used = 0(d), ref_cnt = 1, lock_key = 0
dtu= (5D932E9A.FE52)  Thursday, January 14, 1993   10:34:53 pm (PST)
dtm= (5D932E9A.FE52)  Thursday, January 14, 1993   10:34:53 pm (PST)
dta= (5D932E9A.FE52)  Thursday, January 14, 1993   10:34:53 pm (PST)
dtv= (00000000.0000)  0
Mgr_Data_a = 00000000 00000000
Mgr_Data_b = 00000000 00000000
Real Device # = 0000
owner uid  (unix_id):  00000542.00000000 (     0)   -PRWX-
group uid  (unix_id):  00800049.00000000 (     0)   -PRWX-
org   uid  (unix_id):  00800080.00000000 (     C)   -(ignore_rts)-
World/Stat rights:      -PRWX-    -NO RIGHTS PRESENT-
Extended acl uid: 00000000.00000000
  0:        0        0        0        0        0        0        0        0
  8:        0        0        0        0        0        0        0        0
 16:        0        0        0        0        0        0        0        0
 24:        0        0        0        0        0        0        0        0
L1, L2, L3 filemaps:        0        0        0 
Display next VTOCE within block?y
VTOCE # 1 ... at mem address 3B328D58

version = 1, sys_type = 1 (dir_type)
con_ctrl = 0 (none), permanent  not-immutable  not-audited 
object uid= 5D9339E3.90022D27 
  type uid= 0.00000000 uid_$nil
   dir uid= 5D932DAA.90022D27 
cur_len = 400, blocks_used = 1(d), ref_cnt = 1, lock_key = 0
dtu= (5D933B27.7F74)  Thursday, January 14, 1993   10:48:55 pm (PST)
dtm= (5D933AD3.D78E)  Thursday, January 14, 1993   10:48:33 pm (PST)
dta= (5D933AD4.158F)  Thursday, January 14, 1993   10:48:34 pm (PST)
dtv= (5D933AD4.15BC)  Thursday, January 14, 1993   10:48:34 pm (PST)
Mgr_Data_a = 00000000 00000000
Mgr_Data_b = 00000000 00000000
Real Device # = 0000
owner uid  (unix_id):  51106746.3000AFA2 (    64)   -PRWX-
group uid  (unix_id):  00800040.00000000 (     C)   -PRWX-
org   uid  (unix_id):  00800080.00000000 (     C)   -(ignore_rts)-
World/Stat rights:      -PRWX-    -NO RIGHTS PRESENT-
Extended acl uid: 00000000.00000000
  0:    10C52        0        0        0        0        0        0        0
  8:        0        0        0        0        0        0        0        0
 16:        0        0        0        0        0        0        0        0
 24:        0        0        0        0        0        0        0        0
L1, L2, L3 filemaps:        0        0        0 
Display next VTOCE within block?y
VTOCE # 2 ... at mem address 3B328EA8
NOT IN USE
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
(fv [1])> r 10c52
   uid:       5D9339E3.90022D27 
   page:      0
   dtm:       5D933AD3   Thursday, January 14, 1993   10:48:33 pm (PST)
   blk_type:  0 
   sys_type:  1 (file_$dir_type)
   pad:       00000000 00000000
   checksum:  0000
   daddr:      10C53: ( 1DD- 0- 3)

(fv [1])> edit
ed> show
-->Illegal command?
The following commands are supported:
   q                                           quit
   a <addr>          [:ahlwb]                  access
         followed by optional new value (1234 or `stuv)
   d <addr1> <addr2> [#per-line] [:ahlwb]      dump
   z                                           zero page

       [Ascii Hex Longword Word Byte]
ed> d 0 3fc

    0 :     50000        0        0 FFFF0084  3F00100   700068        0        0
   20 :         0        0        0        0      F0F 100F0000     FFFF FFFFFFFF
   40 :  FFFFFFFF FFFF0000        0        0        0        0        0        0
   60 :         0      F0F 100F0000     FFFF FFFFFFFF FFFFFFFF FFFF0000        0
   80 :       3F0        0        0        0        0        0        0        0
   A0 :         0        0        0        0        0        0        0        0
   C0 :         0        0        0        0        0        0        0        0
   E0 :         0        0        0        0        0        0        0        0
  100 :         0        0        0        0        0        0        0        0
  120 :         0        0        0        0        0        0        0        0
  140 :         0        0        0        0        0        0        0        0
  160 :         0        0        0        0        0        0        0        0
  180 :         0        0        0        0        0        0        0        0
  1A0 :         0        0        0        0        0        0        0        0
  1C0 :         0        0        0        0        0        0        0        0
  1E0 :         0        0        0        0        0        0        0        0
  200 :         0        0        0        0        0        0        0        0
  220 :         0        0        0        0        0        0        0        0
  240 :         0        0        0        0        0        0        0        0
  260 :         0        0        0        0        0        0        0        0
  280 :         0        0        0        0        0        0        0        0
  2A0 :         0        0        0        0        0        0        0        0
  2C0 :         0        0        0        0        0        0        0        0
  2E0 :         0        0        0        0        0        0        0        0
  300 :         0        0        0        0        0        0        0        0
  320 :         0        0        0        0        0        0        0        0
  340 :         0        0        0        0        0        0        0        0
  360 :         0        0        0        0        0        0        0        0
  380 :         0        0        0        0        0        0        0        0
  3A0 :         0        0        0        0        0        0        0        0
  3C0 :         0        0        0        0        0        0        0        0
  3E0 :         0        0        0        0  4010000 FFFF0000        0        0
ed> q
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
(fv [1])> edit dir
dir> 
Huh?  
dir> h
-->Legal choices are:
    q           up
    hdr..       infoblk..   index[]     entry[]..   
dir> hdr
dir.hdr> 
Huh?  
dir.hdr> h
-->Legal choices are:
    q           up
    info..      transid[]   nodeno      right       indx_free   entr_free   
dir.hdr> /
-->Legal choices are:
    q           up
    info..      transid[]   nodeno      right       indx_free   entr_free   
dir.hdr> .
-->Legal choices are:
    q           up
    info..      transid[]   nodeno      right       indx_free   entr_free   
dir.hdr> 
Huh?  
dir.hdr> up
dir> infoblk
dir.infoblk> h
-->Legal choices are:
    q           up
    vers        tot_len     hdr_len     d_pinfo..   d_xuid[]    f_pinfo..   
    f_xuid[]    
dir.infoblk> q

(fv [1])> ds
Current LV: 1
Buffer stack:
   buffer 1: lv 1, ldaddr 10C52 (pdaddr 10C53)                      uid= 5D9339E3.90022D27   page=     0
Current buffer: 1

(fv [1])> r 10c52
   uid:       5D9339E3.90022D27 
   page:      0
   dtm:       5D933AD3   Thursday, January 14, 1993   10:48:33 pm (PST)
   blk_type:  0 
   sys_type:  1 (file_$dir_type)
   pad:       00000000 00000000
   checksum:  0000
   daddr:      10C53: ( 1DD- 0- 3)

(fv [1])> show dir
Leaf node     node#= 0(hex)
link     :   text= 
YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
(fv [1])> bat 10c52
   bat blk daddr = 120BA ... longword offset = 188 ... bit mask = 80
Block is marked inuse in the BAT
ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
(fv [1])> vu 5D9339E3.90022D27 
UID hashes to bucket block at daddr = 12052, bucket # 0(hex)
... UID contained within bucket block at daddr = 12052, bucket # 0, index # 0
... VTOCE contained within block at daddr = 10C51, index # 1
VTOCE # 1 ... at mem address 3B328D58
---Link to next partial block: 0, vtoce count (v_cnt): 2

version = 1, sys_type = 1 (dir_type)
con_ctrl = 0 (none), permanent  not-immutable  not-audited 
object uid= 5D9339E3.90022D27 
  type uid= 0.00000000 uid_$nil
   dir uid= 5D932DAA.90022D27 
cur_len = 400, blocks_used = 1(d), ref_cnt = 1, lock_key = 0
dtu= (5D933B27.7F74)  Thursday, January 14, 1993   10:48:55 pm (PST)
dtm= (5D933AD3.D78E)  Thursday, January 14, 1993   10:48:33 pm (PST)
dta= (5D933AD4.158F)  Thursday, January 14, 1993   10:48:34 pm (PST)
dtv= (5D933AD4.15BC)  Thursday, January 14, 1993   10:48:34 pm (PST)
Mgr_Data_a = 00000000 00000000
Mgr_Data_b = 00000000 00000000
Real Device # = 0000
owner uid  (unix_id):  51106746.3000AFA2 (    64)   -PRWX-
group uid  (unix_id):  00800040.00000000 (     C)   -PRWX-
org   uid  (unix_id):  00800080.00000000 (     C)   -(ignore_rts)-
World/Stat rights:      -PRWX-    -NO RIGHTS PRESENT-
Extended acl uid: 00000000.00000000
  0:    10C52        0        0        0        0        0        0        0
  8:        0        0        0        0        0        0        0        0
 16:        0        0        0        0        0        0        0        0
 24:        0        0        0        0        0        0        0        0
L1, L2, L3 filemaps:        0        0        0 

(fv [1])> q
-- 
Paul Walker  (619) 484-4049
    UUCP:      ...!{ryptyde.cts.com, crash.cts.com}!pentode!paul
    Internet:  pentode!paul@ryptyde.cts.com

-- 
Paul Walker  (619) 484-4049
    UUCP:      ...!{ryptyde.cts.com, crash.cts.com}!pentode!paul
    Internet:  pentode!paul@ryptyde.cts.com