1 changes to Ken's file server to make this 63-bit file server 2 3 Geoff Collyer 4 July—October 2004 5 6note: 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 9changed them to type Off (vlong); fixed all print formats to match. 10fixed byte-swapping for the 'x' config to match. 11 12• fixed VLONG 9p1 message packing and unpacking macros to actually 13handle 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 41note: 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 69