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.
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.
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.