========================================================================
Changelog
Ultra*Log Notes, NAI
$Id: CHANGELOG,v 1.1.1.1 2003/07/08 09:49:00 root Exp $
========================================================================
This is a high-level debug notes and description of general changes.
For more detailed changes, consult the CVS log entries in the repository.

3/25/2002 - building NEW libbyz - patch notes
Patched libbyz/th_assert.h, line 67 - removed '//' on __assert def, to put
it back in again.  Otherwise, won't compile.
Clean targets in makefile not good - had to manually remove exe's.
Depends still in makefile - had to do makedepend to clean out.
bfs directory renamed to "difs"
GOOD - did not get warning on nfsconf.h
Changed num_iter to 1000 in simple

4/15 - more notes
client@6.1 (suave), servers@6.1 - difs WORKS.
client@6.2 (pike),  servers@6.1 - mount: Invalid argument
client@7.2 (kirk),  servers@6.1 - mount: Invalid argument
client@6.1 (suave), servers@7.2 - difs WORKS.
client@6.2 (kirk),  servers@7.2 - mount: Invalid argument
client@7.2 (pike),  servers@7.2 - mount: Invalid argument

4/17 - kernel testing notes
Started with stock RH 6.1 system and installed custom kernels and tested.
Here are results:
2.2.12 (suave),     servers@7.2 - BASE WORKS
2.2.13 (suave),     servers@7.2 - BASE WORKS
2.2.14 (suave),     servers@7.2 - BASE WORKS
2.2.15 (suave),     servers@7.2 - <not done, minor config prob, skipping to 16> 
2.2.16 (suave),     servers@7.2 - BASE WORKS
  note on 2.2.16 - getting "nfs warning: mount version older than kernel" @boot
  this is first such msg since starting with 2.2.12
  -- need to sync up knfsd package (changed name to nfs-utils) --
  -- better to start with 6.2, kernel 2.2.14 stock, and work up --
  Noted that ps on rpc.mountd shows flag, --no-nfs-version 3
    Noted also that on standard 7.2 distros, this flag is not there but
	is supported by rpc.mountd
	Mod'd /etc/rc.d/init.d/nfs to include RPCMOUNTDOPTS on pike (6.2 machine)
	Rebooted, reran tests
	  getting mount: Invalid argument ... same as always... it was worth a try.
	  2.2.19 (pike), servers@7.2, - mount: Invalid argument
Going to kill suave, back it up, then upgrade nfs-utils.
  Obtained nfs-utils-0.1.9.1-1.i386.rpm from 6.1/updates (noted that the
  kernel version in the updates dir is 2.2.17)
  Note - nfs-utils package replaces BOTH knfsd-clients and knfsd pkgs, so
    uninstall first
  Old rpc.mountd --version is 1.4.7 (0.4.22)
  New rpc.mountd --version is "kmountd nfs-utils 0.1.9.1"

2.2.16 (suave w/upgraded nfs-utils),     servers@7.2 - BASE WORKS

Problem compiling 2.2.17 - must change CC to "kgcc", which is a different
compiler than normal gcc... else get "checksum.S bad punctuation errors",
apparently in the package compat-egcs-6.2-1.1.2.16.rpm

2.2.17 (suave),     servers@7.2 - BASE WORKS

Configuring kernel 2.2.18 - presented with questions:
"NFS Version 3 filesystem support? (new)" - answered 'N'.
"NFS server support? (new)" - answered 'N'.
Other notes - 2.2.18 Makefile uses kgcc.

2.2.18 is BROKEN - mount: Invalid argument.  2.2.17 runs fine, with upgraded
nfs-utils package, but 2.2.18 gives invalid argument.  Need to diff 2.2.17
and 2.2.18.

2.2.18pre8 (suave), servers@7.2 - BASE WORKS

notes - 2.2.18pre9 (patch pre8-pre9) asks the NFS version 3 question.

2.2.18pre9 (suave), servers@7.2 - mount: Invalid argument.
Recompiled with -DNFS_DEBUG.  Must watch raw /dev/console on vmware instance
screen to see any messages.  They are not being logged anywhere else.
Failure messages:
"NFS: cannot retrieve file system info." <fs/nfs/inode.c:453, nfs_read_super>
"iput: device 00:04 inode 0 still has aliases!" <fs/inode.c:810, iput>
"NFS: cannot create RPC transport." <fs/nfs/inode.c:538, nfs_read_super>
Broken NFS implementation, not responding to NFSPROC_STATFS?

Code inspection of BASEFS code.  Apparently unimplemented NFS calls - 
NFSPROC_LINK
NFSPROC_RENAME
NFSPROC_STATFS
NFSPROC_SYMLINK
Tested each of these under 2.2.18pre8, they work fine, though the stat
doesn't report correct change times for a file.  Can't test under
pre9 without fixing the STATFS problem. (IF UNIMPLEMENTED, THEN HOW
DO THEY WORK?  Is there a default passthru handler?)  Yes there is.
Read 'rfc.txt', most of the data structures are implemented verbatim.
Callback handlers are created for every type of handler, and there are
several common handlers shared among different NFSPROC message types.
That's why NFSPROC_LINK works but doesn't have custom handler code, etc.

4/19 - eod.  Tried a major hack in fs/nfs/inode.c, need to test.  No,
no hack.  Implement, or do not implement.  There is no hack.

4/22 - Problem is that statfs message requires a file handle, but it was
being provided 'null' in nfsd.c in the nfsproc_table data structure.
Changed.  Now, it causes a race condition, getting message "More than
f+1 distinct values in certificate" coming from libbyz/Certificate.t
template code.  This indicates a race condition, whereby all 3f+1 replicas
can't agree on a value.  

The specific problem was that statfs returns number of free blocks on
the local partition, and since the servers all had differing amounts of
free space, the values were all coming back different.  This put libbyz
into a race condition.  Solution - coerce all numbers in statfs call to
be the same.  Perhaps a hack, but perhaps needless checking by Linux
NFS implementation when all it wants to know is whether a particular
directory exists (no need to get free size at that point in time).

#################### END DAILY DEBUG LOG ###################################

