First of all, I apologize for the delay. I have now returned from my vacation,
had a few days to settle in and explain to my neighbours that I'm not dead (!).
Anyways, on to the interesting stuff.
On the surface, the status of things is mostly the same as in my last report,
with a few bugs less. I thought I had dedicated more than enough time for
bugfixing, but that turned out to not be the case. This is partly due to the
slower development cycle when testing natively (compile, copy driver to image,
boot virtual machine, test, repeat), and the bugs only showing up after doing
several resizes with other IO going on. All the bugs of this kind that I know
about have been eliminated.
To summarize the things I have accomplished during the summer:
- Resize support in BFS driver, save for vnode mapping and growing a full
- Getting the resizing "pipeline" from userspace to driver to a working
state (still needs some checking to verify that it's robust).
For this period, I have been working on getting resizing to work from within Haiku, rather than just in bfs_shell. In its current state, the code works, sometimes, if you don't stress it too much and write data to the partition while resizing. On the bright side, recovery from various errors is working well :). In terms of functionality, the only thing missing is the ability to grow full or almost full file system.
A lot of things have happened since the last status update! As far as I
can tell, the kernel part of the file system resizer is mostly complete.
Some details remain, along with a healthy dose of bugs to be fixed. In
addition, I've written a 'resizefs' command for bfs_shell. Let's look at
a typical session with the mighty resizefs!
fssh:/> resizefs 100
File system information:
Bitmap: 1 blocks (was 1)
Log start: block 2 (was 2)
Log length: 512 blocks (was 512)
Block size: 2048 bytes
Error: Not enough space left.
Status: Invalid argument
For the 1⁄4 term milestone, my goal was to have inode-moving working. This is mostly completed, you can view the code at http://web.student.chalmers.se/~andrhen/move_inode_v2.patch
For this period, I have the following things planned:
Allocation of new block positions: I have a good grasp of what needs to be done for this, and it’s not a lot of work.
Moving file data: Last week I thought I had this nailed down, but it turned out to be a little more involved than that.
The goal of this project is to create code for resizing a BFS volume in a safe manner, through the existing volume resizing interface. At first utilized with a command line tool, and toward the end of the summer hopefully integrated with DriveSetup if time allows.
During the community bonding period, I want to get my development environment set up, and gain some basic familiarity with writing to disk. To accomplish that, I’m going to write a small program that can read and write sectors to the hard drive.