June 18th, 2007 by lulf
Finally I did the initalization code for raid5 plexes, and this means I’m pretty much complete with updating old gvinum to the new event system, but it will probably need some fixes here and there as it gets tested.
What remains in terms of needed functionality is the concat/mirror/stripe commands to easily create a concat/mirror/stripe volume out of three disks. I also have noted some issues that I think could need an improvement. More on this next time.
June 13th, 2007 by lulf
So, finally the exams are over, and I’ve been able to work sort of full-time on my project the last days. What I’ve done is (a bit technical this time perhaps, but this stuff tends to become that):
Implemented attach/detach routines. This makes it possible to attach a subdisk/plex to a plex/volume, or detach a plex/subdisk from a volume/plex. The detach routine makes sure all connections between the objects are broken correctly, and only if it’s possible (unless forced ofcourse). The attach routine makes sure the objects are correctly connected together again, and that a plex that misses subdisks includes them in the previous size when calculating the new size (so we don’t get wrong sizes on the plexes).
Tested rebuild of degraded plexes. The detach/attach routines enabled me to check if the rebuild of a degraded raid5 plex could work. And it did! This means (and this is something that I really missed in old gvinum), that when a drive fails, you can detach the failed subdisk, create a new subdisk on the plex (and it will check if the plex “misses” a subdisk), and then use ‘start <plexname>’ to rebuild the plex (The state of the plex must be degraded and the subdisk you wish to rebuild must be stale) and you’re good to go!
Implement syncing of plexes. This means one can now add a mirror to a volume, and have the new plex to be synced from the original. After a couple of tests, it seems to work, but I did get a bug I need to reproduce.
I also discovered some bugs regarding mirrored plexes that I will address in
the near future. This probably came with the change with the new gvinum
Next on my schedule is to hunt some weird state bugs where the state is not correctly set, as well as the mirrored plex problems I’ve seen. Also, I need to guarantee that a plex sync is up-to-date (that no data is written to the synced plex in the meantime).
May 26th, 2007 by lulf
The last couple of weeks I had to practice for some exams. In other words, a great time for coding
This week I’ve been working on making RAID5 parity rebuild work. This includes user initiated rebuild/check, as well as rebuilding a degraded plex during plex initialization. (This is a vital feature, since if a drive fails, one must be able to rebuild the plex with the new drive. I have not been able to test this enough yet because I need the attach/detach routines to do it. So instead of continuing and getting the initalization/synchronization-routines in, I will implement attach/detach next, which should be quick since I already have some old code for it.
May 9th, 2007 by lulf
Well, there has been some time now to get familiar with the projects and how things are done, although I am already quite familiar with the procedures. Therefore I started a bit earlier on the actual project, since I have a period with finishing exams from now until 8. June.
I’ve committed some work on the setstate functionality making it possible to be used again after Lukas’ rewrite of gvinums event-handling. Setstate now works on subdisks, plexes, volumes and drives. (Only subdisks and drives was supported before).
I have also been thinking of and made error codes to be used internally in gvinum to sort of help me see what happens when debugging etc. Other than that, I’ve rewritten the resetconfig a bit to prevent (what i think is) a race condition that was introduced with the new event system.
My plan is now to further adapt gvinum code to the new event system. I also have more patches from my previous that need to be integrated.
April 16th, 2007 by lulf
Hi, and welcome to this blog and my first post! I’m Ulf Lilleengen, and I will work on improving the Gvinum Volume Manager this summer. I’ll try as good as I can to keep people updated on my work through this blog.
If you have any questions or comments regarding my work, please let me know.