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