2008-09-01 02:37 -!- pgquiles(~pgquiles@153.Red-83-35-242.dynamicIP.rima-tde.net) has joined #tux3 2008-09-01 02:52 -!- pgquiles(~pgquiles@110.Red-83-41-45.dynamicIP.rima-tde.net) has joined #tux3 2008-09-01 03:01 -!- MaZe(~MaZe@c-24-6-86-168.hsd1.ca.comcast.net) has joined #tux3 2008-09-01 11:50 flips: revision 199 broke inode.c, can pull fix from me 2008-09-01 11:50 how broke? 2008-09-01 11:51 I only see 198 revisions in my repo 2008-09-01 11:57 removed parameter from ext2_dump_entries 2008-09-01 11:57 ah yeah revision numbers aren't global 2008-09-01 11:58 already fixed 2008-09-01 11:58 here 2008-09-01 11:58 ok ;) 2008-09-01 11:58 the new interpreter makes it much easier to find bugs 2008-09-01 11:58 I found a bunch 2008-09-01 11:58 working on an inode table leaf split corruption one now 2008-09-01 11:59 the checking functions are really badly needed 2008-09-01 11:59 inode table block 0x0/40 (8c bytes free) 2008-09-01 11:59 0x0: [0] mode 0000000 uid 0 gid 0 root 22:1 ctime 0 size 2000 2008-09-01 11:59 0xd: [40] mode 0100700 uid 0 gid 0 root 24:1 2008-09-01 11:59 0x27: [64] mode 0100700 uid 0 gid 0 root 27:1 ctime 0 size ffffffffffffff 2008-09-01 11:59 resize inum 0xd at 0x28 from 24 to 40 2008-09-01 11:59 inode table block 0x0/40 (7c bytes free) 2008-09-01 11:59 0x0: [0] mode 0000000 uid 0 gid 0 root 22:1 ctime 0 size 2000 2008-09-01 11:59 you haven't checked it in yet? 2008-09-01 11:59 0xd: [40] mode 0100700 uid 0 gid 0 root 81c00000:24576 2008-09-01 11:59 0x27: [80] mode 0100700 uid 0 gid 0 root 27:1 ctime 0 size ffffffffffffff 2008-09-01 11:59 not yet 2008-09-01 12:00 right after this bug 2008-09-01 12:00 cool 2008-09-01 12:00 see the root attribute of inode d get messed up by the resize 2008-09-01 12:00 ah 2008-09-01 12:00 yeah 2008-09-01 12:01 for one thing, inode d isn't at offset 28, I don't know why it thinks it is 2008-09-01 12:01 anyway 2008-09-01 12:01 this one is my mess 2008-09-01 12:02 it turns out Tux3 can only do 64 petabytes with 256 byte blocks 2008-09-01 12:09 thats it?! 2008-09-01 12:09 it's because the dump was printing in decimal :p 2008-09-01 12:12 you mean pebibytes? 2008-09-01 12:12 http://en.wikipedia.org/wiki/Petabyte 2008-09-01 12:13 ACTION doesn't subscribe to that hairy footed nonsense 2008-09-01 12:13 why does anyone use base 10 anyway? 2008-09-01 12:14 when describing these things 2008-09-01 12:14 blame hard drive manufacturers i suppose 2008-09-01 12:16 why does anyone use base 10 for anything? 2008-09-01 12:16 something to do with counting on fingers and toes 2008-09-01 12:27 there was no bug 2008-09-01 12:28 intermediate state produced funny behavior 2008-09-01 12:40 on bug down 2008-09-01 12:40 parens around a conditional expression 2008-09-01 12:41 oh, that took care of two bugs 2008-09-01 12:41 nice 2008-09-01 12:41 ok time to check in 2008-09-01 12:41 now thats efficient ;) 2008-09-01 12:43 ./tux3 read --seek 72057594037927930 foodev foo <- this works 2008-09-01 12:43 reads the 64th petabyte of file foo in device foodev, with 256 byte blocks 2008-09-01 13:04 according to this ( http://blogs.netapp.com/standards_watch/2007/12/emc-netapp-dona.html ), there should be an NDMP implementation available from SNIA, which would make it easier to implement NDMP support in strigi, but yesterday I was unable to find that source code :-? 2008-09-01 13:04 oops, wrong channel 2008-09-01 13:04 hi all, btw :-) 2008-09-01 13:04 :) 2008-09-01 13:05 flips: going to add tux3 to the Makefile? 2008-09-01 13:05 not before I have a nap 2008-09-01 13:05 fee free 2008-09-01 13:05 feel free 2008-09-01 13:05 I'm writing a little post 2008-09-01 13:05 paste the cmdline in your shell history to build it ;) 2008-09-01 13:05 which should help make a test 2008-09-01 13:06 yes 2008-09-01 13:06 so i can add it without thinking as much 2008-09-01 13:07 g99 -g -Wall -lpopt buffer.c diskio.c tux3.c -otux3 2008-09-01 14:02 hey 2008-09-01 14:02 flips: just came back last night from Burning Man 2008-09-01 14:03 burned out? 2008-09-01 14:03 eh ? 2008-09-01 14:03 no, I had a blast 2008-09-01 14:03 joke 2008-09-01 14:04 oh ok, yeah, I figured half of Google's infrastructure engineering went out there as well 2008-09-01 14:05 I checked in several thousands lines of patches while you were taking care of more important things ;-) 2008-09-01 14:06 nice, I have a lot of work todo but I'm half clueless about certain parts of the scheduler code 2008-09-01 14:07 gregory is coming up with fixes for various scheduler path issues, but I doubt that it's going to fix the latency problem. The cross locks are very problematic 2008-09-01 14:08 I'll get gone for a bit 2008-09-01 14:08 ok 2008-09-01 17:10 back 2008-09-01 18:36 -!- MaZe(~MaZe@c-24-6-86-168.hsd1.ca.comcast.net) has joined #tux3 2008-09-01 19:33 flips: what does checking the integrity of leaf nodes involve? 2008-09-01 19:35 also, gcc 4.3 won't build the tux3 tests 2008-09-01 20:20 ld complains that /usr/lib/libpopt.so is incompatible 2008-09-01 20:20 perhaps because tux3 is -std=gnu99? 2008-09-01 20:21 oh wait 2008-09-01 20:21 need to install 64-bit popt-devel 2008-09-01 20:23 konrad, hi 2008-09-01 20:24 hi 2008-09-01 20:24 konrad, it would be a great start just to check that the entries are all in non-descending order 2008-09-01 20:24 for dleaf 2008-09-01 20:25 for both dealf and ileaf, the upside down dictionaries should contain offsets in non-descending order 2008-09-01 20:25 to bottom of the dictionary should not be below the top of the highest entry 2008-09-01 20:25 can get fancier from there, but that will already detect most corruption 2008-09-01 20:25 ok 2008-09-01 20:26 :-) 2008-09-01 20:26 sounds like a hack about to begin 2008-09-01 20:26 shh 2008-09-01 20:26 if that's what it takes :-) 2008-09-01 20:27 before that 2008-09-01 20:27 another pretty straightforward project is to add more commands to tux3.c 2008-09-01 20:27 I get some weird errors building tux3.c 2008-09-01 20:27 like "remove" 2008-09-01 20:27 ah 2008-09-01 20:27 for some reason references to the inline functions go through ld 2008-09-01 20:27 you need to build with gcc -std=gnu99 2008-09-01 20:27 I am 2008-09-01 20:27 the errors are? 2008-09-01 20:28 ACTION checks to see if make works 2008-09-01 20:28 tux3/user/test/iattr.c:95: undefined reference to `encode16' 2008-09-01 20:28 x10 2008-09-01 20:28 you 2008-09-01 20:28 um 2008-09-01 20:28 lines 98, 99, 100, 103, 104, 107, 111, 114 2008-09-01 20:29 and 128, ... 2008-09-01 20:29 some others 2008-09-01 20:29 that is odd 2008-09-01 20:29 check your compile output 2008-09-01 20:29 there are some warnings about iattr.c: In function ‘decode16’: 2008-09-01 20:29 iattr.c:20: warning: ‘be_to_u16’ is static but used in inline function ‘decode16’ which is not static 2008-09-01 20:29 just a sec 2008-09-01 20:29 ah 2008-09-01 20:29 interesting 2008-09-01 20:29 ok 2008-09-01 20:29 what it to static inline 2008-09-01 20:30 change it to static inline 2008-09-01 20:30 I'll do that right now 2008-09-01 20:30 k 2008-09-01 20:30 should I do it to, or will you tell me when to pull? 2008-09-01 20:30 just about done 2008-09-01 20:31 builds now 2008-09-01 20:31 updated in repo 2008-09-01 20:31 good 2008-09-01 20:31 what's your gcc version? 2008-09-01 20:31 gcc --version 2008-09-01 20:31 4.3.0 2008-09-01 20:31 20080428 2008-09-01 20:31 I'm 4.1.2 2008-09-01 20:32 looks like a gcc regression 2008-09-01 20:32 smells like 2008-09-01 20:32 certainly possible 2008-09-01 20:32 but I' 2008-09-01 20:32 but I'm ok with this resolution 2008-09-01 20:32 I'm pretty happy with those endian macros 2008-09-01 20:32 very efficiently implemented 2008-09-01 20:32 mhm 2008-09-01 20:32 didn't even know they were there until last week 2008-09-01 20:33 found them by accident 2008-09-01 20:33 really essential 2008-09-01 20:33 #include <- the magic words 2008-09-01 20:34 yep 2008-09-01 20:34 I'm looking at that right now 2008-09-01 20:34 29 /* Return a value with all bytes in the 16 bit argument swapped. */ 2008-09-01 20:34 30 #define bswap_16(x) __bswap_16 (x) 2008-09-01 20:34 does it do-the-right-thing on big endian archs? 2008-09-01 20:34 you just did your first bug hunt ;-) 2008-09-01 20:34 yay 2008-09-01 20:35 I still get a couple format string warnings 2008-09-01 20:35 bswap is a 2 byte asm instruction as I recall 2008-09-01 20:35 runs at superscaler speed these days I think - can do more than one bswap per cycle 2008-09-01 20:35 what about on ppc, m68k or other BE archs? 2008-09-01 20:35 in other words, as close to free as it gets 2008-09-01 20:35 does it omit those or still try to swap? 2008-09-01 20:36 there are similar instructions on some of the other arches 2008-09-01 20:36 but since the native resolution for tux3 is bigendian, ppc is fine 2008-09-01 20:36 no swapping to do 2008-09-01 20:36 k 2008-09-01 20:36 big endian is _way_ nicer for debugging 2008-09-01 20:37 big endian is way nicer for everything :) 2008-09-01 20:37 bummer x86 isn't big endian 2008-09-01 20:37 had to stare at the hexdumps sometimes for a while, wondering why the lsb was up at the high end of the struct, I'm so used to the braindamaged intel order 2008-09-01 20:37 x86 is most braindamage, that happened to be implemented better than the other guys 2008-09-01 20:37 too bad about that 2008-09-01 20:38 motorola really blew it 2008-09-01 20:38 ibm's doing ok with ppc 2008-09-01 20:38 but I'd like to see them do more on power efficiency 2008-09-01 20:38 ppc rules the console world 2008-09-01 20:38 which is getting to be more machines than the biz world even 2008-09-01 20:39 more than certain search engine operators even 2008-09-01 20:41 Are: 2008-09-01 20:41 inode.c:421: warning: format ‘%Lx’ expects type ‘long long unsigned int’, but argument 2 has type ‘block_t’ 2008-09-01 20:41 tux3.c:139: warning: format ‘%Li’ expects type ‘long long int’, but argument 2 has type ‘u64’ 2008-09-01 20:41 tux3.c:175: warning: format ‘%Li’ expects type ‘long long int’, but argument 2 has type ‘u64’ 2008-09-01 20:41 supposed to happen? 2008-09-01 20:46 cast the printf arg using (L) 2008-09-01 20:47 that's a tux3 macro, same as (long long unsigned) 2008-09-01 20:47 I'm running 32 bit here, so you need to post your hg patch to the mailing list 2008-09-01 20:48 ACTION has to get his hammer machine online 2008-09-01 20:50 right 2008-09-01 20:51 that's what I thought, so I made the patch already 2008-09-01 20:51 was just waiting on posting it 2008-09-01 20:55 tux3 will need to go GPLv2 at some point to get into the kernel, no? 2008-09-01 21:02 applied, thanks 2008-09-01 21:03 that is correct, there is a post about that 2008-09-01 21:04 I reserve the right to relicense tux3, including the downgrade to v2 for the kernel port 2008-09-01 21:04 I suppose I should ping Eben and see if he likes my slight hack of his license ;-) 2008-09-01 21:16 -!- caoliver(~oliver@75-134-208-20.dhcp.trcy.mi.charter.com) has joined #tux3 2008-09-01 21:16 -!- caoliver(~oliver@75-134-208-20.dhcp.trcy.mi.charter.com) has left #tux3 2008-09-01 21:51 flips: what are the offsets? 2008-09-01 21:51 offsets? 2008-09-01 21:51 oh 2008-09-01 21:51 in dleaf 2008-09-01 21:51 16 bit address within a dleaf 2008-09-01 21:51 looks like there's one per entry 2008-09-01 21:51 ok 2008-09-01 21:51 or 16 bit offset from the beginning of data in an ileaf 2008-09-01 21:52 ileaf would be an easier place to start 2008-09-01 21:52 dleaf has a two level index, both levels upside down, which is a little confusing 2008-09-01 21:52 heh 2008-09-01 21:53 the other confusing detail is that the 0th index entry is not actually represented, it is assumed to be zero 2008-09-01 21:53 for both dleaf and ileaf 2008-09-01 21:54 I think I might be able to code an inline to make that a little clearer 2008-09-01 22:01 another complication for ileaf is that leaf->count is allowed to be zero 2008-09-01 22:02 that means that dick[-i] can be invalid either because i is zero or leaf->count is zero, which usually implies the same, but not for ileaf 2008-09-01 22:02 which allows offsets higher than leaf->count 2008-09-01 22:03 because the ileaf dictionary can be extended to accomodate. 2008-09-01 22:57 how is the size of the zeroth inode an ileaf found? 2008-09-01 22:59 inode of an ileaf* 2008-09-01 23:01 er, if leaf->count is zero 2008-09-01 23:02 -!- MaZe(~MaZe@c-24-6-86-168.hsd1.ca.comcast.net) has joined #tux3 2008-09-01 23:07 http://pastie.org/264354.txt <-- does that look about right? 2008-09-01 23:17 er 2008-09-01 23:18 I guess dict[-1] exists even if there's only the zeroth inum 2008-09-01 23:18 therefor dict[-btree->entries_per_leaf - 1] is part of the dict too