I'll start this report from the good news. After starting GSoC's coding period, I was doing fixes and improvements of hub layer and was not repeating tests which was done by me in community bonding period (results provided in my first blog post). So by the end of this week I decided to test surprise-removal on VBox with 2k3 working with our USB stack. As result I saw that crashes on device removal (physical) are gone! Even more after connection again, the USB flash and also composite device were performing well.
Last week ended with Art going through decompiled assembly to find a bug for me, because the stack trace in the kernel debugger was pointing me to the wrong line in the C source code. It turns out that the problem was a NULL pointer dereference in the RECEIVE callback. As always in programming, a lot of effort went into catching a small oversight.
With that leftover bug from last week resolved, I moved on to my tasks for this week - more debugging, a code review done by Thomas Faber, and finally setting up WinDBG.
This week was rewarding, because I got some things done that I've been wanting to do for a while.
I wrote some code which can assign clusters by updating the $BITMAP file. As I mentioned last week, this is half of the equation for extending the allocation size of a non-resident file. I'm still working on the other half, which involves storing the assigned clusters in data runs.
This week I have continued fixes in PnP handling of our USB stack. I was focused on usbhub and done number of fixes there. Let me describe process from begining.
I closed out last week by drawing a flow chart in preparation for restructuring my code for some new state variables. For most of this week, I was figuring out details about, and implementing, this chart.