ahenriksson's blog

BFS Partition Resizer: Final Report

Blog post by ahenriksson on Wed, 2012-09-05 09:55

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 file system.
  • Getting the resizing "pipeline" from userspace to driver to a working state (still needs some checking to verify that it's robust).

BFS Partition Resizer: Three-quarter-term Report

Blog post by ahenriksson on Mon, 2012-08-06 20:31

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. The problem with this is that we need to grow the bitmap that tracks allocated blocks before we can actually make use of the new blocks. This can be overcome with a little slyness, but it's a bit of work, and adds some complexity.

I think it would be better to focus on getting the current code into a finished state. So my plan for the remaining time is to try to exterminate the remaining bugs, and polish the code. I'd also like to rebase my work into a neat patch set. The chances of finding time to add resize support to DriveSetup seem fairly slim at the moment. But since the task is independent of my other work, it might be something to start on if I run out of things to do in the last few days.

On a different note, I will be travelling away for two weeks at the end of the coding period (on the 18th), returning the September 2nd. Last time I went to an internet café my email account was hijacked, so I'll probably be accessing the internet sparingly. I hope this won't cause any trouble.

BFS Partition Resizer: Midterm Report

Blog post by ahenriksson on Fri, 2012-07-13 16:23

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

BFS Partition Resizer: Quarter Term Report

Blog post by ahenriksson on Mon, 2012-06-25 10:58

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. Still, there has been some good progress made, and I'm sure it'll be completed within the period.

Doing the actual resizing: This step involves a few sub-steps: traversing the file system to move things out of the way, possibly moving the file system journal, resizing the block bitmap and updating the file system header. None of it should be that complicated (in theory), however it's likely that the more thorough exercising of the rest of the code will reveal problems with it.

Testing: I obviously test code as I write it, but I probably won't have time for a more rigorous approach in this period. I have a lot of time allocated for that in the next period, so it's not a disaster.

As it looks right now, things seem to be on track with the timeline in my proposal (which is actually not that great, as the timeline was a bit pessimistic).

GSoC Introduction: BFS Partition Resizer

Blog post by ahenriksson on Mon, 2012-04-30 12:43

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.

I'm also going to read up on documentation and code, in order to get a clear picture of where to begin when I start the coding.

You can check out my submitted proposal at https://google-melange.appspot.com/gsoc/proposal/review/google/gsoc2012/... for a brief introduction of me, a technical overview and timeline.

Syndicate content