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