I'm bring up a reasonable set of C libraries (libc, libcurses etc.) plus a set of system utilities on the xv6 OS. In doing so, I'm starting to hit the 70K filesize limit imposed by the kernel (512 byte blocks, only one level of block indirection).
I believe strongly in keeping the xv6 kernel small and I don't want to touch it as possible. If I could double the block size, that would be great.
The vanilla xv6 code is at
https://github.com/mit-pdos/xv6-public. My code is at
https://github.com/DoctorWkt/xv6-minix2. I've moved some files around.
The kernel seems set up to change the block size. However, when I change the blocksize (BSIZE in include/xv6/fs.h) from 512 to 1024, the kernel doesn't boot. I can see the system trying to load /etc/init but that never happens.
By using gdb on the system running on Qemu, I can see the kernel calling idestart() [ in kern/ide.c ], which sends the PIO commands to the IDE controller. I don't know enough about IDE and PIO mode, but from what I've learned it looks OK.
I can see ideintr() field the first interrupt and copy the first 1K block into the kernel. Then idestart() is called to read a second block, but ideintr() never gets called a second time, so this seems to indicate that there is no second interrupt to indicate that the second IDE command was successful.
The system works fine with a block size of 512. I'd really appreciate ideas, suggestions, things I can try to diagnose the problem. Remember, I want to make as minimal changes to the kernel once we work out how to fix the problem!
Thanks in advance, Warren