Coda File System

venus choking on large directories?

From: Greg Troxel <gdt_at_ir.bbn.com>
Date: Wed, 16 May 2001 08:56:24 -0400
I'm trying to mirror internet-drafts into coda.  This results in a
directory with lots of entries.

I last did cvs update and build around march 19th.

venus died with the following

08:10:50 fatal error -- fsobj::dir_Create: (draft-ietf-aaa-diameter-e2e-sec-01.txt, 7f000003.438e.2d7f) Create failed!
08:10:59 RecovTerminate: dirty shutdown (1 uncommitted transactions)
Assertion failed: 0, file "fso_dir.cc", line 94

81      /* TRANS */
82      void fsobj::dir_Create(char *Name, ViceFid *Fid) 
83      {
84              if (!HAVEALLDATA(this)) { 
85                      print(logFile); 
86                      CHOKE("fsobj::dir_Create: (%s, %x.%x.%x) no data", 
87                            Name, Fid->Volume, Fid->Vnode, Fid->Unique); 
88              }
89      
90              int oldlength = dir_Length();
91      
92              if (DH_Create(&data.dir->dh, Name, Fid) != 0) { 
93                      print(logFile); CHOKE("fsobj::dir_Create: (%s, %x.%x.%x) Create failed!", 
94                                            Name, Fid->Volume, Fid->Vnode, Fid->Unique); 
95              }
96      
97              data.dir->udcfvalid = 0;
98      
99              int newlength = dir_Length();
100             int delta_blocks = NBLOCKS(newlength) - NBLOCKS(oldlength);
101             UpdateCacheStats(&FSDB->DirDataStats, CREATE, delta_blocks);
102     }


(gdb) bt
#0  0x401c8123 in nanosleep ()
#1  0x401c80f9 in sleep ()
#2  0x9960f in coda_assert (pred=0x49bcc "0", file=0x2a712 "fso_dir.cc", 
    line=94) at coda_assert.c:45
#3  0x49cb1 in choke (file=0x2a712 "fso_dir.cc", line=94, 
    fmt=0x2a82b "fsobj::dir_Create: (%s, %x.%x.%x) Create failed!")
    at venusutil.cc:212
#4  0x2a919 in fsobj::dir_Create (this=0x513bb6c8, 
    Name=0x13b0a4 "draft-ietf-aaa-diameter-e2e-sec-01.txt", Fid=0x512a174c)
    at fso_dir.cc:94
#5  0x1e598 in fsobj::LocalCreate (this=0x513bb6c8, Mtime=990015050, 
    target_fso=0x512a1748, 
    name=0x13b0a4 "draft-ietf-aaa-diameter-e2e-sec-01.txt", Owner=10853, 
    Mode=420) at fso_cfscalls0.cc:1642
#6  0x1fa79 in fsobj::DisconnectedCreate (this=0x513bb6c8, Mtime=990015050, 
    vuid=10853, t_fso_addr=0x451d3df8, 
    name=0x13b0a4 "draft-ietf-aaa-diameter-e2e-sec-01.txt", Mode=420, 
    target_pri=62500, Tid=-1) at fso_cfscalls0.cc:1927
#7  0x1fbe7 in fsobj::Create (this=0x513bb6c8, 
    name=0x13b0a4 "draft-ietf-aaa-diameter-e2e-sec-01.txt", 
    target_fso_addr=0x451d3df8, vuid=10853, Mode=420, target_pri=62500)
    at fso_cfscalls0.cc:1968
#8  0x7315e in vproc::create (this=0x12bf00, dcp=0x451d5f0c, 
    name=0x13b0a4 "draft-ietf-aaa-diameter-e2e-sec-01.txt", vap=0x13b044, 
    excl=256, mode=26880, cp=0x451d5e70) at vproc_vfscalls.cc:715
#9  0x7682c in worker::main (this=0x12bf00) at worker.cc:1158
#10 0x6c6d1 in VprocPreamble (init_lock=0x12bf40) at vproc.cc:152
#11 0x40132612 in Create_Process_Part2 () at lwp.c:795


restarting venus gave me:

08:45:34        (draft-ietf-aaa-diameter-e2e-sec-01.txt, (0x7f000003.0x438e.0x2d7f)) runt object being discarded...


The server had died too:

08:10:29 Create returns 27 on draft-ietf-aaa-diameter-e2e-sec-01.txt (0x1000004.0x438c.0x2d7e)

Assertion failed: 0, file "srvproc.cc", line 4124
Sleeping forever.  You may use gdb to attach to process 231.


#0  0x401c1123 in nanosleep ()
#1  0x401c10f9 in sleep ()
#2  0x9676f in coda_assert (pred=0xe8e8 "0", file=0x81e0 "srvproc.cc", 
    line=4124) at coda_assert.c:45
#3  0x1012a in Perform_CLMS (client=0x8d0000, VSGVolnum=2130706435, 
    volptr=0xf6480, dirvptr=0x185500, vptr=0x1d8ec0, opcode=5, 
    Name=0x40a0e4 "draft-ietf-aaa-diameter-e2e-sec-01.txt", newinode=0, 
    Length=0, Mtime=990015029, Mode=420, ReplicatedOp=1, StoreId=0x45082e3c, 
    CowInode=0x597834, nblocks=0x45082dac, vsptr=0x45082e24) at srvproc.cc:4124
#4  0xf6c9 in PerformCreate (client=0x8d0000, VSGVolnum=2130706435, 
    volptr=0xf6480, dirvptr=0x185500, vptr=0x1d8ec0, 
    Name=0x40a0e4 "draft-ietf-aaa-diameter-e2e-sec-01.txt", Mtime=990015029, 
    Mode=420, ReplicatedOp=1, StoreId=0x45082e3c, CowInode=0x597834, 
    blocks=0x45082dac, vsptr=0x45082e24) at srvproc.cc:3842
#5  0x8fdb in FS_ViceVCreate (RPCid=947696015, Did=0x45082f24, 
    BidFid=0x45082f18, Name=0x40a0e4 "draft-ietf-aaa-diameter-e2e-sec-01.txt", 
    Status=0x45082eb4, Fid=0x45082ea8, DirStatus=0x45082e44, 
    PrimaryHost=4294967295, StoreId=0x45082e3c, OldVS=0x45082e34, 
    NewVS=0x45082e24, VCBStatus=0x45082e28, PiggyBS=0x45082e2c)
    at srvproc.cc:990
#6  0x397b4 in _FS_ViceVCreate (_cid=947696015, _reqbuffer=0x40a000, _bd=0x0)
    at vice.server.c:5148
#7  0x40190 in srv_ExecuteRequest (_cid=947696015, _reqbuffer=0x40a000, 
    _bd=0x0) at vice.server.c:8970
#8  0x34a9 in ServerLWP (Ident=0xbfbfdc40) at srv.cc:697
#9  0x4012b612 in Create_Process_Part2 () at lwp.c:795


I restarted venus and codasrv, and they both started up ok.
Then:

gdt 27 /coda/project/rfc/internet-drafts > ls|wc
    3943    3947  135415

This seems suspiciously close to 4096.


Any clues?  I seem to be exceeeding some (arbitrary and too low!)
limit, but I don't really know.

       Thanks,	   
       Greg
Received on 2001-05-16 08:56:46