by Javantea
June 9, 2020
This blog post will be a bit weird but I'm trying to find my voice besides the IRC world and the inner world that I've been navigating for more than 20 years. I don't think it's going to be easy, so think of this more as a reference than a blog post. In other words, don't read this blog post unless you're on a path like mine where your stuff has become a deep rabbit hole. Today's rabbit hole, as well as monday and sunday's rabbit hole has been EXT2.
Backstory: I'm writing a kernel and I need a filesystem. A simple one would make my life easier but would then make everyone else's life harder. Do I want to do that when I'm writing a game that is intended to teach people how to write hundreds, even thousands of kernels? Do we want everyone in this tree of learning to be harmed because I wanted to play my game sooner? Maybe. Maybe.
Why do I write? I don't want money, I don't want mental health (though I do want mental health), I want someone to be able to write an AI based on my private and public information. Seq2seq is improving dramatically, so I think it's a matter of time until I write a pretty good bot that models my experience. That would mean that I could type into chat and the bot would be able to respond with my entire history of experience behind it.
Also Black Lives Matter and Defund the SPD.
IRC log this morning. No one was in the channel for the most part (that doesn't matter, the IRC log is for this blog).
07:02 <@Javantea> can't get a song I heard on Sunday out of my head: "When will we be paid for the work we've done?"
07:03 <@Javantea> realizing that without a functioning puts...
07:03 <@Javantea> interrupt1.c uses puts..
07:07 <@Javantea> but it doesn't work?
07:07 <@Javantea> nor does..
07:08 <@Javantea> /tmp/cc0VKBmK.s:406: Warning: 756870 shortened to 35974
07:08 <@Javantea> unclear wth
07:09 <@Javantea> movb %al, 756870
07:09 <@Javantea> movb %bl, 756872
07:09 <@Javantea> movb %cl, 756874
07:09 <@Javantea> movb %dl, 756876
07:09 <@Javantea> uhh you should shorted in considerbly more than 35974
07:10 <@Javantea> that's in updateDt
07:11 <@Javantea> DRAW(8, 20, tmp[0]); probably..
07:12 <@Javantea> surprising that updateDt works with thaat bug
07:12 <@Javantea> oh duh
07:12 <@Javantea> hex(756870)
07:12 <@Javantea> '0xb8c86'
07:12 <@Javantea> that's an address in vram
07:13 <@Javantea> hex(35974)
07:13 <@Javantea> '0x8c86'
07:13 <@Javantea> what a mess
07:14 <@Javantea> how is it possible to write to vram in this?
07:14 <@Javantea> mov %es:(%ebx), %cl
07:15 <@Javantea> this is fascinating
07:15 <@Javantea> that explains why puts isn't working
07:15 <@Javantea> #mov $0x0, %ax
07:15 <@Javantea> #mov %ax, %es
07:15 <@Javantea> yeah.. commented that out
07:16 <@Javantea> mext step...
07:17 <@Javantea> multisector.S:213: Warning: .space, .nops or .fill with negative value, ignored
07:17 <@Javantea> we don't have enough room for those two movs
07:17 <@Javantea> tons of room in second sector, so...
07:19 <@Javantea> got "shock" but not the thing before it. because I forgot puts yay
07:19 <@Javantea> err I forgot push
07:19 <@Javantea> 1 shock
07:19 <@Javantea> finally
07:20 <@Javantea> now we make this a subroutine and then call it
07:20 <@Javantea> or we copy and paste it or we put a loop around it.
07:20 <@Javantea> all 3? nonono
07:24 <@Javantea> WW shock
07:24 <@Javantea> jle becomes jg
07:24 <@Javantea> 00 shock
07:25 <@Javantea> getting there..
07:25 <@Javantea> add $0x30, %%al is wrong I think
07:25 <@Javantea> no no
07:26 <@Javantea> it's fine. so the value in ah is 00?
07:26 <@Javantea> AH Return Code
07:26 <@Javantea> oh okay.
07:27 <@Javantea> wish I could write c code for this..
07:27 <@Javantea> let's just get the values for now.. no need to actually make this work.
07:29 <@Javantea> 0 hard drive disks?
07:30 <@Javantea> at least cx is nonzero: 30
07:31 <@Javantea> so.. all other return values are 0 which means..
07:32 <@Javantea> I need to track down the source
07:35 <@Javantea> sure am glad I got real-mode puts to work
07:35 <@Javantea> none of the code from sunday or monday got committed
07:45 <@Javantea> mood music The Staple Singers - When Will We Be Paid https://www.youtube.com/watch?v=QWhcTu5El0c
07:56 <@Javantea> okay done with read drive code...
08:00 <@Javantea> regs->cl = ((nlc >> 2) & 0xc0) | (nls & 0x3f);
08:01 <@Javantea> so nls is 0x30
08:03 <@Javantea> if we look at the ...
08:03 <@Javantea> gonna guess that I got the lsb wrong
08:03 <@Javantea> the lower nibble
08:04 <@Javantea> wait, that wouldn't...
08:04 <@Javantea> let's see what happens when I put f1 in.
08:04 <@Javantea> f0 shock
08:04 <@Javantea> =/
08:05 <@Javantea> fixing
08:05 <@Javantea> mov %%ah, %%al
08:05 <@Javantea> that would do it
08:06 <@Javantea> f1 shock
08:06 <@Javantea> now we do..
08:07 <@Javantea> dl = 01
08:07 <@Javantea> dh = 0f
08:07 <@Javantea> ch = 00
08:07 <@Javantea> cl = 3f
08:08 <@Javantea> bl = 00
08:08 <@Javantea> so nls is exactly what it should be, which makes this a simple computation.
08:11 <@Javantea> when someone covers a song and fails the instrumental so badly that they actually fuck up the song, but make up the loss
by doing the vocals correctly..
08:12 <@Javantea> let's try 3f and then 40
08:12 <@Javantea> err no..
08:13 <@Javantea> 512*0x3f
08:13 <@Javantea> 32256
08:14 <@Javantea> (gdb) x/16bx 0x7e00
08:14 <@Javantea> 0x7e00: 0x00 0x00 0x00 0x00 0x00 0x04 0x00 0x00
08:14 <@Javantea> 0x7e08: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
08:14 <@Javantea> we can work with thata..
08:16 <@Javantea> gonna work on a blog for this content. I think it'll work.
08:17 <@Javantea> so instead of typing here, I'm gonna type into a markdown file
(gdb) x/16bx 0x7e00
0x7e00: 0x00 0x00 0x00 0x00 0x00 0x04 0x00 0x00
0x7e08: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
(gdb)
0x7e10: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x7e18: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
(gdb)
0x7e20: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x7e28: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
(gdb)
0x7e30: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x7e38: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
(gdb)
0x7e40: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x7e48: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
(gdb)
0x7e50: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x7e58: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
(gdb)
0x7e60: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x7e68: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
(gdb)
0x7e70: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x7e78: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
(gdb)
0x7e80: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x7e88: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
(gdb)
0x7e90: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x7e98: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
hex(0x3f*512)
'0x7e00'
hexdump -C ext2t.bin |less
00007c00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00 |................|
00007c10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00008000 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00 |................|
00008010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
These two values don't match.
But the fact that we found one close by makes me think that we're pretty close. let's try to give it another value.
I assumed the output of this would be worthless to me, but then just copying it I see there's a non-fatal error.
make ext2t.bin
cc -m32 -c -o split_multi_pm_ext2.o multisector.S -ffreestanding -nostdlib -Wall -O2 -fno-pie -fno-toplevel-reorder -mno-mmx -mno-sse -mno-sse2 -mno-sse3 -mno-3dnow -mno-red-zone -DPROTECTED_MODE -DSPLIT_MODE -DEXT2
ld -m elf_i386 -static -Tmbr1split_ext2.ld -nostdlib --nmagic -o ext21_p1 split_multi_pm_ext2.o vga3.o
cp ext21_p1 ext21
dd if=ext21_p2 of=ext21 bs=512 seek=2
23+1 records in
23+1 records out
11932 bytes (12 kB, 12 KiB) copied, 0.000207945 s, 57.4 MB/s
dd if=/dev/zero bs=1024 count=1024 of=ext2t.bin
1024+0 records in
1024+0 records out
1048576 bytes (1.0 MB, 1.0 MiB) copied, 0.00440824 s, 238 MB/s
mke2fs -L ext2_1_t ext2t.bin
mke2fs 1.45.6 (20-Mar-2020)
Discarding device blocks: done
Creating filesystem with 1024 1k blocks and 128 inodes
Allocating group tables: done
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
./e2info -w -t ext2t.bin ext21
inodes: 00000080
blocks: 00000400
r_blocks: 00000033
free_blocks: 000003da
free_inodes: 00000075
Errors on filesystem 0001
log_block_size: 00000000
block_size: 00000400
block_bitmap: 1111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001
inode_bitmap: 11111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
inode[0]:
mode: 0000
uid: 0000
size: 00000000
atime: 5edfab4f
ctime: 5edfab4f
dtime: 00000000
gid: 0000
links_count: 0000
blocks: 0000
flags: 0000
inode[1]:
b: 24 0
ftp: 0
name: .
inode: 2
rec_len: 12
name_len: 1
ftp: 12
name: ..
inode: 2
rec_len: 12
name_len: 2
ftp: 24
name: lost+found
inode: 11
rec_len: 1000
name_len: 10
mode: 41ed
uid: 0000
size: 00000400
atime: 5edfab4f
ctime: 5edfab4f
dtime: 00000000
gid: 0000
links_count: 0003
blocks: 0002
flags: 0000
inode[2]:
mode: 0000
uid: 0000
size: 00000000
atime: 00000000
ctime: 00000000
dtime: 00000000
gid: 0000
links_count: 0000
blocks: 0000
flags: 0000
inode[3]:
mode: 0000
uid: 0000
size: 00000000
atime: 00000000
ctime: 00000000
dtime: 00000000
gid: 0000
links_count: 0000
blocks: 0000
flags: 0000
inode[4]:
mode: 0000
uid: 0000
size: 00000000
atime: 00000000
ctime: 00000000
dtime: 00000000
gid: 0000
links_count: 0000
blocks: 0000
flags: 0000
inode[5]:
mode: 0000
uid: 0000
size: 00000000
atime: 00000000
ctime: 00000000
dtime: 00000000
gid: 0000
links_count: 0000
blocks: 0000
flags: 0000
inode[6]:
b: 0 0 0 0 0 0 0 0
mode: 8180
uid: 0000
size: 04043000
atime: 5edfab4f
ctime: 5edfab4f
dtime: 00000000
gid: 0000
links_count: 0001
blocks: 0008
flags: 0000
inode[7]:
mode: 0000
uid: 0000
size: 00000000
atime: 00000000
ctime: 00000000
dtime: 00000000
gid: 0000
links_count: 0000
blocks: 0000
flags: 0000
inode[8]:
mode: 0000
uid: 0000
size: 00000000
atime: 00000000
ctime: 00000000
dtime: 00000000
gid: 0000
links_count: 0000
blocks: 0000
flags: 0000
inode[9]:
mode: 0000
uid: 0000
size: 00000000
atime: 00000000
ctime: 00000000
dtime: 00000000
gid: 0000
links_count: 0000
blocks: 0000
flags: 0000
inode[10]:
b: 25 26 27 28 29 30 31 32 33 34 35 36
Error: We can't write to the root block so we're screwed until we get more code (blocks)
ftp: 0
name: .
inode: 11
rec_len: 12
name_len: 1
ftp: 12
name: ..
inode: 2
rec_len: 1012
name_len: 2
ftp: 1024
name:
inode: 0
rec_len: 1024
name_len: 0
ftp: 1024
name:
inode: 0
rec_len: 1024
name_len: 0
ftp: 1024
name:
inode: 0
rec_len: 1024
name_len: 0
ftp: 1024
name:
inode: 0
rec_len: 1024
name_len: 0
ftp: 1024
name:
inode: 0
rec_len: 1024
name_len: 0
ftp: 1024
name:
inode: 0
rec_len: 1024
name_len: 0
ftp: 1024
name:
inode: 0
rec_len: 1024
name_len: 0
ftp: 1024
name:
inode: 0
rec_len: 1024
name_len: 0
ftp: 1024
name:
inode: 0
rec_len: 1024
name_len: 0
ftp: 1024
name:
inode: 0
rec_len: 1024
name_len: 0
ftp: 1024
name:
inode: 0
rec_len: 1024
name_len: 0
mode: 41c0
uid: 0000
size: 00003000
atime: 5edfab4f
ctime: 5edfab4f
dtime: 00000000
gid: 0000
links_count: 0002
blocks: 0018
flags: 0000
inode[11]:
mode: 0000
uid: 0000
size: 00000000
atime: 00000000
ctime: 00000000
dtime: 00000000
gid: 0000
links_count: 0000
blocks: 0000
flags: 0000
Writing kernel
kernel_block: 37
dd if=ext21 of=ext2t.bin bs=512 count=2 of=ext2t.bin conv=notrunc
2+0 records in
2+0 records out
1024 bytes (1.0 kB, 1.0 KiB) copied, 0.000136157 s, 7.5 MB/s
As you can probably see, this is a pretty strong bug. So we're gonna fix it.
Switching my monitor to portrait mode:
~/scripts/benq_portrait1.sh
sudo mount -o loop,ro ext2t.bin /mnt/sd/
Password:
sudo ls -laR /mnt/sd/
/mnt/sd/:
ls: reading directory '/mnt/sd/': Input/output error
total 0
sudo umount /mnt/sd
This means we have an unexpected regression on our hands. (Note that I'll use we/our for only the reason because I type it and don't want to erase it even though I mean I, but I have been using the pronoun we for so many years that it has become a habit I can't break. There is only me behind this project unless I specifically talk about contributors.).
So what do we do? Well we know it's caused by the writing. The error is our first clue. Let's try to learn about it. The error is in our reading though, which is a little odd.
size: 00003000
This size is definitely wrong. So why is that? Let's try to figure out what's going on.
dd if=/dev/zero bs=1024 count=1024 of=ext2t.bin
1024+0 records in
1024+0 records out
1048576 bytes (1.0 MB, 1.0 MiB) copied, 0.00476458 s, 220 MB/s
hexdump -C ext2t.bin |head
00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00100000
mke2fs -L ext2_1_t ext2t.bin
mke2fs 1.45.6 (20-Mar-2020)
Discarding device blocks: done
Creating filesystem with 1024 1k blocks and 128 inodes
Allocating group tables: done
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
e2info -w -t ext2t.bin ext21
...
<same as above>
Now that it's clear, it might be a minor change I made. It's unclear whether 12 or 13 is the correct number for this error, so... I just now realized that this is just junk from lost+found. We can ignore it. So let's change it so that it doesn't print an error message.
Now we're ready to go.
make ext21emu
qemu-system-x86_64 -soundhw adlib -serial pty -drive "if=ide,file=ext2t.bin,format=raw" -boot c
char device redirected to /dev/pts/23 (label serial0)
gdb
GNU gdb (Gentoo 9.1 vanilla) 9.1
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://bugs.gentoo.org/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word".
(gdb) target remote tcp::1234
Remote debugging using tcp::1234
warning: No executable has been specified and target does not support
determining executable automatically. Try using the "file" command.
0x0000000000009200 in ?? ()
(gdb) b *0x7c00
Breakpoint 1 at 0x7c00
(gdb) b *0x8000
Breakpoint 2 at 0x8000
(gdb) c
Continuing.
[Inferior 1 (process 1) exited normally]
(gdb) target remote tcp::1234
Remote debugging using tcp::1234
warning: No executable has been specified and target does not support
determining executable automatically. Try using the "file" command.
0x000000000000ff53 in ?? ()
(gdb) c
Continuing.
Breakpoint 1, 0x0000000000007c00 in ?? ()
(gdb) c
Continuing.
So now we're at the point where we need to step through, so we need assembly to work through. GDB won't help us because we're in real-mode, so we need objdump. This is our toolchain, get used to it.
objdump -D -b binary -m i8086 --adjust-vma=0x7c00 ext2t.bin >ext2t.bin.dis
less ext2t.bin.dis
ext2t.bin: file format binary
Disassembly of section .data:
00007c00 <.data>:
7c00: fa cli
7c01: b8 c0 07 mov $0x7c0,%ax
7c04: 31 c0 xor %ax,%ax
7c06: 8e d8 mov %ax,%ds
7c08: 8e c0 mov %ax,%es
7c0a: 8e d0 mov %ax,%ss
7c0c: 66 bd f0 1f 00 00 mov $0x1ff0,%ebp
7c12: 66 89 ec mov %ebp,%esp
7c15: bb 00 00 mov $0x0,%bx
7c18: b8 e0 07 mov $0x7e0,%ax
7c1b: 8e c0 mov %ax,%es
7c1d: b9 03 00 mov $0x3,%cx
7c20: ba 80 00 mov $0x80,%dx
7c23: b0 80 mov $0x80,%al
7c25: b4 02 mov $0x2,%ah
7c27: cd 13 int $0x13
7c29: e9 d4 01 jmp 0x7e00
So we should break at 7c29.
(gdb) b *0x7c29
Breakpoint 3 at 0x7c29
(gdb) c
Continuing.
Breakpoint 3, 0x0000000000007c29 in ?? ()
(gdb) x/16bx 0x7e00
0x7e00: 0x80 0x00 0x00 0x00 0x00 0x04 0x00 0x00
0x7e08: 0x33 0x00 0x00 0x00 0xda 0x03 0x00 0x00
We can work with that. let's figure it out.
hexdump -C ext2t.bin |grep ' 80 00 00 00 00 04'
00000400 80 00 00 00 00 04 00 00 33 00 00 00 da 03 00 00 |........3.......|
That is when cyl_sec is 0x3. That makes little sense, but we're ready to try more values.
.equ cyl_sec, 0x3 #0x4c
The fact that ext2t.bin can't actually be read by linux means that e2info is broken for kernels larger than 12*1024 = 12288 bytes. And our kernel just graduated to 12956 Jun 9 08:31 ext21
. We could fix it or we could make our kernel a little slimmer. Let's do neither until multisector.S (our very small boot sector in assembly) is done.
incrementing cyl_sec. Now it's 0x4
(gdb) x/16bx 0x7e00
0x7e00: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x7e08: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
(gdb) x/16bx 0x8000
0x8000: 0x06 0x00 0x00 0x00 0x07 0x00 0x00 0x00
0x8008: 0x08 0x00 0x00 0x00 0xda 0x03 0x75 0x00
So it's blank for the first 16 bytes, 8000 has data though.
hexdump -C ext2t.bin |grep ' 06 00 00 00 07'
00000800 06 00 00 00 07 00 00 00 08 00 00 00 da 03 75 00 |..............u.|
Linear regression:
cyl_sec | offset |
---|---|
0x3 | 0400 |
0x4 | 0600 |
offset = 0x200 * (cyl_sec - 1)
So a value of 0 would give us negative offset.
It's acting sanely except for edges, so now we can move to an edge and do the math. I think we're done. We just need to add or subtract 1 to where we want to go.
Because the bit packed nature of INT 13H, we have to compute this in a weird way, but it's easy enough:
hex(37*2)
'0x4a'
# We take our value, and it with 0x3f to get sectors
sectors = (37*2) & 0x3f
hex(sectors)
'0xa'
# Now to get cylinders, we just get the rest of the bits and put them into a ten bit number.
cylinders = (37*2) >> 5
2
# Now we take the lowest 8 bits and put that into the high byte.
cyl_sec_1 = (cylinders << 8) | sectors
# Now we take the highest 2 bits of cylinders and put them in the highest two bits of the low byte.
cyl_sec_2 = (cylinders >> 8) << 6
# which is equivalent to:
cyl_sec_2 = cylinders >> 2
cyl_sec = cyl_sec_1 | cyl_sec_2
hex(cyl_sec)
'0x20a'
.equ cyl_sec 0x020a
And we know we want to add or subtract, so that's easy with this number since it's not an edge, so it's 0x0209 or 0x020b. Whichever works we're going to accept. Of course we may be off by 2.
0x020a:
(gdb) x/16bx 0x7e00
0x7e00: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x7e08: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
Nope.
Same with 0x0209. Same with 0x020b.
(gdb) i r ah
ah 0x1 1
Unclear what that return code is. Let's see what it is for sector 3.
(gdb) i r ah
ah 0x0 0
So let's head to the edge.
0x0100 is the cyl = 1, sectors = 0. I'm pretty sure that's incorrect. I think sectors should be 1.
(gdb) i r ah
ah 0x1 1
Do we not get to read any sector above 0x3f? That would suck. Let's try 0x101.
(gdb) i r ah
ah 0x0 0
0x101 is acceptable. Which means..
Where is this?
512 * (0x3f ± 3)
hex(512*0x3f) '0x7e00'
Whole lot of zeros at that offset. EXT2 is full of 0s. It's like it's power armor.
If we get to 9400 we will see fab8c00731c0, so let's search for that.
00009400 fa b8 c0 07 31 c0 8e d8 8e c0 8e d0 66 bd f0 1f |....1.......f...|
(gdb) find /w 0x7e00, +10000, 0xfab8c007
Pattern not found.
(gdb) find /w 0x7e00, +10000, 0x07c0b8fa
Pattern not found.
Gonna assume that means that 0 return means something bad happened.
Stansislav's HelpPC is pretty useful in this. I dunno why I didn't check it earlier.
00 no error
01 bad command passed to driver
Okay so now we can assume that 0 is good and 1 is very bad. Wait, status is in al, not ah. Wait. Oh this is a bug in the documentation.
Let's check al for number of sectors read.
(gdb) i r ah
ah 0x0 0
(gdb) i r al
al 0x80 -128
I find it a little weird..
0x80*512
65536
That explains that. Let's see if we can figure this out by decrementing. This is my process.
cyl_seq = 0x3f:
(gdb) x/16bx 0x7e00
0x7e00: 0x00 0x00 0x00 0x00 0x00 0x04 0x00 0x00
0x7e08: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
(gdb) i r ah
ah 0x0 0
(gdb) i r al
al 0x80 -128
Okay, so where is our 9400?
00006800 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00 |................|
00006810 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00006c00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00 |................|
00006c10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
(gdb) x/16bx (0x9600)
0x9600: 0xfa 0xb8 0xc0 0x07 0x31 0xc0 0x8e 0xd8
0x9608: 0x8e 0xc0 0x8e 0xd0 0x66 0xbd 0xf0 0x1f
So we're pretty close to solving this mystery..
Rereading HELPPC. It's got a slightly different and easier interpretation. I assume it is wrong, but that's okay.
CH = track/cylinder number (0-1023 dec., see below)
CL = sector number (1-17 dec.)
This can't actually be correct because sectors go from 1-0x3f which is 1-63 but this depends on number of sectors per cylinder. My research in read_drive determined a value of 0x3f from SeaBIOS/Qemu.
So if 0x9400 is at 9600 with cl = 0x3f, then we're off by 1 sector from lining it up. Let's try 0x101 again.
(gdb) x/16bx (0x9400)
0x9400: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x9408: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
(gdb) x/16bx (0x9600)
0x9600: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x9608: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
(gdb) x/16bx (0x7e00)
0x7e00: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x7e08: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
(gdb) x/16bx (0x8000)
0x8000: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x8008: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
No luck. Why? Let's do the LBA calculation again.
u16 nlc=chs.cylinder, nlh=chs.head, nls=chs.sector;
// translate lchs to lba
dop.lba = (((((u32)cylinder * (u32)nlh) + (u32)head) * (u32)nls)
+ (u32)sector - 1);
head = 0
cylinder = 1
sector = 1
nls = 0x3f
nlh = 0xf
lba = (((cylinder * nlh) + head) * nls) + sector - 1
hex(lba)
'0x3b1'
hex(0x3f-1)
'0x3e'
So it skips from sector 0x3e to sector 0x3b1. Let's see where that is.
hex(0x3b1*512)
'0x76200'
That's why. There's no data there. So we want to change the head, not the cylinder.
With head = 0x01 and sector = 0x01
(gdb) x/16bx (0x9400)
0x9400: 0xfa 0xb8 0xc0 0x07 0x31 0xc0 0x8e 0xd8
0x9408: 0x8e 0xc0 0x8e 0xd0 0x66 0xbd 0xf0 0x1f
Now I know: sector << head << cylinder << disk
10:14 <@Javantea> dh is head.
10:16 <@Javantea> that took entirely too long.
So now we do the math again. This is going to be convoluted because it's 0x3e sectors per head.
hex(37*2)
'0x4a'
# We take our value, and it with 0x3f to get sectors
sectors = (37*2) % 0x3e
hex(sectors)
'0xc'
# instead of putting c into sectors we add 1.
# Now to get head, we just get the rest of the bits and put them into a ten bit number.
head = (37*2) // 0x3e
1
# Now we take the lowest 8 bits and put that into the high byte.
.equ cyl_sec 0x0d
.equ head_disk 0x0180
(gdb) x/16bx (0x7e00)
0x7e00: 0xb8 0x00 0x00 0x8e 0xd8 0xe8 0x08 0x00
0x7e08: 0xf4 0x0f 0x0b 0x00 0x00 0x00 0x00 0x00
Off by 1 or 2 or 3. Not a big deal, we got data.
hexdump -C ext2t.bin |grep ' b8 00 00 8e d8 e8 '
00000200 b8 00 00 8e d8 e8 08 00 f4 0f 0b 00 00 00 00 00 |................|
00009600 b8 00 00 8e d8 e8 08 00 f4 0f 0b 00 00 00 00 00 |................|
The reason this appears twice is because it is the start of the second sector of the thing. It appears in the file kernel which is in the filesystem. I decided to put it twice to be easier to code and so that people could use dd to rewrite their boot sector. So which direction? I think I should increment.
(gdb) x/16bx (0x7e00)
0x7e00: 0xfa 0xb8 0xc0 0x07 0x31 0xc0 0x8e 0xd8
0x7e08: 0x8e 0xc0 0x8e 0xd0 0x66 0xbd 0xf0 0x1f
So the question now is what do we want to execute?
objdump -D -b binary -m i8086 --adjust-vma=0x7c00 --start-addr 0x11000 ext2t.bin >ext2t.bin.dis
00011000 <.data+0x9400>:
11000: fa cli
11001: b8 c0 07 mov $0x7c0,%ax
11004: 31 c0 xor %ax,%ax
11006: 8e d8 mov %ax,%ds
11008: 8e c0 mov %ax,%es
1100a: 8e d0 mov %ax,%ss
1100c: 66 bd f0 1f 00 00 mov $0x1ff0,%ebp
11012: 66 89 ec mov %ebp,%esp
11015: bb 00 00 mov $0x0,%bx
11018: b8 e0 07 mov $0x7e0,%ax
1101b: 8e c0 mov %ax,%es
1101d: b9 0e 00 mov $0xe,%cx
11020: ba 80 01 mov $0x180,%dx
11023: b0 80 mov $0x80,%al
11025: b4 02 mov $0x2,%ah
11027: cd 13 int $0x13
It looks like fa
is cli
, so that means.. this looks like the boot sector. so we want to increment by 1 or 2?
.equ cyl_sec, 0x0f
(gdb) x/16bx (0x7e00)
0x7e00: 0xc3 0x8d 0xb4 0x26 0x00 0x00 0x00 0x00
0x7e08: 0x8d 0xb4 0x26 0x00 0x00 0x00 0x00 0x90
Running Interrupt 1 to see what it should look like.
(gdb) x/16bx (0x7e00)
0x7e00: 0xb8 0x00 0x00 0x8e 0xd8 0xe8 0xe8 0x02
0x7e08: 0x8d 0xb4 0x00 0x00 0x8d 0xb4 0x00 0x00
I'm assuming that's mov $0x0, %ax
in _start of interrupt1.c.
So we should look at ext21_p2
objdump -D -b binary -m i8086 ext21_p2 >ext21_p2.dis
00000000 <.data>:
0: fa cli
1: b8 c0 07 mov $0x7c0,%ax
4: 31 c0 xor %ax,%ax
6: 8e d8 mov %ax,%ds
8: 8e c0 mov %ax,%es
a: 8e d0 mov %ax,%ss
c: 66 bd f0 1f 00 00 mov $0x1ff0,%ebp
12: 66 89 ec mov %ebp,%esp
15: bb 00 00 mov $0x0,%bx
18: b8 e0 07 mov $0x7e0,%ax
1b: 8e c0 mov %ax,%es
1d: b9 0c 01 mov $0x10c,%cx
20: ba 80 00 mov $0x80,%dx
23: b0 80 mov $0x80,%al
25: b4 02 mov $0x2,%ah
27: cd 13 int $0x13
29: e9 d4 7f jmp 0x8000
Well that's funny. How did it end up with.. wait a second, that's the wrong cx. Let's fix this.
ext21_p2: ext21kernel.o vga3pci.o vga3stdlib.o interrupt2pic.o serial.o idt.o split.o
$(LD) -m elf_i386 -static -Tmbr1pm_ext2_p2.ld -nostdlib --nmagic -o $@ $^
Little shock.
10:50 <@Javantea> another make bug
10:50 <@Javantea> =O
mv -i ext21_p2 ext21_p2.wtf
make ext21emu
hexdump -C ext21_p2 |head
00000000 c3 8d b4 26 00 00 00 00 8d b4 26 00 00 00 00 90 |...&......&.....|
00000010 0f b6 05 bd ac 00 00 84 c0 0f 88 b9 00 00 00 3c |...............<|
objdump -D -b binary -m i386 ext21_p2 >ext21_p2.dis
00000000 <.data>:
0: c3 ret
1: 8d b4 26 00 00 00 00 lea 0x0(%esi,%eiz,1),%esi
8: 8d b4 26 00 00 00 00 lea 0x0(%esi,%eiz,1),%esi
f: 90 nop
10: 0f b6 05 bd ac 00 00 movzbl 0xacbd,%eax
17: 84 c0 test %al,%al
19: 0f 88 b9 00 00 00 js 0xd8
1f: 3c 2a cmp $0x2a,%al
No sir, that's not the right code. Let's check the split code from zlib 1.
zlib1_p2: zlib1kernel.o vga3pci.o vga3video.o vga3stdlib.o interrupt2pic.o serial.o font1ale.o split.o 2020-05-26.bin.zlib.o
$(LD) -m elf_i386 -static -Tmbr1pm_p2.ld -nostdlib --nmagic -o $@ $^ $(PWD)/zlib-1.2.11/libz.a
.text :
{
*(.startup)
*(.text)
}
Woops. Looking from past hex it should be the one that starts with fa I think.
10:52 <@Javantea> got it
.equ cyl_sec 0xd
worked.
So now I have some ext2 stuff to do in this custom kernel =O. I always like to take snapshots when I make a significant improvement to the code. So...
ls -l ext21
-rwxr-xr-x 1 user user 12444 Jun 9 10:56 ext21

Ext2 1 2020-06-09 10:59:07 PDT
The code from Ext2 1 is equal to ATA 1 with a minor addition: #include <ext2fs.h>
-rwxr-xr-x 1 user user 11984 Jun 9 10:56 ata1
So why is ext21 larger? It's probably global variables defined by ext2fs.h or its dependencies.
Because this file is slightly larger than the 12 blocks that EXT2 has in the inode block array structure (i_block), it won't be the same as the file I tried to put in, so let's fix that now. Right now it isn't causing any trouble, but it will very soon.
sudo mount -o loop,ro ext2t.bin /mnt/sd/
Password:
sudo ls -laR /mnt/sd/
/mnt/sd/:
ls: reading directory '/mnt/sd/': Input/output error
total 0
sudo umount /mnt/sd
dmesg |less
[1463343.596994] EXT2-fs (loop1): error: ext2_check_page: bad entry in directory #2: : rec_len is smaller than minimal - offset=1024, inode=0, rec_len=0, name_len=0
[1463343.596997] EXT2-fs (loop1): error: ext2_readdir: bad page in #2
[1472247.103823] EXT2-fs (loop1): error: ext2_check_page: bad entry in directory #2: : rec_len is smaller than minimal - offset=1024, inode=0, rec_len=0, name_len=0
[1472247.103825] EXT2-fs (loop1): error: ext2_readdir: bad page in #2
So this is interesting.. Let's run our program to find out what's going on.
./e2info -t ext2t.bin
...
Error with block. probably size related.. pos=1024 pos2=1024 size=12288
mode: 41ed
uid: 0000
size: 00003000
So we corrupted our root dir. Let's check the input (original value).
size: 00000400
Okay, let's fix that bug.
inode_table
needs to be read from disk. Not sure how that got missed. Oh well. It is read from disk. And then it's updated:
inode_table.i_size = ((pos2 + 8+6) + (block_size - 1)) & block_mask;
pos2 is incorrect. It must be a bug I fixed or something weird. More variables.
sudo mount -o loop,ro ext2t.bin /mnt/sd/
Password:
sudo ls -laR /mnt/sd/
/mnt/sd/:
total 17
drwxr-xr-x 3 root root 1024 Jun 9 11:16 .
drwxr-xr-x 11 root root 4096 Jan 18 15:53 ..
drwx------ 2 root root 12288 Jun 9 11:16 lost+found
/mnt/sd/lost+found:
total 13
drwx------ 2 root root 12288 Jun 9 11:16 .
drwxr-xr-x 3 root root 1024 Jun 9 11:16 ..
sudo umount /mnt/sd
Better, but now we don't have a directory entry in root for kernel, which is a little weird. So the way this simple program works is that it reads an ext2 filesystem looking for a file anywhere named kernel and it prints it's first block if you give it the flag -t
. If you give it the flag -w
it will write a kernel file you give it to the filesystem. It's equivalent to the commands:
sudo mount -o loop,rw ext2t.bin /mnt/sd/
sudo cp ext21 /mnt/sd/kernel
sudo umount /mnt/sd
So why don't I just call those three commands? As you can see, it uses root. If I was hacking, I would just use root and that would be that. But I'm trying to release a piece of software. I can't use root if there's a better solution. So here we are writing EXT2 code in userland and kernel land. It only took 1.5 days to write 564 lines of code, so it's not too big a deal. But those 1.5 days could have been spent making this game better. Which do you prefer?
fls ext2t.bin
d/d 11: lost+found
V/V 129: $OrphanFiles
fls is worthless.
Let's check the dir entry code and the .. I know the problem. We're modifying the wrong entry.. Fixed a lot of bugs.
...
root block 1024
...
Nope. That's not the right value. The only valid value for root block is 24 according to the code:
b: 24 0
It's a buffer overflow. After setting root_block, it's 24. Then it gets corrupted later:
root block 24
root block 24
root block 24
root block 24
root block 1024
root block 1024
root block 1024
root block 1024
root block 1024
root block 1024
root block 1024
root block 1024
root block 1024
root block 1024
root block 1024
root block 1024
root block 1024
root block 1024
root_block = inode_table.i_block[blocks - 1];
I didn't see this line of code. Fixed. Now I have an error. This should be easier to fix.
11:50 <@Javantea> =/
Endless loop. I didn't think that was possible. Fixed.
root prev pos 24 pos 44
ftp: 24
name: lost+found
inode: 11
rec_len: 18
name_len: 10
root block 24
ftp: 42
name: ^F
inode: 786432
rec_len: 0
name_len: 212
So it's off by 2. I forgot alignment.
sudo mount -o loop,ro ext2t.bin /mnt/sd/
Password:
sudo ls -laR /mnt/sd/
/mnt/sd/:
total 24
drwxr-xr-x 3 root root 1024 Jun 9 12:28 .
drwxr-xr-x 11 root root 4096 Jan 18 15:53 ..
--wx------ 1 root root 12444 Dec 31 1969 kernel
drwx------ 2 root root 12288 Jun 9 12:28 lost+found
/mnt/sd/lost+found:
total 13
drwx------ 2 root root 12288 Jun 9 12:28 .
drwxr-xr-x 3 root root 1024 Jun 9 12:28 ..
sudo sha512sum /mnt/sd/kernel
86ad4279c37c84b78780afcbc7a204dfcdfda967ac33bcf4d525ed39c62ac2bbf9884685c47ef105f83f51d9ac6eaf8bd6c9774ea5104338f61afd06e7e729aa /mnt/sd/kernel
sudo umount /mnt/sd
Now we're working with a valid ext2 partition.
Mood music: profundo
sha512sum ext21
86ad4279c37c84b78780afcbc7a204dfcdfda967ac33bcf4d525ed39c62ac2bbf9884685c47ef105f83f51d9ac6eaf8bd6c9774ea5104338f61afd06e7e729aa ext21
It's a little surprising that this fits in 12 blocks since it shouldn't according to these docs. Let's do the math. We'll need to implement this code in a few minutes, so it doesn't matter too much.
12444/1024
12.15234375
So let's look at the code that makes it happen. Oh I implemented yesterday I guess. I forgot until I looked at it. It's only going to support files up to 274432 bytes, which is 268 KiB. Since our zlib files could get to be 268 KiB pretty quickly, it makes sense to implement the double redirected block array, which should support files of size 67383296 bytes, which is more than 64 MB. Since we're trying to be reasonable, there's only one reason to go the next level and that is to support arbitrary ext2 filesystems which we are definitely not trying to do. This is week 6 of this project. This project was supposed to take 4 weeks. I'm letting it go a while longer to deal with the obvious time prediction failure. We're going onto a new project at a day in the future and I'd like to publish this.
Got the magic out.

Ext2 1 2020-06-09 12:50:11 PDT
Copied code from e2info, ported it to my limited kernel style -- no printf, no fread, no fseek. Instead I used puts_current (a puts-alike), puts_u32 (a thing that prints unsigned 32-bit ints hex like %08x), and ata_read (a function that reads a sector from disk given its LBA using direct port IO). You'd be surprised how easy and powerful this code is. When we get to reading whole files at once (almost never), we might need something that reads more than 512 bytes at a time.
// Read the superblock
ata_read((u8 *)superblock, 0x2);
ata_read(((u8 *)superblock)+512, 0x3);

Ext2 1 2020-06-09 13:02:47 PDT
13:17 <@Javantea> so why did I need a filesystem again?
I was thinking about how I need to read and write to disk for save/load. That was it. Tracker 1 was at the point where I had pretty good setup. And I wanted a log on disk.
So the first thing I should do is grab a file's data by name. This is going to require a valid malloc I think. I don't have a good malloc right now, so let's try out dlmalloc. We'll need to provide it a valid mmap I think...
Let's get it to work for files of a static size and then work our way up. Slow but steady. Since this code is going to be very messy, I might as well start with Linux kernel and libc on my side so that I can debug with code. First function is int get_block(u8 *out, char *filename)
.
I just refactored write_kernel out of main and now it's a mess. Finally done 14:05.
After a break, I implemented get_block in 117 lines of code. It was mostly copy and paste. 15:06. So now we're ready to copy and paste into our kernel.
I forgot more than two of my important projects to work on this project day and night. I suppose I hoped that most of the projects would continue, but I guess I excused them falling behind due to the duration of this project being limited and those being "until I finish".
15:18 <@Javantea> thinking about a weird malloc...
15:19 <@Javantea> so you write size and then you return a pointer after.
15:19 <@Javantea> on free, you go back the size of size, and you free that. done, right?
15:20 <@Javantea> you have to walk the list to find a free block and how do you know if it's free? you need a byte for that, okay now we've
got an array of (size, free, data) right?
15:21 <@Javantea> so now to allocate you need to find the right free one and put it there, right?
15:21 <@Javantea> seems like keeping a pointer would help.
15:22 <@Javantea> gonna stop here since I've been working since 7am. that's 8+ hours
15:22 <@Javantea> I want to reward myself for doing a good day of work...
15:23 <@Javantea> need better rewards
I defeated master mode Eye of Cthulhu on first try. It was actually not too difficult. Brain should be much more difficult. I know skeletron pretty well, but I'll have to use sleep to get a good run at him. I didn't use good armor for Eye since I knew the pattern pretty well for phase 1. Phase 2 was pretty easy. He killed one of my NPCs because I ran back and forth over my two forest houses.
I think I can write kernel code now. I'm not afraid of consequences of not knowing stuff anymore. Anything I want to work better I can contribute. And if I fail, I'll learn more.
I just realized I have everything I need for save and load. It's gonna take a bit of code, but it's just this and that.
Software is really getting to a weird point... While I go deeper, others are going further.
[OPL2] The Secret of Monkey Island - Title (Oscilloscope View)
viva la revolución tramp stamp
2020-06-10
09:14 <@Javantea> letting an unvetted program have port io is foolish, but vetting a pretty large program so that you can play VGMs without
infecting your program with malware is also weird.
09:15 <@Javantea> so it makes sense to instead write port io malware, then publish while listening to VGMs emulated.
09:16 <@Javantea> gonna listen to pixelated audio. hopefully that will keep me going for >8h
09:17 <@Javantea> they have good patreon rewards
09:18 <@Javantea> I think improving alsa and/or pulseaudio is in the cards for me. maybe writing a compliant replacement for pulseaudio.
09:21 <@Javantea> Episode 128 is Psycho World, MSX FM, MSX PSG, and SMS PSG (Sega Master System). MSX FM is YM2413
https://en.wikipedia.org/wiki/Yamaha_YM2413
09:22 <@Javantea> let's get this code written.
09:22 <@Javantea> still gonna work on the blog.
Since the OPLL is a cost-reduced version of the OPL2, it seems sensible that the OPL2 could emulate the OPLL.
"the channels are not mixed using an adder; instead, the chip's DAC uses time-division multiplexing to play short segments of each channel in sequence, as also done in the YM2612."
Addition is cheap, isn't it?
So we're porting from C with linux kernel and libc to our kernel. I ported fread and printf. It'd be nice to have these functions now.
ext21kernel.c:(.text+0x4bf): undefined reference to `__memcpy_chk'
ld: ext21kernel.c:(.text+0x4d8): undefined reference to `strcmp'
ld: ext21kernel.c:(.text+0x57e): undefined reference to `align'
ld: ext21kernel.c:(.text+0x600): undefined reference to `align'
09:53 <@Javantea> strcmp is hard to understand.
09:54 <@Javantea> it seems quite contradictory.
09:56 <@Javantea> the pixel art in Psycho World is great. I hope my pixel art lives up to the this..
Psycho World - Playthrough - Normal Mode
10:04 <@Javantea> got it running..
10:04 <@Javantea> -D_FORTIFY_SOURCE=0
Error: root_block_i is not big enough for block size.
Not bad. I can only guess what this standin for an assert found. block_size got set to 0 somehow. Nifty.
My temperature: 36.3°C
There's only one thing between printing of block_size when it's 0x400 and when it's 0x0. So let's debug that:
read_items = partial_read((u8 *)group_desc, 0x4, sizeof(struct ext2_group_desc));
So it's blank before the first function call in partial read. So.. I'm guessing we've got some very weird stuff.
puts_u32(&block_size);
block_size is at 0000c1a0
Okay, so we now know the address of it. Let's find out where the stack is.
Stack is at 61de0
, so that isn't our problem.
Fixed. We double-defined it. One in global scope, one in local scope. That was not intended. Now we should have this.
Now there's no error except our Error: Couldn't find "kernel";
I bet it's strcmp.
root_inode_ob
never gets read. That would do it.
So now I'm splitting up the code into root and kernel.
I wrote the code, now let's make it happen. Block bitmap is not working, inode bitmap is. So half done?
11:17 <@Javantea> Pac-Man music is 5 seconds long =O
11:17 <@Javantea> that seems weird, let's see what it looks like.
11:18 <@Javantea> oh dear. that's terrible.
11:19 <@Javantea> I should add music to my pac-man rom
block_bitmap_location
is 0. That's not supposed to be that way.
Okay, group_desc[0].bg_block_bitmap
is flipping back and forth from correct value and 0. Mostly 0.
Debugging ata_read
. ugh. Let's use serial.
qemu-system-x86_64 -soundhw adlib -S -serial pty -drive "if=ide,file=ext2t.bin,format=raw" -boot c
char device redirected to /dev/pts/23 (label serial0)
cat /dev/pts/23
log_block_size: 00000000 block_size: 00000400 read-->disk disk d0; d0; drq \x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x00\x00\xda\x03u\x00\x02\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 end read<-- s 00000006 s 00000007 debug 00000006 debug 00000007 read-->disk disk d0; d0; d0; drq \xff\xff\xff\xff\xff\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
xff\xff\xff\
xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff end read<-- read-->disk disk d0; drq \xff\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff end read<--block_bitmap:
inode_bitmap:
Error: Bitmap is full?
--reset--
log_block_size: 00000000 block_size: 00000400 read-->disk disk d0; d0; drq \x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x00\x00\xda\x03u\x00\x02\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 end read<-- s 00000006 s 00000007 debug 00000006 debug 00000007 read-->disk disk d0; drq \xff\xff\xff\xff\xff\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\
xff\xff\xff\
xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff end read<-- read-->disk disk d0; drq \xff\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff end read<--block_bitmap:
inode_bitmap:
read-->disk disk d0; drq \x00\x00\x00\x00\x00\x00\x00\x00\x940\xe1^\x940\xe1^\x940\xe1^\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xedA\x00\x00\x00\x04\x00\x00\x940\xe1^\x940\xe1^\x940\xe1^\x00\x00\x00\x00\x00\x00\x03\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 end read<--inode[00000000]:
mode: 0000 uid: 0000 size: 00000000 atime: 5ee13094 ctime: 5ee13094 dtime: 00000000 gid: 0000 links_count: 0000 blocks: 0000 flags: 0000 read-->disk disk d0; drq \x00\x00\x00\x00\x00\x00\x00\x00\x940\xe1^\x940\xe1^\x940\xe1^\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xedA\x00\x00\x00\x04\x00\x00\x940\xe1^\x940\xe1^\x940\xe1^\x00\x00\x00\x00\x00\x00\x03\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 end read<--inode[00000001]:b: 00000018 00000000
mode: 41ed uid: 0000 size: 00000400 atime: 5ee13094 ctime: 5ee13094 dtime: 00000000 gid: 0000 links_count: 0003 blocks: 0002 flags: 0000 read-->disk disk d0; drq \x00\x00\x00\x00\x00\x00\x00\x00\x940\xe1^\x940\xe1^\x940\xe1^\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xedA\x00\x00\x00\x04\x00\x00\x940\xe1^\x940\xe1^\x940\xe1^\x00\x00\x00\x00\x00\x00\x03\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 end read<--inode[00000002]:
mode: 0000 uid: 0000 size: 00000000 atime: 00000000 ctime: 00000000 dtime: 00000000 gid: 0000 links_count: 0000 blocks: 0000 flags: 0000 read-->disk disk drq \x00\x00\x00\x00\x00\x00\x00\x00\x940\xe1^\x940\xe1^\x940\xe1^\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xedA\x00\x00\x00\x04\x00\x00\x940\xe1^\x940\xe1^\x940\xe1^\x00\x00\x00\x00\x00\x00\x03\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 end read<--inode[00000003]:
mode: 0000 uid: 0000 size: 00000000 atime: 00000000 ctime: 00000000 dtime: 00000000 gid: 0000 links_count: 0000 blocks: 0000 flags: 0000 read-->disk disk d0; drq \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x81\x00\x00\x000\x04\x04\x940\xe1^\x940\xe1^\x940\xe1^\x00\x00\x00\x00\x00\x00\x01\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00%\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 end read<--inode[00000004]:
mode: 0000 uid: 0000 size: 00000000 atime: 00000000 ctime: 00000000 dtime: 00000000 gid: 0000 links_count: 0000 blocks: 0000 flags: 0000 read-->disk disk drq \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x81\x00\x00\x000\x04\x04\x940\xe1^\x940\xe1^\x940\xe1^\x00\x00\x00\x00\x00\x00\x01\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00%\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 end read<--inode[00000005]:
mode: 0000 uid: 0000 size: 00000000 atime: 00000000 ctime: 00000000 dtime: 00000000 gid: 0000 links_count: 0000 blocks: 0000 flags: 0000 read-->disk disk drq \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x81\x00\x00\x000\x04\x04\x940\xe1^\x940\xe1^\x940\xe1^\x00\x00\x00\x00\x00\x00\x01\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00%\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 end read<--inode[00000006]:b: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
mode: 8180 uid: 0000 size: 04043000 atime: 5ee13094 ctime: 5ee13094 dtime: 00000000 gid: 0000 links_count: 0001 blocks: 0008 flags: 0000 read-->disk disk d0; d0; drq \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x81\x00\x00\x000\x04\x04\x940\xe1^\x940\xe1^\x940\xe1^\x00\x00\x00\x00\x00\x00\x01\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00%\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 end read<--inode[00000007]:
mode: 0000 uid: 0000 size: 00000000 atime: 00000000 ctime: 00000000 dtime: 00000000 gid: 0000 links_count: 0000 blocks: 0000 flags: 0000 read-->disk disk d0; drq \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0A\x00\x00\x000\x00\x00\x940\xe1^\x940\xe1^\x940\xe1^\x00\x00\x00\x00\x00\x00\x02\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00 \x00\x00\x00!\x00\x00\x00"\x00\x00\x00#\x00\x00\x00$\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x80\x00\x00\x10B\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00%\x00\x00\x00&\x00\x00\x00'\x00\x00\x00(\x00\x00\x00)\x00\x00\x00*\x00\x00\x00+\x00\x00\x00,\x00\x00\x00-\x00\x00\x00.\x00\x00\x00/\x00\x00\x000\x00\x00\x006\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 end read<--inode[00000008]:
mode: 0000 uid: 0000 size: 00000000 atime: 00000000 ctime: 00000000 dtime: 00000000 gid: 0000 links_count: 0000 blocks: 0000 flags: 0000 read-->disk disk d0; drq \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0A\x00\x00\x000\x00\x00\x940\xe1^\x940\xe1^\x940\xe1^\x00\x00\x00\x00\x00\x00\x02\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00 \x00\x00\x00!\x00\x00\x00"\x00\x00\x00#\x00\x00\x00$\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x80\x00\x00\x10B\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00%\x00\x00\x00&\x00\x00\x00'\x00\x00\x00(\x00\x00\x00)\x00\x00\x00*\x00\x00\x00+\x00\x00\x00,\x00\x00\x00-\x00\x00\x00.\x00\x00\x00/\x00\x00\x000\x00\x00\x006\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 end read<--inode[00000009]:
mode: 0000 uid: 0000 size: 00000000 atime: 00000000 ctime: 00000000 dtime: 00000000 gid: 0000 links_count: 0000 blocks: 0000 flags: 0000 read-->disk disk d0; drq \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0A\x00\x00\x000\x00\x00\x940\xe1^\x940\xe1^\x940\xe1^\x00\x00\x00\x00\x00\x00\x02\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00 \x00\x00\x00!\x00\x00\x00"\x00\x00\x00#\x00\x00\x00$\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x80\x00\x00\x10B\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00%\x00\x00\x00&\x00\x00\x00'\x00\x00\x00(\x00\x00\x00)\x00\x00\x00*\x00\x00\x00+\x00\x00\x00,\x00\x00\x00-\x00\x00\x00.\x00\x00\x00/\x00\x00\x000\x00\x00\x006\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 end read<--inode[0000000a]:b: 00000019 0000001a 0000001b 0000001c 0000001d 0000001e 0000001f 00000020 00000021 00000022 00000023 00000024
TODO: more than 12 blocks
mode: 41c0 uid: 0000 size: 00003000 atime: 5ee13094 ctime: 5ee13094 dtime: 00000000 gid: 0000 links_count: 0002 blocks: 0018 flags: 0000 read-->disk disk d0; drq \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0A\x00\x00\x000\x00\x00\x940\xe1^\x940\xe1^\x940\xe1^\x00\x00\x00\x00\x00\x00\x02\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00 \x00\x00\x00!\x00\x00\x00"\x00\x00\x00#\x00\x00\x00$\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x80\x00\x00\x10B\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00%\x00\x00\x00&\x00\x00\x00'\x00\x00\x00(\x00\x00\x00)\x00\x00\x00*\x00\x00\x00+\x00\x00\x00,\x00\x00\x00-\x00\x00\x00.\x00\x00\x00/\x00\x00\x000\x00\x00\x006\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 end read<--inode[0000000b]:b: 00000025 00000026 00000027 00000028 00000029 0000002a 0000002b 0000002c 0000002d 0000002e 0000002f 00000030
mode: 80c0 uid: 0000 size: 00004210 atime: 00000000 ctime: 00000000 dtime: 00000000 gid: 0000 links_count: 0001 blocks: 0011 flags: 0000 read-->disk disk drq \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 end read<--inode[0000000c]:
mode: 0000 uid: 0000 size: 00000000 atime: 00000000 ctime: 00000000 dtime: 00000000 gid: 0000 links_count: 0000 blocks: 0000 flags: 0000
#"
What a gigantic mess. So we've got some pretty serious bugs.
An example of when ata_read
fails. It looks like drq
is failing. Found a big bug in ata_read
.
cat /dev/pts/23
log_block_size: 00000000 block_size: 00000400 read-->disk disk drq \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 end read<-- s 00000000 s 00000000 debug 00000000 debug 00000000 read-->disk disk d0; d0; d0; d0; drq \xfa\xb8\xc0\x071\xc0\x8e\xd8\x8e\xc0\x8e\xd0f\xbd\xf0\x1f\x00\x00f\x89\xec\xbb\x00\x00\xb8\xe0\x07\x8e\xc0\xb9\x0d\x00\xba\x80\x01\xb0\x80\xb4\x02\xcd\x13\xe9\xd4\x01Uf\x89\xe5fSfQf1\xdbg\x8b]\x04&g\x8a\x0b\xeb\x0ff\x89\xd8&g\x8a\x00\x88\xc1\xb4\x0e\xcd\x10fC\x80\xf9\x00u\xecf1\xc0fYf[\xc9\xc3f\x90\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x9a\xcf\x00\xff\xff\x00\x00\x00\x92\xcf\x00\xff\xff\x00\x00\x00\xfa\x00\x00\xff\xff\x00\x00\x00\xf2\x00\x00\xeb\x16\x8d\xb4&\x00\x00\x00\x00\x8d\xb4&\x00\x00\x00\x00\x8d\xb4&\x00\x00\x00\x00\x90'\x00`|\x00\x00\xfa\x0f\x01\x16\xa0|\xe4\x92\x0c\x02\xe6\x92\x0f \xc0\x0c\x01\x0f"\xc0\xea\xbf|\x08\x00f\xb8\x10\x00\x8e\xd8\x8e\xc0\x8e\xe0\x8e\xe8\x8e\xd0\xbc \x06\x00\xe9)\x03\x00\x00\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
x00\x00\x00\x00\x00\x00\x00\x00\x00\
x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00U\xaa end read<-- read-->disk disk d0; d0; d0; d0; drq \xfa\xb8\xc0\x071\xc0\x8e\xd8\x8e\xc0\x8e\xd0f\xbd\xf0\x1f\x00\x00f\x89\xec\xbb\x00\x00\xb8\xe0\x07\x8e\xc0\xb9\x0d\x00\xba\x80\x01\xb0\x80\xb4\x02\xcd\x13\xe9\xd4\x01Uf\x89\xe5fSfQf1\xdbg\x8b]\x04&g\x8a\x0b\xeb\x0ff\x89\xd8&g\x8a\x00\x88\xc1\xb4\x0e\xcd\x10fC\x80\xf9\x00u\xecf1\xc0fYf[\xc9\xc3f\x90\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x9a\xcf\x00\xff\xff\x00\x00\x00\x92\xcf\x00\xff\xff\x00\x00\x00\xfa\x00\x00\xff\xff\x00\x00\x00\xf2\x00\x00\xeb\x16\x8d\xb4&\x00\x00\x00\x00\x8d\xb4&\x00\x00\x00\x00\x8d\xb4&\x00\x00\x00\x00\x90'\x00`|\x00\x00\xfa\x0f\x01\x16\xa0|\xe4\x92\x0c\x02\xe6\x92\x0f \xc0\x0c\x01\x0f"\xc0\xea\xbf|\x08\x00f\xb8\x10\x00\x8e\xd8\x8e\xc0\x8e\xe0\x8e\xe8\x8e\xd0\xbc \x06\x00\xe9)\x03\x00\x00\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00U\xaa end read<--block_bitmap:
inode_bitmap:
read-->disk disk d0; drq \xfa\xb8\xc0\x071\xc0\x8e\xd8\x8e\xc0\x8e\xd0f\xbd\xf0\x1f\x00\x00f\x89\xec\xbb\x00\x00\xb8\xe0\x07\x8e\xc0\xb9\x0d\x00\xba\x80\x01\xb0\x80\xb4\x02\xcd\x13\xe9\xd4\x01Uf\x89\xe5fSfQf1\xdbg\x8b]\x04&g\x8a\x0b\xeb\x0ff\x89\xd8&g\x8a\x00\x88\xc1\xb4\x0e\xcd\x10fC\x80\xf9\x00u\xecf1\xc0fYf[\xc9\xc3f\x90\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x9a\xcf\x00\xff\xff\x00\x00\x00\x92\xcf\x00\xff\xff\x00\x00\x00\xfa\x00\x00\xff\xff\x00\x00\x00\xf2\x00\x00\xeb\x16\x8d\xb4&\x00\x00\x00\x00\x8d\xb4&\x00\x00\x00\x00\x8d\xb4&\x00\x00\x00\x00\x90'\x00`|\x00\x00\xfa\x0f\x01\x16\xa0|\xe4\x92\x0c\x02\xe6\x92\x0f \xc0\x0c\x01\x0f"\xc0\xea\xbf|\x08\x00f\xb8\x10\x00\x8e\xd8\x8e\xc0\x8e\xe0\x8e\xe8\x8e\xd0\xbc \x06\x00\xe9)\x03\x00\x00\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00U\xaa end read<--
when it's working we see: read-->disk disk d0; d0; drq
when it's not: read-->disk disk drq
So we need it to do 2 d0
. So the code is in ata_ready_wait
not drq
. I failed to understand the code. Let's figure this out.
cat /dev/pts/23
log_block_size: 00000000 block_size: 00000400 read-->disk 58; 58; disk 58; 58; drq \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 end read<-- s 00000000 s 00000000 debug 00000000 debug 00000000 read-->disk 50; 50; disk 58; 58; drq \xfa\xb8\xc0\x071\xc0\x8e\xd8\x8e\xc0\x8e\xd0f\xbd\xf0\x1f\x00\x00f\x89\xec\xbb\x00\x00\xb8\xe0\x07\x8e\xc0\xb9\x0d\x00\xba\x80\x01\xb0\x80\xb4\x02\xcd\x13\xe9\xd4\x01Uf\x89\xe5fSfQf1\xdbg\x8b]\x04&g\x8a\x0b\xeb\x0ff\x89\xd8&g\x8a\x00\x88\xc1\xb4\x0e\xcd\x10fC\x80\xf9\x00u\xecf1\xc0fYf[\xc9\xc3f\x90\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x9a\xcf\x00\xff\xff\x00\x00\x00\x92\xcf\x00\xff\xff\x00\x00\x00\xfa\x00\x00\xff\xff\x00\x00\x00\xf2\x00\x00\xeb\x16\x8d\xb4&\x00\x00\x00\x00\x8d\xb4&\x00\x00\x00\x00\x8d\xb4&\x00\x00\x00\x00\x90'\x00`|\x00\x00\xfa\x0f\x01\x16\xa0|\xe4\x92\x0c\x02\xe6\x92\x0f \xc0\x0c\x01\x0f"\xc0\xea\xbf|\x08\x00f\xb8\x10\x00\x8e\xd8\x8e\xc0\x8e\xe0\x8e\xe8\x8e\xd0\xbc \x06\x00\xe9)\x03\x00\x00\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
x00\x00\x00\x00\x00\x00\x00\x00\x00\
x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00U\xaa end read<-- read-->disk 50; 50; disk d0; d0; d0; drq \xfa\xb8\xc0\x071\xc0\x8e\xd8\x8e\xc0\x8e\xd0f\xbd\xf0\x1f\x00\x00f\x89\xec\xbb\x00\x00\xb8\xe0\x07\x8e\xc0\xb9\x0d\x00\xba\x80\x01\xb0\x80\xb4\x02\xcd\x13\xe9\xd4\x01Uf\x89\xe5fSfQf1\xdbg\x8b]\x04&g\x8a\x0b\xeb\x0ff\x89\xd8&g\x8a\x00\x88\xc1\xb4\x0e\xcd\x10fC\x80\xf9\x00u\xecf1\xc0fYf[\xc9\xc3f\x90\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x9a\xcf\x00\xff\xff\x00\x00\x00\x92\xcf\x00\xff\xff\x00\x00\x00\xfa\x00\x00\xff\xff\x00\x00\x00\xf2\x00\x00\xeb\x16\x8d\xb4&\x00\x00\x00\x00\x8d\xb4&\x00\x00\x00\x00\x8d\xb4&\x00\x00\x00\x00\x90'\x00`|\x00\x00\xfa\x0f\x01\x16\xa0|\xe4\x92\x0c\x02\xe6\x92\x0f \xc0\x0c\x01\x0f"\xc0\xea\xbf|\x08\x00f\xb8\x10\x00\x8e\xd8\x8e\xc0\x8e\xe0\x8e\xe8\x8e\xd0\xbc \x06\x00\xe9)\x03\x00\x00\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00U\xaa end read<--block_bitmap:
inode_bitmap:
read-->disk 50; 50; disk d0; d0; d0; drq \xfa\xb8\xc0\x071\xc0\x8e\xd8\x8e\xc0\x8e\xd0f\xbd\xf0\x1f\x00\x00f\x89\xec\xbb\x00\x00\xb8\xe0\x07\x8e\xc0\xb9\x0d\x00\xba\x80\x01\xb0\x80\xb4\x02\xcd\x13\xe9\xd4\x01Uf\x89\xe5fSfQf1\xdbg\x8b]\x04&g\x8a\x0b\xeb\x0ff\x89\xd8&g\x8a\x00\x88\xc1\xb4\x0e\xcd\x10fC\x80\xf9\x00u\xecf1\xc0fYf[\xc9\xc3f\x90\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x9a\xcf\x00\xff\xff\x00\x00\x00\x92\xcf\x00\xff\xff\x00\x00\x00\xfa\x00\x00\xff\xff\x00\x00\x00\xf2\x00\x00\xeb\x16\x8d\xb4&\x00\x00\x00\x00\x8d\xb4&\x00\x00\x00\x00\x8d\xb4&\x00\x00\x00\x00\x90'\x00`|\x00\x00\xfa\x0f\x01\x16\xa0|\xe4\x92\x0c\x02\xe6\x92\x0f \xc0\x0c\x01\x0f"\xc0\xea\xbf|\x08\x00f\xb8\x10\x00\x8e\xd8\x8e\xc0\x8e\xe0\x8e\xe8\x8e\xd0\xbc \x06\x00\xe9)\x03\x00\x00\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00U\xaa end read<--
So we need to know what the 58
means.
BSY RDY DF SRV DRQ CORR IDX ERR
So 58 is 0 1 0 1 1 0 0 0
Ready, Overlapped Mode Service Request, Has data to transfer.
So this is weird. Maybe there is some sort of flush?
Added flush. Now to test this sob.
13:54 <@Javantea> sunny, I should go tan..
14:09 <@Javantea> went out for a few minutes
So it thinks it got the kernel, but it's all zeros. Which means we're almost there. Let's test reliability. It's reliable.
kernel inode: 0000000c
Is this it?
I spent a while considering the Capitol Hill Autonomous Zone. I have not seen it but I like it and I think I will support it. Tomorrow I'll spend the day trying to understand it and document it.
Now let's make this work sheesh.
kernel inode: 0000000c
offset: 00002600
Surprising, that is indeed a legitimately blank block.
000025e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00006000 02 00 00 00 0c 00 01 02 2e 00 00 00 02 00 00 00 |................|
inode_table offset: 00002000
0x600/0xc
128.0
./e2info -t ext2t.bin
...
inode[11]:
kernel_block: 37
b: 37 38 39 40 41 42 43 44 45 46 47 48
mode: 80c0
uid: 0000
size: 00004570
atime: 00000000
ctime: 00000000
dtime: 00000000
gid: 0000
links_count: 0001
blocks: 0012
flags: 0000
I forgot to subtract 1. That should fix this.
Unclear why inodes are 128 bytes. u32 * 14 would do it. 56 bytes.
16:20 <@Javantea> did it. finally got the first block out of kernel from my kernel.
So it was that I had kernel_inode
from the root dir. Inode values are always 1 larger than the correct value. So kernel_inode = 0xc
means offset 0xb
.
Wow that's a lot of music.
So now we have a function that grabs a block from a file. Let's create a function that creates a file ala fopen(filename, "wb")
. We can create directories eventually, but all in good time.
SHA512 would let me confirm the values are all correct, but it isn't really necessary. Let's do CRC32 instead. =]
1074 lines of code.
17896 Jun 10 16:48 ext21
16:47 <@Javantea> "FM synthesis is like programming a sythesizer with a broom through a mail slot." 1:45:00
crc32: 901627ab
17:02 <@Javantea> military helicopter flying overhead.
Using a public domain crc32 implementation from http://home.thep.lu.se/~bjorn/crc/. Thanks Björn.
Now we do the same with python.
import zlib
a = open('ext2t.bin','rb').read(1024)
hex(zlib.crc32(a))
'0x901627ab'
Good enough.
Day is just about over but I could keep going. Let's do some exercise and then continue.
Okay exercised a bit, more errands...
Errands done.
So now let's add files and read.
Wrote the code. First run:
Magic value is wrong 2228
Okay, easy fix. So now I can add arbitrary files.
./e2info -w --kname ext21kernel.c ext2t1.bin ext21kernel.c
Easy. So now I should port that code to my kernel.. But first.. I want to write the code to read... I guess I can get the first block, but I want the second block too. For cheaper than the first.
There are a ton of nulls in the first block of this partition. Like a lot.
So most of the function is spent trying to find the inode. So if we keep the inode or return it in some sort of struct, then we can pretty easily skip the hard part which we can of course split into its own function. Seems sensible.
Committed to git at 20:42.
So the next piece is to save. Which is very similar to ata_read
but to do a save correctly, we need to port the code from e2info
. Then I can save a song as a simple file, then I can load them after exit. The question then becomes how to retrieve those files. I guess I'll make a copy of e2info that grabs all files except kernel. Something similar to tar xvf
. That way I can put them back in after overwriting the image file.
I need some good tea.
2020-06-11
07:47 <@Javantea> breakfast is a fuji apple and green tea
07:47 <@Javantea> first time in a while
07:51 <@Javantea> unclear why there are people on ww7psr this morning
I'm ready to work on the project this morning.
07:56 <@Javantea> 36.1°C
So let's write a file. Before that, I need to port my fix from Ext2 1 (the Ext2 demo kernel) to ATA 1 (the ATA demo kernel).
ext21kernel.c:667:29: warning: passing argument 1 of ‘partial_read_offset’ from incompatible pointer type [-Wincompatible-pointer-types]
667 | partial_read_offset(&inode_table, (block_size*group_desc[0].bg_inode_table) + (sizeof(struct ext2_inode) * i), sizeof(struct ext2_inode));
| ^~~~~~~~~~~~
| |
| struct ext2_inode *
ext21kernel.c:98:29: note: expected ‘u8 *’ {aka ‘unsigned char *’} but argument is of type ‘struct ext2_inode *’
98 | int partial_read_offset(u8 *out, int offset, size_t size);
| ~~~~^~~
That seems like a pretty serious bug. Nope, just needs a cast to u8 *
. Okay, so now we write a file. We also need the ability to overwrite a file. Overwriting a file is much like reading a file -- get_inode, then write to it. Creating a new file we've done already, so it's a matter of copying and porting.
get_root_block
seems awfully similar to get_block
now that I think of it. So that will eventually be merged.
Normal browsing hacker news I found an open source flask/react audio annotation software. That seems like it'll be useful to someone. I have something toward hundreds of hours of my speech recorded now, so it's a matter of time until I'll want a text copy and the ability to create a simple codec for my natural voice. It make sense to use Common Voice for a bunch of different uses like this, but so far I haven't done the plug in and turn on thing. I will eventually..
Thinking about setting my laptop up in such a way that I can ssh into it and do GPU stuff since it has a nice NVidia card. My desktop has a Radeon HD 7700, which can do OpenCL but not rOCM, so it's all CPU for any deep learning stuff I want to do.
LPCNet is a speech synthesizer for example that I could pretty easily run on my voice.
Realized that Ctags must update using inotify or something like that. How does that even work?
I just realized I can skip to the last block of the root dir if I wanted to. That would save some io and some cpu. That's gotta be the reason why they do what they do with the whole silly block-only records.
ext21kernel.c: In function ‘get_free_inode’:
ext21kernel.c:598:12: warning: ‘prev_pos’ may be used uninitialized in this function [-Wmaybe-uninitialized]
598 | return ret;
| ^~~
These type of static analysis warnings are terribly useful when they are on the money.
Reading 111-1c.pdf to find out the correct value for ATA_WRITE.
2020-05-28:16:04 < Javantea> 111-1c.pdf from ftp://ftp.seagate.com/acrobat/reference/111-1c.pdf
This documentation is excellent. I should read it again.
Page 34.
Command name | Type | Code |
---|---|---|
Read Sectors (w/retry) | PIOR | 20H |
Write Sectors (w/retry) | PIOW | 30H |
I realize that there are better commands for different situations, but simplicity is important right now for me.
#define ATA_WRITE 0x30
I haven't worn deodorant in a long time. My roommates must think I'm a barbarian.
write-->disk ; 4141; disk ; 5858; drq end write<-- write-->disk ; 5050; disk ; 5858; drq end write<--
write-->disk ; 5050; disk ; 5858; drq end write<-- write-->disk ; 5050; disk ; 5858; drq end write<--
write-->disk ; 5050; disk ; 5858; drq end write<-- write-->disk ; 5050; disk ; 5858; drq end write<--
write-->disk ; 5050; disk ; 5858; drq end write<-- write-->disk ; 5050; disk ; 5858; drq end write<--
00010000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
*
Wrote happened, but it got the wrong data. ffff
instead of what it should have been..
Let's try 1212
.
Looks like it's frozen. unclear what happened. Reset worked...
*
00010000 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 |................|
*
00010200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00010e00 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 |................|
*
00011000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
So it's taking data. Might be a vram problem. The fact that there aree nils in between means some of it failed.
First one succeeded, second one did not. third one...
write-->disk ; 5050; disk ; 5858; drq end write<--
write-->disk ; d0d0; d0; d0; d0; d0; d0; d0; d0; d0; d0; disk ; d0d0; d0; d0; d0; d0; d0; d0; d0; d0; d0; drq d0; d0; d0; d0; d0; d0; d0; d0; d0; end write<--
write-->disk ; d0d0; d0; d0; d0; d0; d0; d0; d0; d0; d0; disk ; d0d0; d0; d0; d0; d0; d0; d0; d0; d0; d0; drq d0; d0; d0; d0; d0; d0; d0; 50; 50; end write<--
write-->disk ; 5050; disk ; 5858; drq end write<--
write-->disk ; 5050; disk ; 5858; drq end write<--
write-->disk ; 5050; disk ; 5858; drq end write<--
write-->disk ; 5050; disk ; 5858; drq end write<--
write-->disk ; d0d0; d0; disk ; 5858; drq end write<--
wrote
Unclear what's going on... I think I need to read more. But you can probably guess that I'm excited to go to CHAZ today.
12:05 <@Javantea> ah twitter. is there no...
12:07 <@Javantea> here's a person begging for donations pretending to be CHAZ. https://twitter.com/chaz_funding
12:10 <@Javantea> I wonder how many scams that person has setup on twitter at the same time..
It feels like reading the new section of twitter is like... walking straight into the asylum of jerks and 13-year-olds shouting. Is that really how our Internet works? Smart people don't post enough, so... Maybe we could filter out the bullshit. All the accounts made in the past 5ish hours. All the people using racial slurs or ... Maybe I could write a simple piece of software that does this. That seems like an idea. Of course Twitter's API requires giving them my phone number, so.. Fat chance? I wonder if I could get Twitter to discuss the reason why I don't want my identity connected to my Twitter account and. Hahaha.
Okay so it seems pretty simple so... let's read for 5 minutes and then we can go to the utopia.
"The drive enters Sleep mode when a Sleep Immediate command has been received from the host. The heads are parked and the spindle is at rest. The drive leaves Sleep mode when a Hard Reset or Soft Reset command is sent from the host."
Seems legit. Reading and writing multiple should become a thing. That seems pretty easy, no? Was very easy. Now I support between 0 and 256 sectors at a time with ata_read_multi
and ata_write_multi
00010000 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 |................|
*
00010600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
Now we're having a problem of 3 sectors being written instead of 8. *shrug*
We should check status.
write-->disk ; 4141; disk ; 5858; drq end write<--
wrote status:58
I already did 58 before. it means data to transfer, which means we need to send it more data. Which means it didn't get our data. Simple pattern writing (i & 0xff)
.
00010000 00 00 01 00 02 00 03 00 04 00 05 00 06 00 07 00 |................|
00010010 08 00 09 00 0a 00 0b 00 0c 00 0d 00 0e 00 0f 00 |................|
00010020 10 00 11 00 12 00 13 00 14 00 15 00 16 00 17 00 |................|
00010030 18 00 19 00 1a 00 1b 00 1c 00 1d 00 1e 00 1f 00 |................|
00010040 20 00 21 00 22 00 23 00 24 00 25 00 26 00 27 00 | .!.".#.$.%.&.'.|
00010050 28 00 29 00 2a 00 2b 00 2c 00 2d 00 2e 00 2f 00 |(.).*.+.,.-.../.|
It's getting the start, so that's not the problem. Hmm
000107e0 9a 07 9b 07 9c 07 9d 07 9e 07 9f 07 a0 07 a1 07 |................|
000107f0 a2 07 a3 07 a4 07 a5 07 a6 07 a7 07 a8 07 a9 07 |................|
00010800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
It's not... Let's make sure we're doing it right.
write-->disk ; 5050; disk ; 5858; drq 00000800 end write<--
wrote status:58
cat: /dev/pts/23: Input/output error
i
just happens to be the exact number of bytes written. How unlucky, huh? Let's check outw
.
__asm__ __volatile__ ("outw %w0,%w1": :"a" (__value), "Nd" (__port));
Looks fine.. Let's increment i
and see what happens.
000105f0 a0 07 a1 07 a2 07 a3 07 a4 07 a5 07 a6 07 a7 07 |................|
00010600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
It wrote less. Perhaps...
I added F8. It got further. Perhaps I should spam status?
000109e0 de 07 df 07 e0 07 e1 07 e2 07 e3 07 e4 07 e5 07 |................|
000109f0 e6 07 e7 07 e8 07 e9 07 ea 07 eb 07 ec 07 ed 07 |................|
00010a00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
Didn't help.
When the drive has completed processing of the block, it clears BSY and asserts INTRQ. If transfer of another block is required, the drive also sets DRQ.
That seems relevant to my interests.
data_request_wait();
At the top of my sector read/write loops did it.
00010fe0 f0 00 f1 00 f2 00 f3 00 f4 00 f5 00 f6 00 f7 00 |................|
00010ff0 f8 00 f9 00 fa 00 fb 00 fc 00 fd 00 fe 00 ff 00 |................|
Pretty clear I have something wrong here. It's worth reading a few edge cases.
After ff 00
it goes to 00 00. So it's doing bytes instead of.. Probably a flaw in outw
. Fixing..
Oh it's not. i
is just bound between 0 and 255. hahaha. Let's get the data now.
00010000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
*
Okay, let's try something other than vram
then.
I picked the stack and this looks stack-like. Now we need something that I want.. Like vram
.
*
00010000 00 01 00 00 00 32 9c 00 00 01 00 00 00 6d 9c 00 |.....2.......m..|
00010010 00 00 00 00 00 00 00 00 00 00 00 00 00 f8 1f 06 |................|
00010020 00 00 00 00 00 00 00 00 00 ab 27 16 90 0c 00 00 |..........'.....|
00010030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00010040 00 00 00 00 00 00 00 00 00 f0 1f 00 00 05 80 00 |................|
00010050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
Tried (u8 *)0x8000
looks correct.
00010000 e8 1b 1b 00 00 00 00 00 f4 eb fd 66 90 66 90 90 |...........f.f..|
00010010 c3 8d b4 26 00 00 00 00 8d b4 26 00 00 00 00 90 |...&......&.....|
00010020 53 83 ec 08 0f b6 05 c5 ce 00 00 84 c0 0f 88 cd |S...............|
00010030 00 00 00 3c 2a 0f 84 b5 00 00 00 3c 36 0f 84 ad |...<*......<6...|
00010040 00 00 00 3c 1d 0f 84 05 01 00 00 3c 0e 0f 84 0d |...<.......<....|
Compare to ext21
binary.
00000400 e8 1b 1b 00 00 00 00 00 f4 eb fd 66 90 66 90 90 |...........f.f..|
00000410 c3 8d b4 26 00 00 00 00 8d b4 26 00 00 00 00 90 |...&......&.....|
00000420 53 83 ec 08 0f b6 05 c5 ce 00 00 84 c0 0f 88 cd |S...............|
00000430 00 00 00 3c 2a 0f 84 b5 00 00 00 3c 36 0f 84 ad |...<*......<6...|
Good enough for me.
So now we have read and write. That's an excellent start. Let's convert our two sector reads to ata_read_multi
now.
crc32: 901627ab
Not everything is implemented, but quite a lot is. So lunch and then utopia.
Next step of course is to get write_file
working, which will use ata_write_multi
to do the whole ext2 part, which I have not yet completed.
This is difficult, so I'm going to leave it for tomorrow.
Again I repeat that it would have been much easier to not implement Ext2 and just read/write from disk and we can create a list of files and their location/length, but I feel like implementing Ext2 has provided me a great role model -- don't go creating your own filesystem, there's one that was written by someone like you and they provided a header file.
So if I was going to work on it tonight, I would work on... maybe the first few pages of the game. Like:
Page 1 the hook Page 2 the new/continue/exit screen Page 3 the new game menu Page 4 the visual novel Page 5 the first level Page 6 the first level easy mode Page 7 the first level hard mode
If you think about how easy a game needs to be to get a literate person to play, it needs to provide them a simple question and a choice. But a simple question and a choice is not enough for it to be fun, right? So the visual novel has to provide some sort of interaction.
What does that interaction look like? I'd love for it to be all AI and I can do that to a pretty impressive level, but at this point I don't actually want to go down that rabbit hole. I created AI3 for that purpose and here we are, no AltSci Cell because I ran out of time.
Though now that I think of it, cell would be a lot easier now that I have... Actually I should play with godot. Let's create a user and install it.
mood music Soul Coughing - I Miss The Girl
2020-06-12
06:43 <@Javantea> subconscious brain came up with a solution to my partial_write_offset function issue I had yesterday evening. Impemented it in 7 minutes. now to test.
The code to make it so that partial_read
and partial_read_offset
also use the same optimization is very small and cheap.
An example of the changes I'm making to the code:
fseek(f, block_size*root_block, SEEK_SET);
read_items = fread(root_block_i, block_size, 1, f);
// becomes
ata_read_multi(root_block_i, root_block*2, 2);
ext21kernel.c:(.text+0x11ba): undefined reference to `strlen'
ld: ext21kernel.c:(.text+0x126a): undefined reference to `strlen'
ld: ext21kernel.c:(.text+0x139e): undefined reference to `strlen'
ld: ext21kernel.c:(.text+0x13b0): undefined reference to `strncpy'
ld: ext21kernel.c:(.text+0x13b8): undefined reference to `strlen'
Easy enough..
It almost worked. Cool!
ftp: 60
name: 800
inode: 13
rec_len: 964
name_len: 4
strlen
appears to work. strncpy
does not.
sudo mount -o loop,ro ext2t.bin /mnt/sd/
Password:
sudo ls -laR /mnt/sd/
/mnt/sd/:
ls: cannot access '/mnt/sd/8000': Input/output error
total 29
drwxr-xr-x 3 root root 1024 Jun 12 07:41 .
drwxr-xr-x 11 root root 4096 Jan 18 15:53 ..
?????????? ? ? ? ? ? 8000
--wx------ 1 root root 23688 Dec 31 1969 kernel
drwx------ 2 root root 12288 Jun 12 07:41 lost+found
/mnt/sd/lost+found:
total 13
drwx------ 2 root root 12288 Jun 12 07:41 .
drwxr-xr-x 3 root root 1024 Jun 12 07:41 ..
Not quite..
[1719204.943038] EXT2-fs (loop0): error: ext2_lookup: deleted inode referenced: 13
If we look at the code we can clearly see that inode bitmap didn't get updated. Let's fix that first..
I think the bg_block_bitmap is at block 6 and bg_inode_bitmap is at block 7, so...
hex(6*1024)
'0x1800'
hex(7*1024)
'0x1c00'
00001800 ff ff ff ff ff ff ff 3f 00 00 00 00 00 00 00 00 |.......?........|
00001810 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00001c00 ff 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00001c10 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
Weird that 1c10
is ff all the way up to 2000
. I think I know what might be going on.. No, it's a mystery.
ibl 00000007 bbl 00000006
As expected. So that means that piece of code is correct.
ibl 00000007 bbl 00000006
bp 0000003e ip-1 0000000c
inode[13]:
mode: 0000
uid: 0000
size: 00000000
atime: 00000000
ctime: 00000000
dtime: 00000000
gid: 0000
links_count: 0000
blocks: 0000
flags: 0000
Okay, so inode needs to be updated...
I got to a point where the superblock is being overwritten hahaha.
Writing file
read-->disk ; 5050; disk ; d0d0; d0; drq drq \x02\x00\x00\x00\x0c\x00\x01\x02.\x00\x00\x00\x02\x00\x00\x00\x0c\x00\x02\x02..\x00\x00\x0b\x00\x00\x00\x14\x00\x0a\x02lost+found\x00\x00\x0c\x00\x00\x00\xd4\x03\x06\x00kernel\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00drq \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
x00\
x00\x00 end read<-- name: .
inode: 00000002
rec_len: 0000000c
name_len: 00000001
name: ..
inode: 00000002
rec_len: 0000000c
name_len: 00000002
name: lost+found
inode: 0000000b
rec_len: 00000014
name_len: 0000000a
name: kernel
inode: 0000000c
rec_len: 000003d4
name_len: 00000006
read-->disk ; 5050; disk ; d0d0; d0; drq drq \x00\x00\x00\x00\x00\x00\x00\x00\xc8\xa7\xe3^\xc8\xa7\xe3^\xc8\xa7\xe3^\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xedA\x00\x00\x00\x04\x00\x00\xc8\xa7\xe3^\xc8\xa7\xe3^\xc8\xa7\xe3^\x00\x00\x00\x00\x00\x00\x03\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 end read<-- read-->disk ; 5050; disk ; d0d0; drq drq \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
x00\x00\
x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 end read<-- read-->disk ; 5050; disk ; d058; drq drq \x02\x00\x00\x00\x0c\x00\x01\x02.\x00\x00\x00\x02\x00\x00\x00\x0c\x00\x02\x02..\x00\x00\x0b\x00\x00\x00\x14\x00\x0a\x02lost+found\x00\x00\x0c\x00\x00\x00\xd4\x03\x06\x00kernel\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00drq d0; \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
x00\
x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 end read<--root prev pos 0000002c pos 0000003c
root block 00000018
write-->00000030disk ; 5050; disk ; 5858; drq drq drq d0; 00000100 end write<--
written_block: 0000003e
read-->disk ; 5050; disk ; d058; drq drq \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 end read<--
write-->00000013disk ; 5050; disk ; 5858; drq drq 00000100 end write<--
write-->0000007cdisk ; 5050; disk ; 5858; drq drq drq d0; d0; d0; d0; drq d0; d0; d0; d0; d0; d0; d0; d0; drq d0; drq d0; drq d0; drq d0; 00000100 end write<--
write-->00000083disk ; 5050; disk ; 5858; drq drq 00000100 end write<--
ibl 00000007 bbl 00000006
bp 0000003e ip-1 0000000c
read-->disk ; 5050; disk ; d0d0; d0; drq drq \xff\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff end read<--
write-->0000000edisk ; 5050; disk ; 5858; drq drq 00000100 end write<--
read-->disk ; 5050; disk ; d058; drq drq \xff\xff\xff\xff\xff\xff\xff?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff end read<--
write-->0000000cdisk ; 5050; disk ; 5858; drq drq 00000100 end write<--
wrote status:50
disk ; 5050; cat: /dev/pts/23: Input/output error
write-->0000000e
write-->0000000c
So those aren't the problem. Let's look at all the writes. Now it isn't overwriting the superblock. Okay...
So what about the inode though? So we need to know which block is the inode block.
inode_table offset
should tell us.
inode_table offset: 00002000
16
which is 0x10
.
13 7c 83 0e 0c
So the closest is 13. but that assumes that inode is pretty big and it is because of all the stuff in it. So let's look at 13 then..
cat /dev/pts/23
asdf
Writing file
read-->disk ; 5050; disk ; d0d0; d0; drq drq \x02\x00\x00\x00\x0c\x00\x01\x02.\x00\x00\x00\x02\x00\x00\x00\x0c\x00\x02\x02..\x00\x00\x0b\x00\x00\x00\x14\x00\x0a\x02lost+found\x00\x00\x0c\x00\x00\x00\xd4\x03\x06\x00kernel\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00drq \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
x00\
x00\x00 end read<-- name: .
inode: 00000002
rec_len: 0000000c
name_len: 00000001
name: ..
inode: 00000002
rec_len: 0000000c
name_len: 00000002
name: lost+found
inode: 0000000b
rec_len: 00000014
name_len: 0000000a
name: kernel
inode: 0000000c
rec_len: 000003d4
name_len: 00000006
read-->disk ; 5050; disk ; 5858; drq drq \x00\x00\x00\x00\x00\x00\x00\x00h\xaa\xe3^h\xaa\xe3^h\xaa\xe3^\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xedA\x00\x00\x00\x04\x00\x00h\xaa\xe3^h\xaa\xe3^h\xaa\xe3^\x00\x00\x00\x00\x00\x00\x03\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 end read<-- read-->disk ; 5050; disk ; d058; drq drq \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
x00\x00\x00\
x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 end read<-- read-->disk ; 5050; disk ; 5858; drq drq \x02\x00\x00\x00\x0c\x00\x01\x02.\x00\x00\x00\x02\x00\x00\x00\x0c\x00\x02\x02..\x00\x00\x0b\x00\x00\x00\x14\x00\x0a\x02lost+found\x00\x00\x0c\x00\x00\x00\xd4\x03\x06\x00kernel\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00drq \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
x00\
x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 end read<--root prev pos 0000002c pos 0000003c
root block 00000018
write-->00000030disk ; 5050; disk ; 5858; drq drq drq d0; 00000100 end write<--
written_block: 0000003e
read-->disk ; 5050; disk ; d0d0; drq drq \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 end read<--
write-->00000013disk ; 5050; disk ; 5858; drq drq 00000100 end write<--
write-->0000007cdisk ; 5050; disk ; 5858; drq drq drq d0; d0; d0; d0; d0; d0; d0; d0; d0; drq drq d0; drq d0; d0; drq d0; d0; drq d0; d0; 00000100 end write<--
write-->00000083disk ; 5858; disk ; 5858; drq drq 00000100 end write<--
ibl 00000007 bbl 00000006
bp 0000003e ip-1 0000000c
read-->disk ; 5050; disk ; d058; drq drq \xff\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff end read<--
write-->0000000edisk ; 5050; disk ; 5858; drq drq 00000100 end write<--
read-->disk ; 5050; disk ; d058; drq drq \xff\xff\xff\xff\xff\xff\xff?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff end read<--
write-->0000000cdisk ; 5050; disk ; 5858; drq drq 00000100 end write<--
wrote status:50
disk ; 5050;
13 matches.. oh uhh. where in 13 did it write? Gotta remember 13 is hex, not decimal.
00002600 c0 80 00 00 a0 0f 00 00 00 00 00 00 00 00 00 00 |................|
00002610 00 00 00 00 00 00 00 00 00 00 01 00 04 00 00 00 |................|
00002620 00 00 00 00 00 00 00 00 3e 00 00 00 3f 00 00 00 |........>...?...|
00002630 40 00 00 00 41 00 00 00 42 00 00 00 00 00 00 00 |@...A...B.......|
00002640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
Not much it could possibly write. If we match up the c080 to the 80c0 we see in inode[12], we can skip 128 bytes (sizeof(struct ext2_inode)
) All zeros. Which means partial_write_offset is broken in a very interesting way.
Writing file
read-->disk ; 5050; disk ; d0d0; d0; drq drq \x02\x00\x00\x00\x0c\x00\x01\x02.\x00\x00\x00\x02\x00\x00\x00\x0c\x00\x02\x02..\x00\x00\x0b\x00\x00\x00\x14\x00\x0a\x02lost+found\x00\x00\x0c\x00\x00\x00\xd4\x03\x06\x00kernel\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00drq \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
x00\
x00\x00 end read<-- name: .
inode: 00000002
rec_len: 0000000c
name_len: 00000001
name: ..
inode: 00000002
rec_len: 0000000c
name_len: 00000002
name: lost+found
inode: 0000000b
rec_len: 00000014
name_len: 0000000a
name: kernel
inode: 0000000c
rec_len: 000003d4
name_len: 00000006
read-->disk ; 5050; disk ; d058; drq drq \x00\x00\x00\x00\x00\x00\x00\x00\xad\xaf\xe3^\xad\xaf\xe3^\xad\xaf\xe3^\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xedA\x00\x00\x00\x04\x00\x00\xad\xaf\xe3^\xad\xaf\xe3^\xad\xaf\xe3^\x00\x00\x00\x00\x00\x00\x03\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 end read<-- read-->disk ; 5050; disk ; d0d0; d0; drq drq \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
x00\x00\
x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 end read<-- read-->disk ; 5050; disk ; d0d0; drq drq \x02\x00\x00\x00\x0c\x00\x01\x02.\x00\x00\x00\x02\x00\x00\x00\x0c\x00\x02\x02..\x00\x00\x0b\x00\x00\x00\x14\x00\x0a\x02lost+found\x00\x00\x0c\x00\x00\x00\xd4\x03\x06\x00kernel\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00drq d0; d0; \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
x00\
x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 end read<--root prev pos 0000002c pos 0000003c
root block 00000018
write-->00000030disk ; 5050; disk ; 5858; drq drq drq d0; 00000100 end write<--
written_block: 0000003e
read-->disk ; 5050; disk ; d0d0; d0; drq drq \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 end read<--pwo 00000000 data 000080c0 size 00000080
write-->00000013disk ; 5050; disk ; 5858; drq drq 00000100 end write<--
write-->0000007cdisk ; 5050; disk ; 5858; drq drq drq d0; d0; drq d0; d0; drq d0; d0; d0; d0; d0; d0; d0; d0; d0; drq drq drq d0; 00000100 end write<--
write-->00000083disk ; 5858; disk ; 5858; drq drq 00000100 end write<--
ibl 00000007 bbl 00000006
bp 0000003e ip-1 0000000c
read-->disk ; 5050; disk ; d058; drq drq \xff\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff end read<--
write-->0000000edisk ; 5050; disk ; 5858; drq drq 00000100 end write<--
read-->disk ; 5050; disk ; 5858; drq drq \xff\xff\xff\xff\xff\xff\xff?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff end read<--
write-->0000000cdisk ; 5050; disk ; 5858; drq drq 00000100 end write<--
wrote status:50
disk ; 5050; cat: /dev/pts/23: Input/output error
The part that we want:
pwo 00000000 data 000080c0 size 00000080
So it's writing 80c0 at offset 0 to 2600
. Which we see. But it's at the wrong offset. or is it?
Let's figure out kernel's inode and where it is in the table.
ftp: 44
name: kernel
inode: 12
rec_len: 16
name_len: 6
ftp: 60
name: 8000
inode: 13
rec_len: 964
name_len: 4
...
inode[11]:
kernel_block: 37
b: 37 38 39 40 41 42 43 44 45 46 47 48
mode: 80c0
uid: 0000
size: 00005e48
atime: 00000000
ctime: 00000000
dtime: 00000000
gid: 0000
links_count: 0001
blocks: 0018
flags: 0000
inode[12]:
b: 62 63 64 65
mode: 80c0
uid: 0000
size: 00000fa0
atime: 00000000
ctime: 00000000
dtime: 00000000
gid: 0000
links_count: 0001
blocks: 0004
flags: 0000
Looks like everything is correct here. Let's check mount again.
sudo mount -o loop,ro ext2t.bin /mnt/sd/
Password:
sudo ls -laR /mnt/sd/
/mnt/sd/:
total 31
drwxr-xr-x 3 root root 1024 Jun 12 09:39 .
drwxr-xr-x 11 root root 4096 Jan 18 15:53 ..
--wx------ 1 root root 4000 Dec 31 1969 8000
--wx------ 1 root root 24136 Dec 31 1969 kernel
drwx------ 2 root root 12288 Jun 12 09:39 lost+found
/mnt/sd/lost+found:
total 13
drwx------ 2 root root 12288 Jun 12 09:39 .
drwxr-xr-x 3 root root 1024 Jun 12 09:39 ..
sudo hexdump -C /mnt/sd/8000 |head
00000000 e8 ab 22 00 00 00 00 00 f4 eb fd 66 90 66 90 90 |.."........f.f..|
00000010 c3 8d b4 26 00 00 00 00 8d b4 26 00 00 00 00 90 |...&......&.....|
00000020 53 83 ec 08 0f b6 05 85 da 00 00 84 c0 0f 88 dd |S...............|
00000030 00 00 00 3c 2a 0f 84 bd 00 00 00 3c 36 0f 84 b5 |...<*......<6...|
00000040 00 00 00 3c 1d 0f 84 15 01 00 00 3c 0e 0f 84 1d |...<.......<....|
00000050 01 00 00 3c 48 0f 84 95 01 00 00 3c 50 0f 84 45 |...<H......<P..E|
00000060 01 00 00 3c 4b 0f 84 05 01 00 00 3c 4d 0f 84 a8 |...<K......<M...|
00000070 01 00 00 3c 3b 0f 84 ae 01 00 00 3c 41 0f 84 c1 |...<;......<A...|
00000080 01 00 00 3c 42 0f 84 1d 02 00 00 3c 43 0f 84 61 |...<B......<C..a|
00000090 02 00 00 0f b6 d0 80 3d c4 e3 00 00 00 a2 28 da |.......=......(.|
sudo umount /mnt/sd
Okay now we have the ability to write data to a file. yay! 9:40
So 3 hours is what it took. There are some obvious bugs to work out, but I think we're almost there.. In fact, let's refactor and then include this into the tracker so we can save beats and load them.
dumpe2fs ext2t.bin
dumpe2fs 1.45.6 (20-Mar-2020)
Filesystem volume name: ext2_1_t
Last mounted on: <not available>
Filesystem UUID: 15a73336-6903-4613-91be-c136f8fadb36
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: ext_attr resize_inode dir_index filetype sparse_super large_file
Filesystem flags: signed_directory_hash
Default mount options: user_xattr acl
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 128
Block count: 1024
Reserved block count: 51
Free blocks: 986
Free inodes: 117
First block: 1
Block size: 1024
Fragment size: 1024
Reserved GDT blocks: 3
Blocks per group: 8192
Fragments per group: 8192
Inodes per group: 128
Inode blocks per group: 16
Filesystem created: Fri Jun 12 09:39:09 2020
Last mount time: n/a
Last write time: Fri Jun 12 09:39:09 2020
Mount count: 0
Maximum mount count: -1
Last checked: Fri Jun 12 09:39:09 2020
Check interval: 0 (<none>)
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 128
Default directory hash: half_md4
Directory Hash Seed: 2ebcdb31-0300-46f6-a0e4-cc33f1431a9b
Group 0: (Blocks 1-1023)
Primary superblock at 1, Group descriptors at 2-2
Reserved GDT blocks at 3-5
Block bitmap at 6 (+5)
Inode bitmap at 7 (+6)
Inode table at 8-23 (+7)
986 free blocks, 117 free inodes, 2 directories
Free blocks: 67-1023
Free inodes: 14-128
24136 Jun 12 09:39 ext21
Nice time for a snapshot I must say.
Refactored 10:19. It works.
Tested mount and hexdump. It still works. That means we can add it to tracker 1 without any worries.
In case you're curious like me about the size of the demo kernels and stuff:
ext21kernel.c: 393 lines of C ata.c: 1301 lines of C (includes all the ext2 stuff, which is the majority of the code) ata.h: 41 lines of C
24128 Jun 12 10:12 ext21
Unexpectedly, the file size has shrunk from when it was a single file. Why? Is gcc more sensible when given more files? Not my job to investigate this mystery.
hexdump -C ext2t.bin |wc 1755 31244 135726
What's really important is how many free blocks there are because that determines how much space we get to use on the filesystem.
block_bitmap: 1111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001
a = '1111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001'
len([x for x in a if x == '0'])
961
961*1024
984064
_/(1024*1024)
0.9384765625
So we have 93.8% free blocks in a 1MiB filesystem. Each inode we add subtracts 128 bytes. Each entry we add to root loses 8+name_len bytes with of course the block size being the unit of that. Any file we add that is bigger than 12KiB uses an extra block in its block list.
So... Let's see about adding this to tracker 1.
The way I wrote this makes it difficult to write songs block by block. You have to give the whole file to write_file
. Eventually I'll fix that, but it'll require a bit of code that functions almost like fwrite
. Which I should have probably realized.
It works. Or at least it seems like it works.
ftp: 60
name: song0
inode: 13
rec_len: 964
name_len: 5
sudo mount -o loop,ro tracker1a.bin /mnt/sd/
Password:
sudo ls -laR /mnt/sd/
/mnt/sd/:
total 48
drwxr-xr-x 3 root root 1024 Jun 12 10:49 .
drwxr-xr-x 11 root root 4096 Jan 18 15:53 ..
--wx------ 1 root root 60864 Dec 31 1969 kernel
drwx------ 2 root root 12288 Jun 12 10:49 lost+found
--wx------ 1 root root 372 Dec 31 1969 song0
/mnt/sd/lost+found:
total 13
drwx------ 2 root root 12288 Jun 12 10:49 .
drwxr-xr-x 3 root root 1024 Jun 12 10:49 ..
sudo hexdump -C /mnt/sd/song0
00000000 0a 00 00 00 20 82 07 00 00 00 00 00 20 28 07 00 |.... ....... (..|
00000010 20 29 07 00 20 2a 07 00 20 2b 07 00 20 2c 07 00 | ).. *.. +.. ,..|
00000020 20 2d 07 00 60 69 01 00 20 2f 07 00 20 30 07 00 | -..`i.. /.. 0..|
00000030 20 31 07 00 20 32 07 00 20 33 07 00 20 34 07 00 | 1.. 2.. 3.. 4..|
00000040 20 35 07 00 20 36 07 00 20 37 07 00 20 38 07 00 | 5.. 6.. 7.. 8..|
00000050 20 39 07 00 20 3a 07 00 20 3b 07 00 20 3c 07 00 | 9.. :.. ;.. <..|
00000060 20 3d 07 00 20 3e 07 00 20 3f 07 00 20 40 07 00 | =.. >.. ?.. @..|
00000070 20 41 07 00 20 42 07 00 20 43 07 00 20 44 07 00 | A.. B.. C.. D..|
00000080 20 45 07 00 20 46 07 00 20 47 07 00 20 48 07 00 | E.. F.. G.. H..|
00000090 20 49 07 00 20 4a 07 00 20 4b 07 00 20 4c 07 00 | I.. J.. K.. L..|
000000a0 20 4d 07 00 20 4e 07 00 20 4f 07 00 20 50 07 00 | M.. N.. O.. P..|
000000b0 20 51 07 00 20 52 07 00 20 53 07 00 20 54 07 00 | Q.. R.. S.. T..|
000000c0 20 55 07 00 20 56 07 00 20 57 07 00 20 58 07 00 | U.. V.. W.. X..|
000000d0 20 59 07 00 20 5a 07 00 20 5b 07 00 20 5c 07 00 | Y.. Z.. [.. \..|
000000e0 20 5d 07 00 20 5e 07 00 20 5f 07 00 20 60 07 00 | ].. ^.. _.. `..|
000000f0 20 61 07 00 20 62 07 00 20 63 07 00 20 64 07 00 | a.. b.. c.. d..|
00000100 20 65 07 00 20 66 07 00 20 67 07 00 20 68 07 00 | e.. f.. g.. h..|
00000110 20 69 07 00 20 6a 07 00 20 6b 07 00 20 6c 07 00 | i.. j.. k.. l..|
00000120 20 6d 07 00 20 6e 07 00 20 6f 07 00 20 70 07 00 | m.. n.. o.. p..|
00000130 20 71 07 00 20 72 07 00 20 73 07 00 20 74 07 00 | q.. r.. s.. t..|
00000140 20 75 07 00 20 76 07 00 20 77 07 00 20 78 07 00 | u.. v.. w.. x..|
00000150 20 79 07 00 20 7a 07 00 20 7b 07 00 20 7c 07 00 | y.. z.. {.. |..|
00000160 20 7d 07 00 20 7e 07 00 20 7f 07 00 20 80 07 00 | }.. ~.. ... ...|
00000170 20 81 07 00 | ...|
00000174
Seems possibly legit. Let's try to decode this using our struct.
struct song {
int patterns;
// Index into pattern
u8 *pattern;
u8 paused;
u8 dt;
};
struct pattern {
//u8 instrument[NUM_CHANNELS];
// null if nothing, otherwise terminated with EOM.
u8 *music[NUM_CHANNELS];
};
I forgot instruments. They are more important than the song or pattern in my opinion.
So patterns = 10. 0a 00 00 00
u8 *pattern
is not worthwhile to save, but we don't care, so 20 82 07 00
So these are pointers.. yes. woops. paused
is unuseful as well. 00
dt
iis unuseful as well. 00
The rest are pointers from pattern, so let's fix that. While we're at it, let's... right, so I'll actually keep song pattern
array and that's it.
Ran out of ram while saving. I could see the data on the vram. Probably overwrote the back buffer with the stack Let's use malloc
. But we can't free
, so let's create a function that functions like free
.
unmalloc(song_size);
Seems legit. Let's look at the file.
sudo mount -o loop,ro tracker1a.bin /mnt/sd/
Password:
sudo ls -laR /mnt/sd/
/mnt/sd/:
total 48
drwxr-xr-x 3 root root 1024 Jun 12 12:04 .
drwxr-xr-x 11 root root 4096 Jan 18 15:53 ..
--wx------ 1 root root 61536 Dec 31 1969 kernel
drwx------ 2 root root 12288 Jun 12 12:04 lost+found
--wx------ 1 root root 583 Dec 31 1969 song0
/mnt/sd/lost+found:
total 13
drwx------ 2 root root 12288 Jun 12 12:04 .
drwxr-xr-x 3 root root 1024 Jun 12 12:04 ..
sudo hexdump -C /mnt/sd/song0
00000000 0a 00 01 02 03 04 05 06 07 08 09 00 00 00 00 00 |................|
00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000020 00 00 00 00 00 00 00 00 00 00 f0 53 ff 00 00 00 |...........S....|
00000030 f0 53 ff 00 00 00 f0 53 ff 00 00 00 f0 53 ff 00 |.S.....S.....S..|
00000040 00 00 f0 53 ff 00 00 00 f0 53 ff 00 00 00 f0 87 |...S.....S......|
00000050 e9 00 02 0f 11 0a 02 28 01 0a 02 28 09 0a 02 28 |.......(...(...(|
00000060 01 0a 02 0f 11 0a 02 0f 11 0a 02 28 09 0a 02 28 |...........(...(|
00000070 01 0a 00 00 f0 53 ff 00 00 00 f0 53 ff 00 00 00 |.....S.....S....|
00000080 f0 53 ff 00 00 00 f0 53 ff 00 00 00 f0 53 ff 00 |.S.....S.....S..|
00000090 00 00 f0 53 ff 00 00 00 f0 53 ff 00 00 00 f0 53 |...S.....S.....S|
000000a0 ff 00 00 00 f0 53 ff 00 00 00 f0 53 ff 00 00 00 |.....S.....S....|
000000b0 f0 53 ff 00 00 00 f0 53 ff 00 00 00 f0 53 ff 00 |.S.....S.....S..|
000000c0 00 00 f0 53 ff 00 00 00 f0 53 ff 00 00 00 f0 53 |...S.....S.....S|
000000d0 ff 00 00 00 f0 53 ff 00 00 00 f0 53 ff 00 00 00 |.....S.....S....|
000000e0 f0 53 ff 00 00 00 f0 53 ff 00 00 00 f0 53 ff 00 |.S.....S.....S..|
000000f0 00 00 f0 53 ff 00 00 00 f0 53 ff 00 00 00 f0 53 |...S.....S.....S|
00000100 ff 00 00 00 f0 53 ff 00 00 00 f0 53 ff 00 00 00 |.....S.....S....|
00000110 f0 53 ff 00 00 00 f0 53 ff 00 00 00 f0 53 ff 00 |.S.....S.....S..|
00000120 00 00 f0 53 ff 00 00 00 f0 53 ff 00 00 00 f0 53 |...S.....S.....S|
00000130 ff 00 00 00 f0 53 ff 00 00 00 f0 53 ff 00 00 00 |.....S.....S....|
00000140 f0 53 ff 00 00 00 f0 53 ff 00 00 00 f0 53 ff 00 |.S.....S.....S..|
00000150 00 00 f0 53 ff 00 00 00 f0 53 ff 00 00 00 f0 53 |...S.....S.....S|
00000160 ff 00 00 00 f0 53 ff 00 00 00 f0 53 ff 00 00 00 |.....S.....S....|
00000170 f0 53 ff 00 00 00 f0 53 ff 00 00 00 f0 53 ff 00 |.S.....S.....S..|
00000180 00 00 f0 53 ff 00 00 00 f0 53 ff 00 00 00 f0 53 |...S.....S.....S|
00000190 ff 00 00 00 f0 53 ff 00 00 00 f0 53 ff 00 00 00 |.....S.....S....|
000001a0 f0 53 ff 00 00 00 f0 53 ff 00 00 00 f0 53 ff 00 |.S.....S.....S..|
000001b0 00 00 f0 53 ff 00 00 00 f0 53 ff 00 00 00 f0 53 |...S.....S.....S|
000001c0 ff 00 00 00 f0 53 ff 00 00 00 f0 53 ff 00 00 00 |.....S.....S....|
000001d0 f0 53 ff 00 00 00 f0 53 ff 00 00 00 f0 53 ff 00 |.S.....S.....S..|
000001e0 00 00 f0 53 ff 00 00 00 f0 53 ff 00 00 00 f0 53 |...S.....S.....S|
000001f0 ff 00 00 00 f0 53 ff 00 00 00 f0 53 ff 00 00 00 |.....S.....S....|
00000200 f0 53 ff 00 00 00 f0 53 ff 00 00 00 f0 53 ff 00 |.S.....S.....S..|
00000210 00 00 f0 53 ff 00 00 00 f0 53 ff 00 00 00 f0 53 |...S.....S.....S|
00000220 ff 00 00 00 f0 53 ff 00 00 00 f0 53 ff 00 00 00 |.....S.....S....|
00000230 f0 53 ff 00 00 00 f0 53 ff 00 00 00 f0 53 ff 00 |.S.....S.....S..|
00000240 00 00 f0 53 ff 00 00 |...S...|
00000247
So... What is this?
0a
is number of patterns 00 01 02 03 04 05 06 07 08 09
is the patterns array 00 00 00 00
is the length of pattern 0 00 00 00 00
is the length of pattern 1 00 00 00 00
is the length of pattern 2 00 00 00 00
is the length of pattern 3 00 00 00 00
is the length of pattern 4 00 00 00 00
is the length of pattern 5 00 00 00 00
is the length of pattern 6 00 00 00 f0
is the length of pattern 7 Followed by the pattern data: Uhh naw.. 11+4*7 == 0x27
Unclear what 53 ff is.
patterns[00000000].music[00000000] len 00000002
patterns[00000000].music[00000001] len 00000002
patterns[00000000].music[00000002] len 00000002
patterns[00000000].music[00000003] len 00000002
patterns[00000000].music[00000004] len 00000002
patterns[00000000].music[00000005] len 00000002
patterns[00000000].music[00000006] len 00000022
patterns[00000000].music[00000007] len 00000002
patterns[00000000].music[00000008] len 00000002
patterns[00000001].music[00000000] len 00000002
patterns[00000001].music[00000001] len 00000002
patterns[00000001].music[00000002] len 00000002
patterns[00000001].music[00000003] len 00000002
patterns[00000001].music[00000004] len 00000002
patterns[00000001].music[00000005] len 00000002
patterns[00000001].music[00000006] len 00000002
patterns[00000001].music[00000007] len 00000002
patterns[00000001].music[00000008] len 00000002
patterns[00000002].music[00000000] len 00000002
patterns[00000002].music[00000001] len 00000002
patterns[00000002].music[00000002] len 00000002
patterns[00000002].music[00000003] len 00000002
patterns[00000002].music[00000004] len 00000002
patterns[00000002].music[00000005] len 00000002
patterns[00000002].music[00000006] len 00000002
patterns[00000002].music[00000007] len 00000002
patterns[00000002].music[00000008] len 00000002
patterns[00000003].music[00000000] len 00000002
patterns[00000003].music[00000001] len 00000002
patterns[00000003].music[00000002] len 00000002
patterns[00000003].music[00000003] len 00000002
patterns[00000003].music[00000004] len 00000002
patterns[00000003].music[00000005] len 00000002
patterns[00000003].music[00000006] len 00000002
patterns[00000003].music[00000007] len 00000002
patterns[00000003].music[00000008] len 00000002
patterns[00000004].music[00000000] len 00000002
patterns[00000004].music[00000001] len 00000002
patterns[00000004].music[00000002] len 00000002
patterns[00000004].music[00000003] len 00000002
patterns[00000004].music[00000004] len 00000002
patterns[00000004].music[00000005] len 00000002
patterns[00000004].music[00000006] len 00000002
patterns[00000004].music[00000007] len 00000002
patterns[00000004].music[00000008] len 00000002
patterns[00000005].music[00000000] len 00000002
patterns[00000005].music[00000001] len 00000002
patterns[00000005].music[00000002] len 00000002
patterns[00000005].music[00000003] len 00000002
patterns[00000005].music[00000004] len 00000002
patterns[00000005].music[00000005] len 00000002
patterns[00000005].music[00000006] len 00000002
patterns[00000005].music[00000007] len 00000002
patterns[00000005].music[00000008] len 00000002
patterns[00000006].music[00000000] len 00000002
patterns[00000006].music[00000001] len 00000002
patterns[00000006].music[00000002] len 00000002
patterns[00000006].music[00000003] len 00000002
patterns[00000006].music[00000004] len 00000002
patterns[00000006].music[00000005] len 00000002
patterns[00000006].music[00000006] len 00000002
patterns[00000006].music[00000007] len 00000002
patterns[00000006].music[00000008] len 00000002
patterns[00000007].music[00000000] len 00000002
patterns[00000007].music[00000001] len 00000002
patterns[00000007].music[00000002] len 00000002
patterns[00000007].music[00000003] len 00000002
patterns[00000007].music[00000004] len 00000002
patterns[00000007].music[00000005] len 00000002
patterns[00000007].music[00000006] len 00000002
patterns[00000007].music[00000007] len 00000002
patterns[00000007].music[00000008] len 00000002
patterns[00000008].music[00000000] len 00000002
patterns[00000008].music[00000001] len 00000002
patterns[00000008].music[00000002] len 00000002
patterns[00000008].music[00000003] len 00000002
patterns[00000008].music[00000004] len 00000002
patterns[00000008].music[00000005] len 00000002
patterns[00000008].music[00000006] len 00000002
patterns[00000008].music[00000007] len 00000002
patterns[00000008].music[00000008] len 00000002
patterns[00000009].music[00000000] len 00000002
patterns[00000009].music[00000001] len 00000002
patterns[00000009].music[00000002] len 00000002
patterns[00000009].music[00000003] len 00000002
patterns[00000009].music[00000004] len 00000002
patterns[00000009].music[00000005] len 00000002
patterns[00000009].music[00000006] len 00000002
patterns[00000009].music[00000007] len 00000002
patterns[00000009].music[00000008] len 00000002
We should see 00000002
instead of 53 ff 00 00
That was caused by forgetting to referencing the variable in memcpy
.
sudo hexdump -C /mnt/sd/song0
00000000 0a 00 01 02 03 04 05 06 07 08 09 00 00 00 00 00 |................|
00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000020 00 00 00 00 00 00 00 00 00 02 00 00 00 00 00 02 |................|
00000030 00 00 00 00 00 02 00 00 00 00 00 02 00 00 00 00 |................|
00000040 00 02 00 00 00 00 00 02 00 00 00 00 00 22 00 00 |............."..|
00000050 00 00 02 0f 11 0a 02 28 01 0a 02 28 09 0a 02 28 |.......(...(...(|
00000060 01 0a 02 0f 11 0a 02 0f 11 0a 02 28 09 0a 02 28 |...........(...(|
00000070 01 0a 00 02 00 00 00 00 00 02 00 00 00 00 00 02 |................|
00000080 00 00 00 00 00 02 00 00 00 00 00 02 00 00 00 00 |................|
So you can see length is 00 00 00 02
. Then the value of the music is dt=0, command=EOL
. We repeat this a few times until... Length 00 00 00 22
Realizing now... that little endian should give lsb first. So it should be 02 00 00 00
, so let's redo the calculation.
16:30 <@Javantea> "What is democracy?" "Got something to do with young men killing each other."
16:31 <@Javantea> mood music Metallica - One https://www.youtube.com/watch?v=WM8bTdBs-cw
If we go backwards from 2, we can probably figure this out. it's at 29, so.. 0x29-11 30 So there are 30 bytes unaccounted for. That just happens to be... 3x 10. so I failed at offset. Easy enough to fix.
00000000 0a 00 01 02 03 04 05 06 07 08 09 02 00 00 00 00 |................|
00000010 00 02 00 00 00 00 00 02 00 00 00 00 00 02 00 00 |................|
00000020 00 00 00 02 00 00 00 00 00 02 00 00 00 00 00 22 |..............."|
00000030 00 00 00 00 02 0f 11 0a 02 28 01 0a 02 28 09 0a |.........(...(..|
00000040 02 28 01 0a 02 0f 11 0a 02 0f 11 0a 02 28 09 0a |.(...........(..|
00000050 02 28 01 0a 00 02 00 00 00 00 00 02 00 00 00 00 |.(..............|
Fixed. Now we get 02 00 00 00
We get length = 22 00 00 00
at 0x2f
followed by dt=00, command=02, value=0f11
. So now it's working.
dt=0a, command=02(VAL16), value=0f11
dt=0a, command=02, value=2801
dt=0a, command=02, value=2809
dt=0a, command=02, value=2801
dt=0a, command=02, value=0f11
dt=0a, command=02, value=0f11
dt=0a, command=02, value=2809
dt=0a, command=02, value=2801
dt=0a, command=EOL
So now we just do the reverse to get the file out. But first, instruments.
struct instrument {
u8 attack : 4;
u8 decay : 4;
u8 sustain : 4;
u8 release : 4;
u8 waveform : 4;
//u8 modulator : 4;
u8 amp_mod : 1;
u8 vibrato : 1;
u8 eg_type : 1;
u8 ksr : 1;
u8 coarse : 4;
u8 level; // kinda 8 bit.
};
Good enough to just keep it as is, no modification necessary.
16:44 <@Javantea> 583 bytes for pattern not bad..
16:46 <@Javantea> mood music RATM - Killing In The Name https://www.youtube.com/watch?v=CDHXOeIKTOA
583 bytes for the pattern means I need more than 1 block, right? Maybe, maybe no.
Code finished. Now to test and improve. It'd be nice to be able to load a song from the filesystem at any time. Would be nice to be able to pick the filename.
17:04 <@Javantea> pattern got loaded from the file, but not instrument.
File looks good. It's a single block. I think I know what's wrong.
Permissions on files are -wx------
=]
Yup, needed to call update_instruments
. Now I have save/load...
I'm proud of the people of Seattle who got together and protested police brutality today.
0x8180
should do it.
You might think: but then you lose your song every time you run this, right? Well, I've got a simple plan and it's easy to implement now:
make tracker1a.bin
./e2info -w --kname song0 tracker1a.bin song0
make tracker1kvm
That's it. And that's the end of this blog except making it pretty.

Tracker 1 2020-06-12 17:42:28
Javantea out.
Permalink-
Leave a Reply
Comments: 0
Leave a reply »