changes 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. changes to Ken's file server to make this 63-bit file server
  2. Geoff Collyer
  3. July—October 2004
  4. note: 2⁶⁳=9,223,372,036,854,775,808 or 8EB (9.2×10ⁱ⁸)
  5. • identified longs that refer to offsets, sizes and block numbers, and
  6. changed them to type Off (vlong); fixed all print formats to match.
  7. fixed byte-swapping for the 'x' config to match.
  8. • fixed VLONG 9p1 message packing and unpacking macros to actually
  9. handle 64-bit offsets and sizes.
  10. • implemented triple-indirect blocks. affected code in
  11. dev/cw.c port/con.c port/dentry.c port/sub.c
  12. port/chk.c port/console.c port/portdat.h
  13. • Fri Aug 6 16:50:59 PDT 2004
  14. ; ./sizes
  15. Plan 9 v4 63-bit file server
  16. sizeof(Dentry) = 124
  17. sizeof(Cache) = 88
  18. • added long(er) file name components (56 bytes), long enough for all but one
  19. name in my /.longnames file (68-byte .xml name).
  20. • Fri Aug 6 21:43:41 PDT 2004
  21. ; ./sizes
  22. Plan 9 v4 63-bit file server sizes
  23. sizeof(Dentry) = 160
  24. sizeof(Cache) = 88
  25. • touched up lib.h (from libc.h) to bring it up to date with formatting
  26. functions, verbs & flags.
  27. • check now reports stack usage: 320 bytes upon entry to fsck first time,
  28. 92 bytes of stack per recursion. given 16000 bytes of stack,
  29. that's 170 recursions maximum.
  30. • booted xtc (terminal) from fs64 (used fs64 as main file system)
  31. note: current file server with triple-indirect blocks at 4k block size
  32. has a maximum file size of ~505GB (5.42×10ⁱⁱ).
  33. with quadruple-indirect blocks, max would be ~275TB @ 4k block size.
  34. • got igbe fs driver working (a couple small changes)
  35. • eliminated some gotos (started with 580, down to 454)
  36. • added quadruple indirect blocks: lets us reach 2⁶⁳ with a 32kB block size
  37. • got igbe boot driver & pxe booting working
  38. • on-disk qid paths are now Offs, but 9p1 qids on the wire are still ulongs
  39. • generalised & parameterised indirect block implementation
  40. • tested with plain w0 fs, cached fake worm on w0, cw jukebox (hp 160fx)
  41. • ip directories in fs & fs64 are identical except for whitespace and
  42. goto-elimination
  43. • replaced most of nemo's ide code with newer ide code lifted from 9load,
  44. then from cpu kernel (sdata.c & support). this brings us dma, rwm & lba48,
  45. finds ide controllers by itself, even pci ones, & copes with dead drives
  46. (i.e., doesn't panic).
  47. • fixed long-standing bug that caused a 5-second delay before each console
  48. prompt on systems without a serial console.
  49. • further type parameterisation: Userid (short), Timet (long), Devsize (vlong).
  50. Comment on v7 kernel portability work, quoting scj & dmr from BSTJ v57
  51. #6 part 2., p. 2038: ``The important data types used within the
  52. system were identified and specified using typedef: disk offsets,
  53. absolute times, internal device names, and the like. This effort was
  54. carried out by K. Thompson.''
  55. • corrected compat.h dependencies in mkfiles
  56. • eliminated all warnings
  57. • implemented truncation via wstat