Coda File System

Re: odd assertion keeping server from starting - any clues?

From: Greg Troxel <gdt_at_ir.bbn.com>
Date: 01 Mar 2006 09:34:30 -0500
Jan Harkes <jaharkes_at_cs.cmu.edu> writes:

> On Wed, Feb 22, 2006 at 10:07:53AM -0500, Greg Troxel wrote:
> > My server rebooted ungracefully (due to the xen dom0 below it
> > rebooting), and now codasrv won't start up.  Srv{Log,Err} follow.
> > Find of /usr (where /vice and /vicepa are) -inum 1562 and 1563 both
> > turn up empty.
> 
> The inodes numbers it is complaining about are most likely not the
> on-disk inode numbers of the container files, but are mapped to the
> names depending on the fanout settings of the ftreedb (i.e. 255 = 0/0/f/f)
>
> The log messages are probably still remnants from the time Coda used a
> dedicated partition to store container files instead of a filesystem
> tree and directly accessed container files with some userspace
> implementation of iget/vget.

So the log message should be fixed, or perhaps inoder should print out
the container file name.

The RT bug tracker on the web site seems non-functional (I couldn't
view the existing tickets with 'open tickets', and search got be a
perl stack backtrace.)  What's the canonical place to record bugs like this?

> I think this is why there is a 'inoder' tool on the servers,
> 
>     # inoder /vice/db/vicetab /vicepa header 50
>     Partition /vicepa: inodes in use: 5466, total: 16777216.
> 
>     Date: Wed 02/22/2006
> 
>     14:57:24 Partition /vicepa: 19593852K available (minfree=5%),
>     19429384K free.
>     Header for inode 50
>     lnk   1
>     vol   1000001
>     vnode 140
>     uniq  374
>     vers  1
>     magic 47114711
> 
> With this you can increment or decrement the linkcount of an object, it
> doesn't look like it actually tells us what the path to the file in
> question is.
 
I did find inode 1562 with a link count of 1, and 1563 was apparently
unallocated.

> What I think happened was that a file was in the process of being
> added/updated while the server went down. The container file was
> created, but the server crashed before the RVM transaction was
> committed.
> 
> Then during recovery the incomplete RVM transaction was aborted, and
> during salvage the server noticed there was a file that didn't have a
> corresponding on-disk container file. It tries to recreate the container
> file, which conflicts with the one that already exists.
 
Ah, so container file changes need to be part of RVM, but that's hard.
Perhaps a new container file needs to be allocated on each update with
a RVM transaction to point the fid at it, or something like that.

> I'm not sure why it complains about bitmap 1562 and inode 1563, maybe
> bitmap bits are counted from 0, container file numbers counted starting
> from 1.

more RT fodder...

> If you know the ftreedb parameters (width,depth) it is possible to map
> from the inode to the actual location.

My system is width 32, depth 4 and I was able to do this.

> If the server is trying to create an empty file container removing the
> container file should fix the problem. If the fso happens to be a
> directory it might crash later on because the newly created object
> doesn't have '.' and '..' entries and such.

I"m back up - I guess we'll see.

I did decrement an inode, but apparently I should not have.  I suspect
I should reinit my server, but perhaps I can first add a second
replicated server, take this one out and add it back to avoid having
to restore.

Or can backup/restore preserve acls and mod times now?

I made a wiki node about this problem:

http://coda.wikidev.net/Inconsistent_inode_errors

claude root 18 /vice/srv #> inoder /vice/db/vicetab /vicepa header 1562
Partition /vicepa: inodes in use: 4357, total: 1048576.

Date: Wed 03/01/2006

08:46:50 Partition /vicepa: 54920992K available (minfree=4%), 35680608K free.
Header for inode 1562
 lnk   1
 vol   1000002
 vnode c4e
 uniq  e5b7
 vers  2
 magic 47114711
claude root 19 /vice/srv #> inoder /vice/db/vicetab /vicepa idec 1562
Partition /vicepa: inodes in use: 4357, total: 1048576.

Date: Wed 03/01/2006

08:46:57 Partition /vicepa: 54920992K available (minfree=4%), 35680608K free.
claude root 20 /vice/srv #> inoder /vice/db/vicetab /vicepa header 1562
Partition /vicepa: inodes in use: 4356, total: 1048576.

Date: Wed 03/01/2006

08:47:03 Partition /vicepa: 54920992K available (minfree=4%), 35680624K free.
Header for inode 1562
 lnk   0
 vol   0
 vnode 0
 uniq  0
 vers  0
 magic 0




-- 
        Greg Troxel <gdt_at_ir.bbn.com>
Received on 2006-03-01 09:38:19