> Also, resizing the block bitmap probably cannot be done in a single > transaction, as the log might be too small, or in a transaction at all, > since the log area might interfere. Isn't resizing the block bitmap just a matter of zeroing blocks and changing the size in the superblock? The log area is supposed to have been moved away when it happens. > BTW, how do you solve that the block bitmap is used, but must not > overwrite existing data at the same time? I don't understand this question. That probably means that I don't solve it. :) > I guess that is just a matter of updating the parent? Yeah, I realized that I hadn't gotten around to that when I saw the Start() flags. > How would that work in this direction? How to move the journal before > having made space for it by moving away inodes? > Or are these just leftovers? :-) The "//do resize" refers to updating the disk size in the superblock. The file-system-travsersing-moving-stuff is done before the journal is moved. Actually, I realize now that there's a big mistake in the code, fEndBlock is supposed to be the old end when we're growing the disk, not the new. > While that is true in theory, it's probably not too much to ask for a > clean disk before resizing (ie. letting the user call checkfs in case of > errors). Indeed, I suppose I went a little overboard with that one. > Doing it twice is twice as much fun? Making sure the parent is really, really updated. :) > What does the temporary mean? A quick copy-paste from DeviceOpener to try things out, it should probably live in Volume. > aTODO? :-) It's short for "Andreas, grep for this and fix it before you push your code!". The previous constructor definition is another perfect example. :) //Andreas