				FISTGEN BUGS

* Fistgen bugs:

Cannot parse "fistFoo( &$vfs.key)": this is an "&" inside a function
problem? or the problem is in front of a '$'?

Cannot parse a fist function with another inside, such as
"fistFoo(a,fistBar(),b)"

Need bison and flex to compile fistgen, as well as gcc.  Won't build with
SunPRO CC compile.

* Template bugs:

** Linux 2.2

- doesn't synchronize file sizes (and # blocks) b/t upper and lower f/s.
  May not synchronize modes, and statfs() info like # of inodes and # of
  free blocks in the f/s.

- doesn't work over NFS (several support functions need to be implemented
  first: readpage, prepare_write, sync_page, etc.)

** Linux 2.4

- fistgen should generate kfree() code directly, w/o the need for kfree_s
  macro.

- we do not yet support Direct-IO (a new address_space op in 2.4.10)

- The print system is racy, with respect to checking debug levels and also
  doing correct indentation.

- Linux-2.4.20
  am-utils compile gzipfs (SCA) - After running 4 compiles in
  parallel, the following messages were printk'ed during the unmount
  time:

  Finished loop without reaching end of chunk(-3)
  Finished loop without reaching end of chunk(-3)
  Finished loop without reaching end of chunk(-3)
  Zlib error(-3)
  Finished loop without reaching end of chunk(-3)
  Finished loop without reaching end of chunk(-3)
  Finished loop without reaching end of chunk(-3)
  Finished loop without reaching end of chunk(-3)

  But the compile itself doesn't have any problems.

- Linux-2.4.21
  SCA code - am-utils compile fails on both uuencodefs and gzipfs with
  error message(s) similar to the following:

  ../../include/am_utils.h:1011: stray '\1' in program
  ../../include/am_utils.h:1011:2410: warning: null character(s) ignored
  ../../include/am_utils.h:1011: stray '\1' in program
  ../../include/am_utils.h:1011:2414: warning: null character(s) ignored

Debugging improvements:
- use PASSERT vs. ASSERT where appropriate
- FISTBUG definition
- separate utility and non-utility print_entry_locations
- add magic to wrapfs private data, so that we can ensure we really have one
  of our inodes instead of other inodes (e.g., ASSERT(IS_WRAPFS_INODE(inode)).

** SunOS 5.7

- get a panic on 64-bit hosts.  WARNING: SunOS 5.7 code isn't stable and
  won't be until I get my Solaris 7 kernel sources and have a chance to
  inspect them.  Until then, use solaris 5.6 with the corresponding
  templates.

Erez Zadok.
