[2066] in SIPB-AFS-requests

home help back first fref pref prev next nref lref last post

outage this morning probably micropolis' fault

daemon@ATHENA.MIT.EDU (Tom Yu)
Sat Jul 29 08:59:01 1995

Date: Sat, 29 Jul 1995 08:58:51 -0400
To: sipb-afsreq@MIT.EDU
Cc: hartmans@MIT.EDU, mycroft@MIT.EDU
From: Tom Yu <tlyu@MIT.EDU>

At about 04:50, rosebud's fileserver stopped responding and wedged
into disk wait.  After a bos restart failed, I attempted to reboot the
machine, but first edited rc.conf to not start afs.  At this point, I
was unable to get a shell, so I used bos exec to edit the rc.conf and
reboot.  The reboot hung, probably since some disks could not be
accessed.  I suspect the Micropolis drive is at fault.  I did manage
to get a crash dump before rebooting, though I did not get over to W20
from E40 until after 06:00 because of the heavy rain.  Fortunately
proven volunteered to drive me over.

I started the afs server processes almost without incident, though the
bosserver and the db servers spontaneously died as soon as I made it
back into the office.  I kill -QUIT'ed the fileserver process that was
still running and manually started the bosserver again.  It stayed up
this time.

[Some examination of the fileserver source code indicates that a
SIGTERM will force a debugging stats dump of its fd's rather than
telling it to quit.  This strikes me as very wrong.  Transarc sux.]

In case anyone wants to take another look, I left the crashdump
sitting in /var/adm/crash/vm{core,unix}.0.  Please don't delete it
yet; I may still want to look at it again.  (and there's plenty of
free space in /var anyway) Yes, I did restore "AFSSRV=true" in
rc.conf.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
ignore everything below if you don't want gory details of crashdump
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Anyway I poked around the crash dump and got a few interesting
tidbits:

[gee crash is a really useful tool if you can beat it into submission]

> scsi -targ

SCSI target informaiton:
Controller #0 Targid #0:
        sc_alive:       1
        device_comp:            rzcomplete
        sc_flags:       Operation complete
        sc_cat_flags:   0x0
        sc_devtype:     DISK device
        sc_unit:        0
        sc_device:      RZxx
        sc_szflags:     Normal (no szflags set),Disconnect occured during this command
        sc_curcmd:      DISK: WRITE 10-byte Command
        sc_actcmd:      DISK: WRITE 10-byte Command
        sc_selstat:     The device has disconnected
        sc_xstate:      Write DMA processing
        sc_xevent:      Process next request from queue
        sc_pxstate:     Start DMA WRITE
        sc_c_status:    Good
        sc_c_snskey:    Successful cmd or EOT, ILI, FILEMARK
        sc_status:      Good
        sc_message:     Disconnect
        sc_devnam:      MICROP  3243-19SC2908a4 
        sc_revlvl:      CN05                                                    

This seems to indicate that the Micropolis drive did an asynchronous
process of a write command and never reconnected to the bus.

> proc
SLT S   PID  PPID  PGRP  UID  PY CPU   SIGS    Event Flags
%%%%%stuff deleted%%%%%
 16 s   750     1   749    0  20   3    100     buf[504]         in pagi
 17 s   246     1   228    0  20   0    124     buf[2]   in pagi ptchg
 18 s   247     1   228    0  20   3   4120     buf[346]         in pagi ptchg
 35 s   753     1   752    0  20   2    100     buf[52]  in pagi
 40 s   762     1   758    0  21  19    101     buf[504]         in pagi ptchg
 42 r   766     1   228    0 113 255      0              in ptchg

> ps
SLOT   PID   UID   COMMAND
%%%%%stuff deleted%%%%%
  16   750     0    (ls)
  17   246     0    (fileserver)
  18   247     0    (volserver)
  35   753     0    (ls)
  40   762     0    (quota)
  42   766     0    (reboot)

The "ls" command were what I tried to execute (ls /vicepb, ls /vicepc)
right before the machine mostly hung.  The quota process was from a
hanging login.  Interestingly enough, the buf structures reveal the
following:

> buf 504 2 346 52 504
  BUF MAJ  MIN   BLOCK COUNT  SIZE RESID  GNO  FWD  BACK FLAGS
 504  15    3    6912  7168  8192     0         52    -1 read busy wnt out
   2  15    3  919504  8192  8192     0        504    -1 read busy out
 346  15    4  652880  8192  8192     0          2   339 busy out cache
  52  15    4  178528  3072  4096     0        144    -1 read busy out
 504  15    3    6912  7168  8192     0         52    -1 read busy wnt out

These are the buf headers for the buffers in use by the hanging
processes.  Note that they're all tagged as "busy".  Also, I noticed that:

brw-------  1 root      21,   3 Jan 24  1995 /dev/rz0d
brw-------  1 root      21,   4 Jan 24  1995 /dev/rz0e

Note: 21 == 0x15.  Yes, the major/minor numbers output by crash are in
hex.  No, they don't tell you that.  blurgh.

Anyway I think we have a smoking gun.  The Micropolis disk is probably
flaking somehow w.r.t. asynchronous writes.  If this happens again we
should consider getting it tested/replaced.  For now I'm really
tempted to move the data off of it and onto the new Seagate.

FYI, to force a dump on a maxine:
1. Halt the machine. (control-alt-return)
2. Type "go 0x8003008" at the ">>>" prompt.  (in case this is hard to
	remember, just remember that it's the kernel start address +
	8; you can reboot a random maxine in the cluster to find the
	start address)
3. Wait for dump to finish.
4. Pray that you remembered to set "SAVECORE=true" :-)

---Tom

home help back first fref pref prev next nref lref last post